// Copyright 2022 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.26.0
// 	protoc        v3.12.2
// source: google/cloud/speech/v2/cloud_speech.proto

package speech

import (
	context "context"
	reflect "reflect"
	sync "sync"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	longrunning "google.golang.org/genproto/googleapis/longrunning"
	status "google.golang.org/genproto/googleapis/rpc/status"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status1 "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)

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)
)

// Set of states that define the lifecycle of a Recognizer.
type Recognizer_State int32

const (
	// The default value. This value is used if the state is omitted.
	Recognizer_STATE_UNSPECIFIED Recognizer_State = 0
	// The Recognizer is active and ready for use.
	Recognizer_ACTIVE Recognizer_State = 2
	// This Recognizer has been deleted.
	Recognizer_DELETED Recognizer_State = 4
)

// Enum value maps for Recognizer_State.
var (
	Recognizer_State_name = map[int32]string{
		0: "STATE_UNSPECIFIED",
		2: "ACTIVE",
		4: "DELETED",
	}
	Recognizer_State_value = map[string]int32{
		"STATE_UNSPECIFIED": 0,
		"ACTIVE":            2,
		"DELETED":           4,
	}
)

func (x Recognizer_State) Enum() *Recognizer_State {
	p := new(Recognizer_State)
	*p = x
	return p
}

func (x Recognizer_State) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Recognizer_State) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[0].Descriptor()
}

func (Recognizer_State) Type() protoreflect.EnumType {
	return &file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[0]
}

func (x Recognizer_State) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Recognizer_State.Descriptor instead.
func (Recognizer_State) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{8, 0}
}

// Supported audio data encodings.
type ExplicitDecodingConfig_AudioEncoding int32

const (
	// Default value. This value is unused.
	ExplicitDecodingConfig_AUDIO_ENCODING_UNSPECIFIED ExplicitDecodingConfig_AudioEncoding = 0
	// Headerless 16-bit signed little-endian PCM samples.
	ExplicitDecodingConfig_LINEAR16 ExplicitDecodingConfig_AudioEncoding = 1
	// Headerless 8-bit companded mulaw samples.
	ExplicitDecodingConfig_MULAW ExplicitDecodingConfig_AudioEncoding = 2
	// Headerless 8-bit companded alaw samples.
	ExplicitDecodingConfig_ALAW ExplicitDecodingConfig_AudioEncoding = 3
)

// Enum value maps for ExplicitDecodingConfig_AudioEncoding.
var (
	ExplicitDecodingConfig_AudioEncoding_name = map[int32]string{
		0: "AUDIO_ENCODING_UNSPECIFIED",
		1: "LINEAR16",
		2: "MULAW",
		3: "ALAW",
	}
	ExplicitDecodingConfig_AudioEncoding_value = map[string]int32{
		"AUDIO_ENCODING_UNSPECIFIED": 0,
		"LINEAR16":                   1,
		"MULAW":                      2,
		"ALAW":                       3,
	}
)

func (x ExplicitDecodingConfig_AudioEncoding) Enum() *ExplicitDecodingConfig_AudioEncoding {
	p := new(ExplicitDecodingConfig_AudioEncoding)
	*p = x
	return p
}

func (x ExplicitDecodingConfig_AudioEncoding) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ExplicitDecodingConfig_AudioEncoding) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[1].Descriptor()
}

func (ExplicitDecodingConfig_AudioEncoding) Type() protoreflect.EnumType {
	return &file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[1]
}

func (x ExplicitDecodingConfig_AudioEncoding) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ExplicitDecodingConfig_AudioEncoding.Descriptor instead.
func (ExplicitDecodingConfig_AudioEncoding) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{10, 0}
}

// Options for how to recognize multi-channel audio.
type RecognitionFeatures_MultiChannelMode int32

const (
	// Default value for the multi-channel mode. If the audio contains
	// multiple channels, only the first channel will be transcribed; other
	// channels will be ignored.
	RecognitionFeatures_MULTI_CHANNEL_MODE_UNSPECIFIED RecognitionFeatures_MultiChannelMode = 0
	// If selected, each channel in the provided audio is transcribed
	// independently. This cannot be selected if the selected
	// [model][google.cloud.speech.v2.Recognizer.model] is `latest_short`.
	RecognitionFeatures_SEPARATE_RECOGNITION_PER_CHANNEL RecognitionFeatures_MultiChannelMode = 1
)

// Enum value maps for RecognitionFeatures_MultiChannelMode.
var (
	RecognitionFeatures_MultiChannelMode_name = map[int32]string{
		0: "MULTI_CHANNEL_MODE_UNSPECIFIED",
		1: "SEPARATE_RECOGNITION_PER_CHANNEL",
	}
	RecognitionFeatures_MultiChannelMode_value = map[string]int32{
		"MULTI_CHANNEL_MODE_UNSPECIFIED":   0,
		"SEPARATE_RECOGNITION_PER_CHANNEL": 1,
	}
)

func (x RecognitionFeatures_MultiChannelMode) Enum() *RecognitionFeatures_MultiChannelMode {
	p := new(RecognitionFeatures_MultiChannelMode)
	*p = x
	return p
}

func (x RecognitionFeatures_MultiChannelMode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (RecognitionFeatures_MultiChannelMode) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[2].Descriptor()
}

func (RecognitionFeatures_MultiChannelMode) Type() protoreflect.EnumType {
	return &file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[2]
}

func (x RecognitionFeatures_MultiChannelMode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use RecognitionFeatures_MultiChannelMode.Descriptor instead.
func (RecognitionFeatures_MultiChannelMode) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{12, 0}
}

// Indicates the type of speech event.
type StreamingRecognizeResponse_SpeechEventType int32

const (
	// No speech event specified.
	StreamingRecognizeResponse_SPEECH_EVENT_TYPE_UNSPECIFIED StreamingRecognizeResponse_SpeechEventType = 0
	// This event indicates that the server has detected the end of the user's
	// speech utterance and expects no additional speech. Therefore, the server
	// will not process additional audio and will close the gRPC bidirectional
	// stream. This event is only sent if there was a force cutoff due to
	// silence being detected early. This event is only available through the
	// `latest_short` [model][google.cloud.speech.v2.Recognizer.model].
	StreamingRecognizeResponse_END_OF_SINGLE_UTTERANCE StreamingRecognizeResponse_SpeechEventType = 1
	// This event indicates that the server has detected the beginning of human
	// voice activity in the stream. This event can be returned multiple times
	// if speech starts and stops repeatedly throughout the stream. This event
	// is only sent if `voice_activity_events` is set to true.
	StreamingRecognizeResponse_SPEECH_ACTIVITY_BEGIN StreamingRecognizeResponse_SpeechEventType = 2
	// This event indicates that the server has detected the end of human voice
	// activity in the stream. This event can be returned multiple times if
	// speech starts and stops repeatedly throughout the stream. This event is
	// only sent if `voice_activity_events` is set to true.
	StreamingRecognizeResponse_SPEECH_ACTIVITY_END StreamingRecognizeResponse_SpeechEventType = 3
)

// Enum value maps for StreamingRecognizeResponse_SpeechEventType.
var (
	StreamingRecognizeResponse_SpeechEventType_name = map[int32]string{
		0: "SPEECH_EVENT_TYPE_UNSPECIFIED",
		1: "END_OF_SINGLE_UTTERANCE",
		2: "SPEECH_ACTIVITY_BEGIN",
		3: "SPEECH_ACTIVITY_END",
	}
	StreamingRecognizeResponse_SpeechEventType_value = map[string]int32{
		"SPEECH_EVENT_TYPE_UNSPECIFIED": 0,
		"END_OF_SINGLE_UTTERANCE":       1,
		"SPEECH_ACTIVITY_BEGIN":         2,
		"SPEECH_ACTIVITY_END":           3,
	}
)

func (x StreamingRecognizeResponse_SpeechEventType) Enum() *StreamingRecognizeResponse_SpeechEventType {
	p := new(StreamingRecognizeResponse_SpeechEventType)
	*p = x
	return p
}

func (x StreamingRecognizeResponse_SpeechEventType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (StreamingRecognizeResponse_SpeechEventType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[3].Descriptor()
}

func (StreamingRecognizeResponse_SpeechEventType) Type() protoreflect.EnumType {
	return &file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[3]
}

func (x StreamingRecognizeResponse_SpeechEventType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use StreamingRecognizeResponse_SpeechEventType.Descriptor instead.
func (StreamingRecognizeResponse_SpeechEventType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{31, 0}
}

// Set of states that define the lifecycle of a CustomClass.
type CustomClass_State int32

const (
	// Unspecified state.  This is only used/useful for distinguishing
	// unset values.
	CustomClass_STATE_UNSPECIFIED CustomClass_State = 0
	// The normal and active state.
	CustomClass_ACTIVE CustomClass_State = 2
	// This CustomClass has been deleted.
	CustomClass_DELETED CustomClass_State = 4
)

// Enum value maps for CustomClass_State.
var (
	CustomClass_State_name = map[int32]string{
		0: "STATE_UNSPECIFIED",
		2: "ACTIVE",
		4: "DELETED",
	}
	CustomClass_State_value = map[string]int32{
		"STATE_UNSPECIFIED": 0,
		"ACTIVE":            2,
		"DELETED":           4,
	}
)

func (x CustomClass_State) Enum() *CustomClass_State {
	p := new(CustomClass_State)
	*p = x
	return p
}

func (x CustomClass_State) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CustomClass_State) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[4].Descriptor()
}

func (CustomClass_State) Type() protoreflect.EnumType {
	return &file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[4]
}

func (x CustomClass_State) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CustomClass_State.Descriptor instead.
func (CustomClass_State) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{35, 0}
}

// Set of states that define the lifecycle of a PhraseSet.
type PhraseSet_State int32

const (
	// Unspecified state.  This is only used/useful for distinguishing
	// unset values.
	PhraseSet_STATE_UNSPECIFIED PhraseSet_State = 0
	// The normal and active state.
	PhraseSet_ACTIVE PhraseSet_State = 2
	// This PhraseSet has been deleted.
	PhraseSet_DELETED PhraseSet_State = 4
)

// Enum value maps for PhraseSet_State.
var (
	PhraseSet_State_name = map[int32]string{
		0: "STATE_UNSPECIFIED",
		2: "ACTIVE",
		4: "DELETED",
	}
	PhraseSet_State_value = map[string]int32{
		"STATE_UNSPECIFIED": 0,
		"ACTIVE":            2,
		"DELETED":           4,
	}
)

func (x PhraseSet_State) Enum() *PhraseSet_State {
	p := new(PhraseSet_State)
	*p = x
	return p
}

func (x PhraseSet_State) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PhraseSet_State) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[5].Descriptor()
}

func (PhraseSet_State) Type() protoreflect.EnumType {
	return &file_google_cloud_speech_v2_cloud_speech_proto_enumTypes[5]
}

func (x PhraseSet_State) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PhraseSet_State.Descriptor instead.
func (PhraseSet_State) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{36, 0}
}

// Request message for the
// [CreateRecognizer][google.cloud.speech.v2.Speech.CreateRecognizer] method.
type CreateRecognizerRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The Recognizer to create.
	Recognizer *Recognizer `protobuf:"bytes,1,opt,name=recognizer,proto3" json:"recognizer,omitempty"`
	// If set, validate the request and preview the Recognizer, but do not
	// actually create it.
	ValidateOnly bool `protobuf:"varint,2,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// The ID to use for the Recognizer, which will become the final component of
	// the Recognizer's resource name.
	//
	// This value should be 4-63 characters, and valid characters
	// are /[a-z][0-9]-/.
	RecognizerId string `protobuf:"bytes,3,opt,name=recognizer_id,json=recognizerId,proto3" json:"recognizer_id,omitempty"`
	// Required. The project and location where this Recognizer will be created.
	// The expected format is `projects/{project}/locations/{location}`.
	Parent string `protobuf:"bytes,4,opt,name=parent,proto3" json:"parent,omitempty"`
}

func (x *CreateRecognizerRequest) Reset() {
	*x = CreateRecognizerRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateRecognizerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateRecognizerRequest) ProtoMessage() {}

func (x *CreateRecognizerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 CreateRecognizerRequest.ProtoReflect.Descriptor instead.
func (*CreateRecognizerRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{0}
}

func (x *CreateRecognizerRequest) GetRecognizer() *Recognizer {
	if x != nil {
		return x.Recognizer
	}
	return nil
}

func (x *CreateRecognizerRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *CreateRecognizerRequest) GetRecognizerId() string {
	if x != nil {
		return x.RecognizerId
	}
	return ""
}

func (x *CreateRecognizerRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

// Represents the metadata of a long-running operation.
type OperationMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The time the operation was created.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// The time the operation was last updated.
	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	// The resource path for the target of the operation.
	Resource string `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"`
	// The method that triggered the operation.
	Method string `protobuf:"bytes,4,opt,name=method,proto3" json:"method,omitempty"`
	// The [KMS key
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) with which
	// the content of the Operation is encrypted. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
	KmsKeyName string `protobuf:"bytes,6,opt,name=kms_key_name,json=kmsKeyName,proto3" json:"kms_key_name,omitempty"`
	// The [KMS key version
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#key_versions)
	// with which content of the Operation is encrypted. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`.
	KmsKeyVersionName string `protobuf:"bytes,7,opt,name=kms_key_version_name,json=kmsKeyVersionName,proto3" json:"kms_key_version_name,omitempty"`
	// The request that spawned the Operation.
	//
	// Types that are assignable to Request:
	//
	//	*OperationMetadata_BatchRecognizeRequest
	//	*OperationMetadata_CreateRecognizerRequest
	//	*OperationMetadata_UpdateRecognizerRequest
	//	*OperationMetadata_DeleteRecognizerRequest
	//	*OperationMetadata_UndeleteRecognizerRequest
	//	*OperationMetadata_CreateCustomClassRequest
	//	*OperationMetadata_UpdateCustomClassRequest
	//	*OperationMetadata_DeleteCustomClassRequest
	//	*OperationMetadata_UndeleteCustomClassRequest
	//	*OperationMetadata_CreatePhraseSetRequest
	//	*OperationMetadata_UpdatePhraseSetRequest
	//	*OperationMetadata_DeletePhraseSetRequest
	//	*OperationMetadata_UndeletePhraseSetRequest
	//	*OperationMetadata_UpdateConfigRequest
	Request isOperationMetadata_Request `protobuf_oneof:"request"`
	// The percent progress of the Operation. Values can range from 0-100. If the
	// value is 100, then the operation is finished.
	ProgressPercent int32 `protobuf:"varint,22,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"`
	// Specific metadata per RPC
	//
	// Types that are assignable to Metadata:
	//
	//	*OperationMetadata_BatchRecognizeMetadata
	Metadata isOperationMetadata_Metadata `protobuf_oneof:"metadata"`
}

func (x *OperationMetadata) Reset() {
	*x = OperationMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *OperationMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OperationMetadata) ProtoMessage() {}

func (x *OperationMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 OperationMetadata.ProtoReflect.Descriptor instead.
func (*OperationMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{1}
}

func (x *OperationMetadata) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *OperationMetadata) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

func (x *OperationMetadata) GetResource() string {
	if x != nil {
		return x.Resource
	}
	return ""
}

func (x *OperationMetadata) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *OperationMetadata) GetKmsKeyName() string {
	if x != nil {
		return x.KmsKeyName
	}
	return ""
}

func (x *OperationMetadata) GetKmsKeyVersionName() string {
	if x != nil {
		return x.KmsKeyVersionName
	}
	return ""
}

func (m *OperationMetadata) GetRequest() isOperationMetadata_Request {
	if m != nil {
		return m.Request
	}
	return nil
}

func (x *OperationMetadata) GetBatchRecognizeRequest() *BatchRecognizeRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_BatchRecognizeRequest); ok {
		return x.BatchRecognizeRequest
	}
	return nil
}

func (x *OperationMetadata) GetCreateRecognizerRequest() *CreateRecognizerRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_CreateRecognizerRequest); ok {
		return x.CreateRecognizerRequest
	}
	return nil
}

func (x *OperationMetadata) GetUpdateRecognizerRequest() *UpdateRecognizerRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_UpdateRecognizerRequest); ok {
		return x.UpdateRecognizerRequest
	}
	return nil
}

func (x *OperationMetadata) GetDeleteRecognizerRequest() *DeleteRecognizerRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_DeleteRecognizerRequest); ok {
		return x.DeleteRecognizerRequest
	}
	return nil
}

func (x *OperationMetadata) GetUndeleteRecognizerRequest() *UndeleteRecognizerRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_UndeleteRecognizerRequest); ok {
		return x.UndeleteRecognizerRequest
	}
	return nil
}

func (x *OperationMetadata) GetCreateCustomClassRequest() *CreateCustomClassRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_CreateCustomClassRequest); ok {
		return x.CreateCustomClassRequest
	}
	return nil
}

func (x *OperationMetadata) GetUpdateCustomClassRequest() *UpdateCustomClassRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_UpdateCustomClassRequest); ok {
		return x.UpdateCustomClassRequest
	}
	return nil
}

func (x *OperationMetadata) GetDeleteCustomClassRequest() *DeleteCustomClassRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_DeleteCustomClassRequest); ok {
		return x.DeleteCustomClassRequest
	}
	return nil
}

func (x *OperationMetadata) GetUndeleteCustomClassRequest() *UndeleteCustomClassRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_UndeleteCustomClassRequest); ok {
		return x.UndeleteCustomClassRequest
	}
	return nil
}

func (x *OperationMetadata) GetCreatePhraseSetRequest() *CreatePhraseSetRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_CreatePhraseSetRequest); ok {
		return x.CreatePhraseSetRequest
	}
	return nil
}

func (x *OperationMetadata) GetUpdatePhraseSetRequest() *UpdatePhraseSetRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_UpdatePhraseSetRequest); ok {
		return x.UpdatePhraseSetRequest
	}
	return nil
}

func (x *OperationMetadata) GetDeletePhraseSetRequest() *DeletePhraseSetRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_DeletePhraseSetRequest); ok {
		return x.DeletePhraseSetRequest
	}
	return nil
}

func (x *OperationMetadata) GetUndeletePhraseSetRequest() *UndeletePhraseSetRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_UndeletePhraseSetRequest); ok {
		return x.UndeletePhraseSetRequest
	}
	return nil
}

func (x *OperationMetadata) GetUpdateConfigRequest() *UpdateConfigRequest {
	if x, ok := x.GetRequest().(*OperationMetadata_UpdateConfigRequest); ok {
		return x.UpdateConfigRequest
	}
	return nil
}

func (x *OperationMetadata) GetProgressPercent() int32 {
	if x != nil {
		return x.ProgressPercent
	}
	return 0
}

func (m *OperationMetadata) GetMetadata() isOperationMetadata_Metadata {
	if m != nil {
		return m.Metadata
	}
	return nil
}

func (x *OperationMetadata) GetBatchRecognizeMetadata() *BatchRecognizeMetadata {
	if x, ok := x.GetMetadata().(*OperationMetadata_BatchRecognizeMetadata); ok {
		return x.BatchRecognizeMetadata
	}
	return nil
}

type isOperationMetadata_Request interface {
	isOperationMetadata_Request()
}

type OperationMetadata_BatchRecognizeRequest struct {
	// The BatchRecognizeRequest that spawned the Operation.
	BatchRecognizeRequest *BatchRecognizeRequest `protobuf:"bytes,8,opt,name=batch_recognize_request,json=batchRecognizeRequest,proto3,oneof"`
}

type OperationMetadata_CreateRecognizerRequest struct {
	// The CreateRecognizerRequest that spawned the Operation.
	CreateRecognizerRequest *CreateRecognizerRequest `protobuf:"bytes,9,opt,name=create_recognizer_request,json=createRecognizerRequest,proto3,oneof"`
}

type OperationMetadata_UpdateRecognizerRequest struct {
	// The UpdateRecognizerRequest that spawned the Operation.
	UpdateRecognizerRequest *UpdateRecognizerRequest `protobuf:"bytes,10,opt,name=update_recognizer_request,json=updateRecognizerRequest,proto3,oneof"`
}

type OperationMetadata_DeleteRecognizerRequest struct {
	// The DeleteRecognizerRequest that spawned the Operation.
	DeleteRecognizerRequest *DeleteRecognizerRequest `protobuf:"bytes,11,opt,name=delete_recognizer_request,json=deleteRecognizerRequest,proto3,oneof"`
}

type OperationMetadata_UndeleteRecognizerRequest struct {
	// The UndeleteRecognizerRequest that spawned the Operation.
	UndeleteRecognizerRequest *UndeleteRecognizerRequest `protobuf:"bytes,12,opt,name=undelete_recognizer_request,json=undeleteRecognizerRequest,proto3,oneof"`
}

type OperationMetadata_CreateCustomClassRequest struct {
	// The CreateCustomClassRequest that spawned the Operation.
	CreateCustomClassRequest *CreateCustomClassRequest `protobuf:"bytes,13,opt,name=create_custom_class_request,json=createCustomClassRequest,proto3,oneof"`
}

type OperationMetadata_UpdateCustomClassRequest struct {
	// The UpdateCustomClassRequest that spawned the Operation.
	UpdateCustomClassRequest *UpdateCustomClassRequest `protobuf:"bytes,14,opt,name=update_custom_class_request,json=updateCustomClassRequest,proto3,oneof"`
}

type OperationMetadata_DeleteCustomClassRequest struct {
	// The DeleteCustomClassRequest that spawned the Operation.
	DeleteCustomClassRequest *DeleteCustomClassRequest `protobuf:"bytes,15,opt,name=delete_custom_class_request,json=deleteCustomClassRequest,proto3,oneof"`
}

type OperationMetadata_UndeleteCustomClassRequest struct {
	// The UndeleteCustomClassRequest that spawned the Operation.
	UndeleteCustomClassRequest *UndeleteCustomClassRequest `protobuf:"bytes,16,opt,name=undelete_custom_class_request,json=undeleteCustomClassRequest,proto3,oneof"`
}

type OperationMetadata_CreatePhraseSetRequest struct {
	// The CreatePhraseSetRequest that spawned the Operation.
	CreatePhraseSetRequest *CreatePhraseSetRequest `protobuf:"bytes,17,opt,name=create_phrase_set_request,json=createPhraseSetRequest,proto3,oneof"`
}

type OperationMetadata_UpdatePhraseSetRequest struct {
	// The UpdatePhraseSetRequest that spawned the Operation.
	UpdatePhraseSetRequest *UpdatePhraseSetRequest `protobuf:"bytes,18,opt,name=update_phrase_set_request,json=updatePhraseSetRequest,proto3,oneof"`
}

type OperationMetadata_DeletePhraseSetRequest struct {
	// The DeletePhraseSetRequest that spawned the Operation.
	DeletePhraseSetRequest *DeletePhraseSetRequest `protobuf:"bytes,19,opt,name=delete_phrase_set_request,json=deletePhraseSetRequest,proto3,oneof"`
}

type OperationMetadata_UndeletePhraseSetRequest struct {
	// The UndeletePhraseSetRequest that spawned the Operation.
	UndeletePhraseSetRequest *UndeletePhraseSetRequest `protobuf:"bytes,20,opt,name=undelete_phrase_set_request,json=undeletePhraseSetRequest,proto3,oneof"`
}

type OperationMetadata_UpdateConfigRequest struct {
	// The UpdateConfigRequest that spawned the Operation.
	UpdateConfigRequest *UpdateConfigRequest `protobuf:"bytes,21,opt,name=update_config_request,json=updateConfigRequest,proto3,oneof"`
}

func (*OperationMetadata_BatchRecognizeRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_CreateRecognizerRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_UpdateRecognizerRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_DeleteRecognizerRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_UndeleteRecognizerRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_CreateCustomClassRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_UpdateCustomClassRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_DeleteCustomClassRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_UndeleteCustomClassRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_CreatePhraseSetRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_UpdatePhraseSetRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_DeletePhraseSetRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_UndeletePhraseSetRequest) isOperationMetadata_Request() {}

func (*OperationMetadata_UpdateConfigRequest) isOperationMetadata_Request() {}

type isOperationMetadata_Metadata interface {
	isOperationMetadata_Metadata()
}

type OperationMetadata_BatchRecognizeMetadata struct {
	// Metadata specific to the BatchRecognize method.
	BatchRecognizeMetadata *BatchRecognizeMetadata `protobuf:"bytes,23,opt,name=batch_recognize_metadata,json=batchRecognizeMetadata,proto3,oneof"`
}

func (*OperationMetadata_BatchRecognizeMetadata) isOperationMetadata_Metadata() {}

// Request message for the
// [ListRecognizers][google.cloud.speech.v2.Speech.ListRecognizers] method.
type ListRecognizersRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The project and location of Recognizers to list. The expected
	// format is `projects/{project}/locations/{location}`.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The maximum number of Recognizers to return. The service may return fewer
	// than this value. If unspecified, at most 20 Recognizers will be returned.
	// The maximum value is 20; values above 20 will be coerced to 20.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token, received from a previous
	// [ListRecognizers][google.cloud.speech.v2.Speech.ListRecognizers] call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to
	// [ListRecognizers][google.cloud.speech.v2.Speech.ListRecognizers] 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"`
	// Whether, or not, to show resources that have been deleted.
	ShowDeleted bool `protobuf:"varint,4,opt,name=show_deleted,json=showDeleted,proto3" json:"show_deleted,omitempty"`
}

func (x *ListRecognizersRequest) Reset() {
	*x = ListRecognizersRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListRecognizersRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListRecognizersRequest) ProtoMessage() {}

func (x *ListRecognizersRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 ListRecognizersRequest.ProtoReflect.Descriptor instead.
func (*ListRecognizersRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{2}
}

func (x *ListRecognizersRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListRecognizersRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListRecognizersRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *ListRecognizersRequest) GetShowDeleted() bool {
	if x != nil {
		return x.ShowDeleted
	}
	return false
}

// Response message for the
// [ListRecognizers][google.cloud.speech.v2.Speech.ListRecognizers] method.
type ListRecognizersResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The list of requested Recognizers.
	Recognizers []*Recognizer `protobuf:"bytes,1,rep,name=recognizers,proto3" json:"recognizers,omitempty"`
	// A token, which can be sent as
	// [page_token][google.cloud.speech.v2.ListRecognizersRequest.page_token] to
	// retrieve the next page. If this field is omitted, there are no subsequent
	// pages. This token expires after 72 hours.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListRecognizersResponse) Reset() {
	*x = ListRecognizersResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListRecognizersResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListRecognizersResponse) ProtoMessage() {}

func (x *ListRecognizersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 ListRecognizersResponse.ProtoReflect.Descriptor instead.
func (*ListRecognizersResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{3}
}

func (x *ListRecognizersResponse) GetRecognizers() []*Recognizer {
	if x != nil {
		return x.Recognizers
	}
	return nil
}

func (x *ListRecognizersResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// Request message for the
// [GetRecognizer][google.cloud.speech.v2.Speech.GetRecognizer] method.
type GetRecognizerRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the Recognizer to retrieve. The expected format is
	// `projects/{project}/locations/{location}/recognizers/{recognizer}`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetRecognizerRequest) Reset() {
	*x = GetRecognizerRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetRecognizerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetRecognizerRequest) ProtoMessage() {}

func (x *GetRecognizerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 GetRecognizerRequest.ProtoReflect.Descriptor instead.
func (*GetRecognizerRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{4}
}

func (x *GetRecognizerRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for the
// [UpdateRecognizer][google.cloud.speech.v2.Speech.UpdateRecognizer] method.
type UpdateRecognizerRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The Recognizer to update.
	//
	// The Recognizer's `name` field is used to identify the Recognizer to update.
	// Format: `projects/{project}/locations/{location}/recognizers/{recognizer}`.
	Recognizer *Recognizer `protobuf:"bytes,1,opt,name=recognizer,proto3" json:"recognizer,omitempty"`
	// The list of fields to update. If empty, all non-default valued fields are
	// considered for update. Use `*` to update the entire Recognizer resource.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
	// If set, validate the request and preview the updated Recognizer, but do not
	// actually update it.
	ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}

func (x *UpdateRecognizerRequest) Reset() {
	*x = UpdateRecognizerRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateRecognizerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateRecognizerRequest) ProtoMessage() {}

func (x *UpdateRecognizerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 UpdateRecognizerRequest.ProtoReflect.Descriptor instead.
func (*UpdateRecognizerRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{5}
}

func (x *UpdateRecognizerRequest) GetRecognizer() *Recognizer {
	if x != nil {
		return x.Recognizer
	}
	return nil
}

func (x *UpdateRecognizerRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

func (x *UpdateRecognizerRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

// Request message for the
// [DeleteRecognizer][google.cloud.speech.v2.Speech.DeleteRecognizer] method.
type DeleteRecognizerRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the Recognizer to delete.
	// Format: `projects/{project}/locations/{location}/recognizers/{recognizer}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// If set, validate the request and preview the deleted Recognizer, but do not
	// actually delete it.
	ValidateOnly bool `protobuf:"varint,2,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// If set to true, and the Recognizer is not found, the request will succeed
	// and  be a no-op (no Operation is recorded in this case).
	AllowMissing bool `protobuf:"varint,4,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"`
	// This checksum is computed by the server based on the value of other
	// fields. This may be sent on update, undelete, and delete requests to ensure
	// the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,3,opt,name=etag,proto3" json:"etag,omitempty"`
}

func (x *DeleteRecognizerRequest) Reset() {
	*x = DeleteRecognizerRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteRecognizerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteRecognizerRequest) ProtoMessage() {}

func (x *DeleteRecognizerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 DeleteRecognizerRequest.ProtoReflect.Descriptor instead.
func (*DeleteRecognizerRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{6}
}

func (x *DeleteRecognizerRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DeleteRecognizerRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *DeleteRecognizerRequest) GetAllowMissing() bool {
	if x != nil {
		return x.AllowMissing
	}
	return false
}

func (x *DeleteRecognizerRequest) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

// Request message for the
// [UndeleteRecognizer][google.cloud.speech.v2.Speech.UndeleteRecognizer]
// method.
type UndeleteRecognizerRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the Recognizer to undelete.
	// Format: `projects/{project}/locations/{location}/recognizers/{recognizer}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// If set, validate the request and preview the undeleted Recognizer, but do
	// not actually undelete it.
	ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// This checksum is computed by the server based on the value of other
	// fields. This may be sent on update, undelete, and delete requests to ensure
	// the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,4,opt,name=etag,proto3" json:"etag,omitempty"`
}

func (x *UndeleteRecognizerRequest) Reset() {
	*x = UndeleteRecognizerRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UndeleteRecognizerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UndeleteRecognizerRequest) ProtoMessage() {}

func (x *UndeleteRecognizerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 UndeleteRecognizerRequest.ProtoReflect.Descriptor instead.
func (*UndeleteRecognizerRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{7}
}

func (x *UndeleteRecognizerRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UndeleteRecognizerRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *UndeleteRecognizerRequest) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

// A Recognizer message. Stores recognition configuration and metadata.
type Recognizer struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. The resource name of the Recognizer.
	// Format: `projects/{project}/locations/{location}/recognizers/{recognizer}`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Output only. System-assigned unique identifier for the Recognizer.
	Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
	// User-settable, human-readable name for the Recognizer. Must be 63
	// characters or less.
	DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Required. Which model to use for recognition requests. Select the model
	// best suited to your domain to get best results.
	//
	// Supported models:
	//
	// - `latest_long`
	//
	//	Best for long form content like media or conversation.
	//
	// - `latest_short`
	//
	//	Best for short form content like commands or single shot directed speech.
	//	When using this model, the service will stop transcribing audio after the
	//	first utterance is detected and completed.
	//
	// When using this model,
	// [SEPARATE_RECOGNITION_PER_CHANNEL][google.cloud.speech.v2.RecognitionFeatures.MultiChannelMode.SEPARATE_RECOGNITION_PER_CHANNEL]
	// is not supported; multi-channel audio is accepted, but only the first
	// channel will be processed and transcribed.
	Model string `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"`
	// Required. The language of the supplied audio as a
	// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag.
	//
	// Supported languages:
	//
	// - `en-US`
	//
	// - `en-GB`
	//
	// - `fr-FR`
	//
	// If additional languages are provided, recognition result will contain
	// recognition in the most likely language detected. The recognition result
	// will include the language tag of the language detected in the audio.
	// When you create or update a Recognizer, these values are
	// stored in normalized BCP-47 form. For example, "en-us" is stored as
	// "en-US".
	LanguageCodes []string `protobuf:"bytes,17,rep,name=language_codes,json=languageCodes,proto3" json:"language_codes,omitempty"`
	// Default configuration to use for requests with this Recognizer.
	// This can be overwritten by inline configuration in the
	// [RecognizeRequest.config][google.cloud.speech.v2.RecognizeRequest.config]
	// field.
	DefaultRecognitionConfig *RecognitionConfig `protobuf:"bytes,6,opt,name=default_recognition_config,json=defaultRecognitionConfig,proto3" json:"default_recognition_config,omitempty"`
	// Allows users to store small amounts of arbitrary data.
	// Both the key and the value must be 63 characters or less each.
	// At most 100 annotations.
	Annotations map[string]string `protobuf:"bytes,7,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Output only. The Recognizer lifecycle state.
	State Recognizer_State `protobuf:"varint,8,opt,name=state,proto3,enum=google.cloud.speech.v2.Recognizer_State" json:"state,omitempty"`
	// Output only. Creation time.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Output only. The most recent time this Recognizer was modified.
	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	// Output only. The time at which this Recognizer was requested for deletion.
	DeleteTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"`
	// Output only. The time at which this Recognizer will be purged.
	ExpireTime *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
	// Output only. This checksum is computed by the server based on the value of
	// other fields. This may be sent on update, undelete, and delete requests to
	// ensure the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,12,opt,name=etag,proto3" json:"etag,omitempty"`
	// Output only. Whether or not this Recognizer is in the process of being
	// updated.
	Reconciling bool `protobuf:"varint,13,opt,name=reconciling,proto3" json:"reconciling,omitempty"`
	// Output only. The [KMS key
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) with which
	// the Recognizer is encrypted. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
	KmsKeyName string `protobuf:"bytes,15,opt,name=kms_key_name,json=kmsKeyName,proto3" json:"kms_key_name,omitempty"`
	// Output only. The [KMS key version
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#key_versions)
	// with which the Recognizer is encrypted. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`.
	KmsKeyVersionName string `protobuf:"bytes,16,opt,name=kms_key_version_name,json=kmsKeyVersionName,proto3" json:"kms_key_version_name,omitempty"`
}

func (x *Recognizer) Reset() {
	*x = Recognizer{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Recognizer) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Recognizer) ProtoMessage() {}

func (x *Recognizer) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 Recognizer.ProtoReflect.Descriptor instead.
func (*Recognizer) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{8}
}

func (x *Recognizer) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Recognizer) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *Recognizer) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *Recognizer) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *Recognizer) GetLanguageCodes() []string {
	if x != nil {
		return x.LanguageCodes
	}
	return nil
}

func (x *Recognizer) GetDefaultRecognitionConfig() *RecognitionConfig {
	if x != nil {
		return x.DefaultRecognitionConfig
	}
	return nil
}

func (x *Recognizer) GetAnnotations() map[string]string {
	if x != nil {
		return x.Annotations
	}
	return nil
}

func (x *Recognizer) GetState() Recognizer_State {
	if x != nil {
		return x.State
	}
	return Recognizer_STATE_UNSPECIFIED
}

func (x *Recognizer) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Recognizer) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

func (x *Recognizer) GetDeleteTime() *timestamppb.Timestamp {
	if x != nil {
		return x.DeleteTime
	}
	return nil
}

func (x *Recognizer) GetExpireTime() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpireTime
	}
	return nil
}

func (x *Recognizer) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

func (x *Recognizer) GetReconciling() bool {
	if x != nil {
		return x.Reconciling
	}
	return false
}

func (x *Recognizer) GetKmsKeyName() string {
	if x != nil {
		return x.KmsKeyName
	}
	return ""
}

func (x *Recognizer) GetKmsKeyVersionName() string {
	if x != nil {
		return x.KmsKeyVersionName
	}
	return ""
}

// Automatically detected decoding parameters.
// Supported for the following encodings:
// * WAV_LINEAR16: 16-bit signed little-endian PCM samples in a WAV container.
// * WAV_MULAW: 8-bit companded mulaw samples in a WAV container.
// * WAV_ALAW: 8-bit companded alaw samples in a WAV container.
// * RFC4867_5_AMR: AMR frames with an rfc4867.5 header.
// * RFC4867_5_AMRWB: AMR-WB frames with an rfc4867.5 header.
// * FLAC: FLAC frames in the "native FLAC" container format.
// * MP3: MPEG audio frames with optional (ignored) ID3 metadata.
// * OGG_OPUS: Opus audio frames in an Ogg container.
// * WEBM_OPUS: Opus audio frames in a WebM container.
type AutoDetectDecodingConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *AutoDetectDecodingConfig) Reset() {
	*x = AutoDetectDecodingConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AutoDetectDecodingConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AutoDetectDecodingConfig) ProtoMessage() {}

func (x *AutoDetectDecodingConfig) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 AutoDetectDecodingConfig.ProtoReflect.Descriptor instead.
func (*AutoDetectDecodingConfig) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{9}
}

// Explicitly specified decoding parameters.
type ExplicitDecodingConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Encoding of the audio data sent for recognition.
	Encoding ExplicitDecodingConfig_AudioEncoding `protobuf:"varint,1,opt,name=encoding,proto3,enum=google.cloud.speech.v2.ExplicitDecodingConfig_AudioEncoding" json:"encoding,omitempty"`
	// Sample rate in Hertz of the audio data sent for recognition. Valid
	// values are: 8000-48000. 16000 is optimal. For best results, set the
	// sampling rate of the audio source to 16000 Hz. If that's not possible, use
	// the native sample rate of the audio source (instead of re-sampling).
	// Supported for the following encodings:
	// * LINEAR16: Headerless 16-bit signed little-endian PCM samples.
	// * MULAW: Headerless 8-bit companded mulaw samples.
	// * ALAW: Headerless 8-bit companded alaw samples.
	SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz,proto3" json:"sample_rate_hertz,omitempty"`
	// Number of channels present in the audio data sent for recognition.
	// Supported for the following encodings:
	// * LINEAR16: Headerless 16-bit signed little-endian PCM samples.
	// * MULAW: Headerless 8-bit companded mulaw samples.
	// * ALAW: Headerless 8-bit companded alaw samples.
	AudioChannelCount int32 `protobuf:"varint,3,opt,name=audio_channel_count,json=audioChannelCount,proto3" json:"audio_channel_count,omitempty"`
}

func (x *ExplicitDecodingConfig) Reset() {
	*x = ExplicitDecodingConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ExplicitDecodingConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExplicitDecodingConfig) ProtoMessage() {}

func (x *ExplicitDecodingConfig) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 ExplicitDecodingConfig.ProtoReflect.Descriptor instead.
func (*ExplicitDecodingConfig) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{10}
}

func (x *ExplicitDecodingConfig) GetEncoding() ExplicitDecodingConfig_AudioEncoding {
	if x != nil {
		return x.Encoding
	}
	return ExplicitDecodingConfig_AUDIO_ENCODING_UNSPECIFIED
}

func (x *ExplicitDecodingConfig) GetSampleRateHertz() int32 {
	if x != nil {
		return x.SampleRateHertz
	}
	return 0
}

func (x *ExplicitDecodingConfig) GetAudioChannelCount() int32 {
	if x != nil {
		return x.AudioChannelCount
	}
	return 0
}

// Configuration to enable speaker diarization.
type SpeakerDiarizationConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Minimum number of speakers in the conversation. This range gives
	// you more flexibility by allowing the system to automatically determine the
	// correct number of speakers. If not set, the default value is 2.
	//
	// To fix the number of speakers detected in the audio, set
	// `min_speaker_count` = `max_speaker_count`.
	MinSpeakerCount int32 `protobuf:"varint,2,opt,name=min_speaker_count,json=minSpeakerCount,proto3" json:"min_speaker_count,omitempty"`
	// Required. Maximum number of speakers in the conversation. Valid values are:
	// 1-6. Must be >= `min_speaker_count`. This range gives you more flexibility
	// by allowing the system to automatically determine the correct number of
	// speakers.
	MaxSpeakerCount int32 `protobuf:"varint,3,opt,name=max_speaker_count,json=maxSpeakerCount,proto3" json:"max_speaker_count,omitempty"`
}

func (x *SpeakerDiarizationConfig) Reset() {
	*x = SpeakerDiarizationConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SpeakerDiarizationConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SpeakerDiarizationConfig) ProtoMessage() {}

func (x *SpeakerDiarizationConfig) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 SpeakerDiarizationConfig.ProtoReflect.Descriptor instead.
func (*SpeakerDiarizationConfig) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{11}
}

func (x *SpeakerDiarizationConfig) GetMinSpeakerCount() int32 {
	if x != nil {
		return x.MinSpeakerCount
	}
	return 0
}

func (x *SpeakerDiarizationConfig) GetMaxSpeakerCount() int32 {
	if x != nil {
		return x.MaxSpeakerCount
	}
	return 0
}

// Available recognition features.
type RecognitionFeatures struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If set to `true`, the server will attempt to filter out profanities,
	// replacing all but the initial character in each filtered word with
	// asterisks, for instance, "f***". If set to `false` or omitted, profanities
	// won't be filtered out.
	ProfanityFilter bool `protobuf:"varint,1,opt,name=profanity_filter,json=profanityFilter,proto3" json:"profanity_filter,omitempty"`
	// If `true`, the top result includes a list of words and the start and end
	// time offsets (timestamps) for those words. If `false`, no word-level time
	// offset information is returned. The default is `false`.
	EnableWordTimeOffsets bool `protobuf:"varint,2,opt,name=enable_word_time_offsets,json=enableWordTimeOffsets,proto3" json:"enable_word_time_offsets,omitempty"`
	// If `true`, the top result includes a list of words and the confidence for
	// those words. If `false`, no word-level confidence information is returned.
	// The default is `false`.
	EnableWordConfidence bool `protobuf:"varint,3,opt,name=enable_word_confidence,json=enableWordConfidence,proto3" json:"enable_word_confidence,omitempty"`
	// If `true`, adds punctuation to recognition result hypotheses. This feature
	// is only available in select languages. The default `false` value does not
	// add punctuation to result hypotheses.
	EnableAutomaticPunctuation bool `protobuf:"varint,4,opt,name=enable_automatic_punctuation,json=enableAutomaticPunctuation,proto3" json:"enable_automatic_punctuation,omitempty"`
	// The spoken punctuation behavior for the call. If `true`, replaces spoken
	// punctuation with the corresponding symbols in the request. For example,
	// "how are you question mark" becomes "how are you?". See
	// https://cloud.google.com/speech-to-text/docs/spoken-punctuation for
	// support. If `false`, spoken punctuation is not replaced.
	EnableSpokenPunctuation bool `protobuf:"varint,14,opt,name=enable_spoken_punctuation,json=enableSpokenPunctuation,proto3" json:"enable_spoken_punctuation,omitempty"`
	// The spoken emoji behavior for the call. If `true`, adds spoken emoji
	// formatting for the request. This will replace spoken emojis with the
	// corresponding Unicode symbols in the final transcript. If `false`, spoken
	// emojis are not replaced.
	EnableSpokenEmojis bool `protobuf:"varint,15,opt,name=enable_spoken_emojis,json=enableSpokenEmojis,proto3" json:"enable_spoken_emojis,omitempty"`
	// Mode for recognizing multi-channel audio.
	MultiChannelMode RecognitionFeatures_MultiChannelMode `protobuf:"varint,17,opt,name=multi_channel_mode,json=multiChannelMode,proto3,enum=google.cloud.speech.v2.RecognitionFeatures_MultiChannelMode" json:"multi_channel_mode,omitempty"`
	// Configuration to enable speaker diarization and set additional
	// parameters to make diarization better suited for your application.
	// When this is enabled, we send all the words from the beginning of the
	// audio for the top alternative in every consecutive STREAMING responses.
	// This is done in order to improve our speaker tags as our models learn to
	// identify the speakers in the conversation over time.
	// For non-streaming requests, the diarization results will be provided only
	// in the top alternative of the FINAL SpeechRecognitionResult.
	DiarizationConfig *SpeakerDiarizationConfig `protobuf:"bytes,9,opt,name=diarization_config,json=diarizationConfig,proto3" json:"diarization_config,omitempty"`
	// Maximum number of recognition hypotheses to be returned.
	// The server may return fewer than `max_alternatives`.
	// Valid values are `0`-`30`. A value of `0` or `1` will return a maximum of
	// one. If omitted, will return a maximum of one.
	MaxAlternatives int32 `protobuf:"varint,16,opt,name=max_alternatives,json=maxAlternatives,proto3" json:"max_alternatives,omitempty"`
}

func (x *RecognitionFeatures) Reset() {
	*x = RecognitionFeatures{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RecognitionFeatures) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RecognitionFeatures) ProtoMessage() {}

func (x *RecognitionFeatures) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 RecognitionFeatures.ProtoReflect.Descriptor instead.
func (*RecognitionFeatures) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{12}
}

func (x *RecognitionFeatures) GetProfanityFilter() bool {
	if x != nil {
		return x.ProfanityFilter
	}
	return false
}

func (x *RecognitionFeatures) GetEnableWordTimeOffsets() bool {
	if x != nil {
		return x.EnableWordTimeOffsets
	}
	return false
}

func (x *RecognitionFeatures) GetEnableWordConfidence() bool {
	if x != nil {
		return x.EnableWordConfidence
	}
	return false
}

func (x *RecognitionFeatures) GetEnableAutomaticPunctuation() bool {
	if x != nil {
		return x.EnableAutomaticPunctuation
	}
	return false
}

func (x *RecognitionFeatures) GetEnableSpokenPunctuation() bool {
	if x != nil {
		return x.EnableSpokenPunctuation
	}
	return false
}

func (x *RecognitionFeatures) GetEnableSpokenEmojis() bool {
	if x != nil {
		return x.EnableSpokenEmojis
	}
	return false
}

func (x *RecognitionFeatures) GetMultiChannelMode() RecognitionFeatures_MultiChannelMode {
	if x != nil {
		return x.MultiChannelMode
	}
	return RecognitionFeatures_MULTI_CHANNEL_MODE_UNSPECIFIED
}

func (x *RecognitionFeatures) GetDiarizationConfig() *SpeakerDiarizationConfig {
	if x != nil {
		return x.DiarizationConfig
	}
	return nil
}

func (x *RecognitionFeatures) GetMaxAlternatives() int32 {
	if x != nil {
		return x.MaxAlternatives
	}
	return 0
}

// Provides "hints" to the speech recognizer to favor specific words and phrases
// in the results. Phrase sets can be specified as an inline resource, or a
// reference to an existing phrase set resource.
type SpeechAdaptation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of inline or referenced phrase sets.
	PhraseSets []*SpeechAdaptation_AdaptationPhraseSet `protobuf:"bytes,1,rep,name=phrase_sets,json=phraseSets,proto3" json:"phrase_sets,omitempty"`
	// A list of inline custom classes. Existing custom class resources can be
	// referenced directly in a phrase set.
	CustomClasses []*CustomClass `protobuf:"bytes,2,rep,name=custom_classes,json=customClasses,proto3" json:"custom_classes,omitempty"`
}

func (x *SpeechAdaptation) Reset() {
	*x = SpeechAdaptation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SpeechAdaptation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SpeechAdaptation) ProtoMessage() {}

func (x *SpeechAdaptation) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[13]
	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 SpeechAdaptation.ProtoReflect.Descriptor instead.
func (*SpeechAdaptation) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{13}
}

func (x *SpeechAdaptation) GetPhraseSets() []*SpeechAdaptation_AdaptationPhraseSet {
	if x != nil {
		return x.PhraseSets
	}
	return nil
}

func (x *SpeechAdaptation) GetCustomClasses() []*CustomClass {
	if x != nil {
		return x.CustomClasses
	}
	return nil
}

// Provides information to the Recognizer that specifies how to process the
// recognition request.
type RecognitionConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Decoding parameters for audio being sent for recognition.
	//
	// Types that are assignable to DecodingConfig:
	//
	//	*RecognitionConfig_AutoDecodingConfig
	//	*RecognitionConfig_ExplicitDecodingConfig
	DecodingConfig isRecognitionConfig_DecodingConfig `protobuf_oneof:"decoding_config"`
	// Speech recognition features to enable.
	Features *RecognitionFeatures `protobuf:"bytes,2,opt,name=features,proto3" json:"features,omitempty"`
	// Speech adaptation context that weights recognizer predictions for specific
	// words and phrases.
	Adaptation *SpeechAdaptation `protobuf:"bytes,6,opt,name=adaptation,proto3" json:"adaptation,omitempty"`
}

func (x *RecognitionConfig) Reset() {
	*x = RecognitionConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RecognitionConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RecognitionConfig) ProtoMessage() {}

func (x *RecognitionConfig) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[14]
	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 RecognitionConfig.ProtoReflect.Descriptor instead.
func (*RecognitionConfig) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{14}
}

func (m *RecognitionConfig) GetDecodingConfig() isRecognitionConfig_DecodingConfig {
	if m != nil {
		return m.DecodingConfig
	}
	return nil
}

func (x *RecognitionConfig) GetAutoDecodingConfig() *AutoDetectDecodingConfig {
	if x, ok := x.GetDecodingConfig().(*RecognitionConfig_AutoDecodingConfig); ok {
		return x.AutoDecodingConfig
	}
	return nil
}

func (x *RecognitionConfig) GetExplicitDecodingConfig() *ExplicitDecodingConfig {
	if x, ok := x.GetDecodingConfig().(*RecognitionConfig_ExplicitDecodingConfig); ok {
		return x.ExplicitDecodingConfig
	}
	return nil
}

func (x *RecognitionConfig) GetFeatures() *RecognitionFeatures {
	if x != nil {
		return x.Features
	}
	return nil
}

func (x *RecognitionConfig) GetAdaptation() *SpeechAdaptation {
	if x != nil {
		return x.Adaptation
	}
	return nil
}

type isRecognitionConfig_DecodingConfig interface {
	isRecognitionConfig_DecodingConfig()
}

type RecognitionConfig_AutoDecodingConfig struct {
	// Automatically detect decoding parameters.
	// Preferred for supported formats.
	AutoDecodingConfig *AutoDetectDecodingConfig `protobuf:"bytes,7,opt,name=auto_decoding_config,json=autoDecodingConfig,proto3,oneof"`
}

type RecognitionConfig_ExplicitDecodingConfig struct {
	// Explicitly specified decoding parameters.
	// Required if using headerless PCM audio (linear16, mulaw, alaw).
	ExplicitDecodingConfig *ExplicitDecodingConfig `protobuf:"bytes,8,opt,name=explicit_decoding_config,json=explicitDecodingConfig,proto3,oneof"`
}

func (*RecognitionConfig_AutoDecodingConfig) isRecognitionConfig_DecodingConfig() {}

func (*RecognitionConfig_ExplicitDecodingConfig) isRecognitionConfig_DecodingConfig() {}

// Request message for the
// [Recognize][google.cloud.speech.v2.Speech.Recognize] method. Either
// `content` or `uri` must be supplied. Supplying both or neither returns
// [INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]. See [content
// limits](https://cloud.google.com/speech-to-text/quotas#content).
type RecognizeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the Recognizer to use during recognition. The
	// expected format is
	// `projects/{project}/locations/{location}/recognizers/{recognizer}`.
	Recognizer string `protobuf:"bytes,3,opt,name=recognizer,proto3" json:"recognizer,omitempty"`
	// Features and audio metadata to use for the Automatic Speech Recognition.
	// This field in combination with the
	// [config_mask][google.cloud.speech.v2.RecognizeRequest.config_mask] field
	// can be used to override parts of the
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config]
	// of the Recognizer resource.
	Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	// The list of fields in
	// [config][google.cloud.speech.v2.RecognizeRequest.config] that override the
	// values in the
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config]
	// of the recognizer during this recognition request. If no mask is provided,
	// all non-default valued fields in
	// [config][google.cloud.speech.v2.RecognizeRequest.config] override the
	// values in the recognizer for this recognition request. If a mask is
	// provided, only the fields listed in the mask override the config in the
	// recognizer for this recognition request. If a wildcard (`*`) is provided,
	// [config][google.cloud.speech.v2.RecognizeRequest.config] completely
	// overrides and replaces the config in the recognizer for this recognition
	// request.
	ConfigMask *fieldmaskpb.FieldMask `protobuf:"bytes,8,opt,name=config_mask,json=configMask,proto3" json:"config_mask,omitempty"`
	// The audio source, which is either inline content or a Google Cloud
	// Storage URI.
	//
	// Types that are assignable to AudioSource:
	//
	//	*RecognizeRequest_Content
	//	*RecognizeRequest_Uri
	AudioSource isRecognizeRequest_AudioSource `protobuf_oneof:"audio_source"`
}

func (x *RecognizeRequest) Reset() {
	*x = RecognizeRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RecognizeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RecognizeRequest) ProtoMessage() {}

func (x *RecognizeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[15]
	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 RecognizeRequest.ProtoReflect.Descriptor instead.
func (*RecognizeRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{15}
}

func (x *RecognizeRequest) GetRecognizer() string {
	if x != nil {
		return x.Recognizer
	}
	return ""
}

func (x *RecognizeRequest) GetConfig() *RecognitionConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *RecognizeRequest) GetConfigMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.ConfigMask
	}
	return nil
}

func (m *RecognizeRequest) GetAudioSource() isRecognizeRequest_AudioSource {
	if m != nil {
		return m.AudioSource
	}
	return nil
}

func (x *RecognizeRequest) GetContent() []byte {
	if x, ok := x.GetAudioSource().(*RecognizeRequest_Content); ok {
		return x.Content
	}
	return nil
}

func (x *RecognizeRequest) GetUri() string {
	if x, ok := x.GetAudioSource().(*RecognizeRequest_Uri); ok {
		return x.Uri
	}
	return ""
}

type isRecognizeRequest_AudioSource interface {
	isRecognizeRequest_AudioSource()
}

type RecognizeRequest_Content struct {
	// The audio data bytes encoded as specified in
	// [RecognitionConfig][google.cloud.speech.v2.RecognitionConfig]. As
	// with all bytes fields, proto buffers use a pure binary representation,
	// whereas JSON representations use base64.
	Content []byte `protobuf:"bytes,5,opt,name=content,proto3,oneof"`
}

type RecognizeRequest_Uri struct {
	// URI that points to a file that contains audio data bytes as specified in
	// [RecognitionConfig][google.cloud.speech.v2.RecognitionConfig]. The file
	// must not be compressed (for example, gzip). Currently, only Google Cloud
	// Storage URIs are supported, which must be specified in the following
	// format: `gs://bucket_name/object_name` (other URI formats return
	// [INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more
	// information, see [Request
	// URIs](https://cloud.google.com/storage/docs/reference-uris).
	Uri string `protobuf:"bytes,6,opt,name=uri,proto3,oneof"`
}

func (*RecognizeRequest_Content) isRecognizeRequest_AudioSource() {}

func (*RecognizeRequest_Uri) isRecognizeRequest_AudioSource() {}

// Metadata about the recognition request and response.
type RecognitionResponseMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// When available, billed audio seconds for the corresponding request.
	TotalBilledDuration *durationpb.Duration `protobuf:"bytes,6,opt,name=total_billed_duration,json=totalBilledDuration,proto3" json:"total_billed_duration,omitempty"`
}

func (x *RecognitionResponseMetadata) Reset() {
	*x = RecognitionResponseMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RecognitionResponseMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RecognitionResponseMetadata) ProtoMessage() {}

func (x *RecognitionResponseMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[16]
	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 RecognitionResponseMetadata.ProtoReflect.Descriptor instead.
func (*RecognitionResponseMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{16}
}

func (x *RecognitionResponseMetadata) GetTotalBilledDuration() *durationpb.Duration {
	if x != nil {
		return x.TotalBilledDuration
	}
	return nil
}

// Alternative hypotheses (a.k.a. n-best list).
type SpeechRecognitionAlternative struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Transcript text representing the words that the user spoke.
	Transcript string `protobuf:"bytes,1,opt,name=transcript,proto3" json:"transcript,omitempty"`
	// The confidence estimate between 0.0 and 1.0. A higher number
	// indicates an estimated greater likelihood that the recognized words are
	// correct. This field is set only for the top alternative of a non-streaming
	// result or, of a streaming result where
	// [is_final][google.cloud.speech.v2.StreamingRecognitionResult.is_final] is
	// set to `true`. This field is not guaranteed to be accurate and users should
	// not rely on it to be always provided. The default of 0.0 is a sentinel
	// value indicating `confidence` was not set.
	Confidence float32 `protobuf:"fixed32,2,opt,name=confidence,proto3" json:"confidence,omitempty"`
	// A list of word-specific information for each recognized word.
	// When
	// [enable_speaker_diarization][google.cloud.speech.v2.SpeakerDiarizationConfig.enable_speaker_diarization]
	// is true, you will see all the words from the beginning of the audio.
	Words []*WordInfo `protobuf:"bytes,3,rep,name=words,proto3" json:"words,omitempty"`
}

func (x *SpeechRecognitionAlternative) Reset() {
	*x = SpeechRecognitionAlternative{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SpeechRecognitionAlternative) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SpeechRecognitionAlternative) ProtoMessage() {}

func (x *SpeechRecognitionAlternative) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[17]
	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 SpeechRecognitionAlternative.ProtoReflect.Descriptor instead.
func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{17}
}

func (x *SpeechRecognitionAlternative) GetTranscript() string {
	if x != nil {
		return x.Transcript
	}
	return ""
}

func (x *SpeechRecognitionAlternative) GetConfidence() float32 {
	if x != nil {
		return x.Confidence
	}
	return 0
}

func (x *SpeechRecognitionAlternative) GetWords() []*WordInfo {
	if x != nil {
		return x.Words
	}
	return nil
}

// Word-specific information for recognized words.
type WordInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Time offset relative to the beginning of the audio,
	// and corresponding to the start of the spoken word.
	// This field is only set if
	// [enable_word_time_offsets][google.cloud.speech.v2.RecognitionFeatures.enable_word_time_offsets]
	// is `true` and only in the top hypothesis. This is an experimental feature
	// and the accuracy of the time offset can vary.
	StartOffset *durationpb.Duration `protobuf:"bytes,1,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"`
	// Time offset relative to the beginning of the audio,
	// and corresponding to the end of the spoken word.
	// This field is only set if
	// [enable_word_time_offsets][google.cloud.speech.v2.RecognitionFeatures.enable_word_time_offsets]
	// is `true` and only in the top hypothesis. This is an experimental feature
	// and the accuracy of the time offset can vary.
	EndOffset *durationpb.Duration `protobuf:"bytes,2,opt,name=end_offset,json=endOffset,proto3" json:"end_offset,omitempty"`
	// The word corresponding to this set of information.
	Word string `protobuf:"bytes,3,opt,name=word,proto3" json:"word,omitempty"`
	// The confidence estimate between 0.0 and 1.0. A higher number
	// indicates an estimated greater likelihood that the recognized words are
	// correct. This field is set only for the top alternative of a non-streaming
	// result or, of a streaming result where
	// [is_final][google.cloud.speech.v2.StreamingRecognitionResult.is_final] is
	// set to `true`. This field is not guaranteed to be accurate and users should
	// not rely on it to be always provided. The default of 0.0 is a sentinel
	// value indicating `confidence` was not set.
	Confidence float32 `protobuf:"fixed32,4,opt,name=confidence,proto3" json:"confidence,omitempty"`
	// A distinct label is assigned for every speaker within the audio. This field
	// specifies which one of those speakers was detected to have spoken this
	// word. `speaker_label` is set if
	// [enable_speaker_diarization][google.cloud.speech.v2.SpeakerDiarizationConfig.enable_speaker_diarization]
	// is `true` and only in the top alternative.
	SpeakerLabel string `protobuf:"bytes,6,opt,name=speaker_label,json=speakerLabel,proto3" json:"speaker_label,omitempty"`
}

func (x *WordInfo) Reset() {
	*x = WordInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WordInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WordInfo) ProtoMessage() {}

func (x *WordInfo) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[18]
	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 WordInfo.ProtoReflect.Descriptor instead.
func (*WordInfo) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{18}
}

func (x *WordInfo) GetStartOffset() *durationpb.Duration {
	if x != nil {
		return x.StartOffset
	}
	return nil
}

func (x *WordInfo) GetEndOffset() *durationpb.Duration {
	if x != nil {
		return x.EndOffset
	}
	return nil
}

func (x *WordInfo) GetWord() string {
	if x != nil {
		return x.Word
	}
	return ""
}

func (x *WordInfo) GetConfidence() float32 {
	if x != nil {
		return x.Confidence
	}
	return 0
}

func (x *WordInfo) GetSpeakerLabel() string {
	if x != nil {
		return x.SpeakerLabel
	}
	return ""
}

// A speech recognition result corresponding to a portion of the audio.
type SpeechRecognitionResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// May contain one or more recognition hypotheses. These alternatives are
	// ordered in terms of accuracy, with the top (first) alternative being the
	// most probable, as ranked by the recognizer.
	Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives,proto3" json:"alternatives,omitempty"`
	// For multi-channel audio, this is the channel number corresponding to the
	// recognized result for the audio from that channel.
	// For `audio_channel_count` = `N`, its output values can range from `1` to
	// `N`.
	ChannelTag int32 `protobuf:"varint,2,opt,name=channel_tag,json=channelTag,proto3" json:"channel_tag,omitempty"`
	// Time offset of the end of this result relative to the beginning of the
	// audio.
	ResultEndOffset *durationpb.Duration `protobuf:"bytes,4,opt,name=result_end_offset,json=resultEndOffset,proto3" json:"result_end_offset,omitempty"`
	// Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt)
	// language tag of the language in this result. This language code was
	// detected to have the most likelihood of being spoken in the audio.
	LanguageCode string `protobuf:"bytes,5,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
}

func (x *SpeechRecognitionResult) Reset() {
	*x = SpeechRecognitionResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SpeechRecognitionResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SpeechRecognitionResult) ProtoMessage() {}

func (x *SpeechRecognitionResult) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[19]
	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 SpeechRecognitionResult.ProtoReflect.Descriptor instead.
func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{19}
}

func (x *SpeechRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative {
	if x != nil {
		return x.Alternatives
	}
	return nil
}

func (x *SpeechRecognitionResult) GetChannelTag() int32 {
	if x != nil {
		return x.ChannelTag
	}
	return 0
}

func (x *SpeechRecognitionResult) GetResultEndOffset() *durationpb.Duration {
	if x != nil {
		return x.ResultEndOffset
	}
	return nil
}

func (x *SpeechRecognitionResult) GetLanguageCode() string {
	if x != nil {
		return x.LanguageCode
	}
	return ""
}

// Response message for the
// [Recognize][google.cloud.speech.v2.Speech.Recognize] method.
type RecognizeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Sequential list of transcription results corresponding to sequential
	// portions of audio.
	Results []*SpeechRecognitionResult `protobuf:"bytes,3,rep,name=results,proto3" json:"results,omitempty"`
	// Metadata about the recognition.
	Metadata *RecognitionResponseMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
}

func (x *RecognizeResponse) Reset() {
	*x = RecognizeResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RecognizeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RecognizeResponse) ProtoMessage() {}

func (x *RecognizeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[20]
	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 RecognizeResponse.ProtoReflect.Descriptor instead.
func (*RecognizeResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{20}
}

func (x *RecognizeResponse) GetResults() []*SpeechRecognitionResult {
	if x != nil {
		return x.Results
	}
	return nil
}

func (x *RecognizeResponse) GetMetadata() *RecognitionResponseMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

// Available recognition features specific to streaming recognition requests.
type StreamingRecognitionFeatures struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If `true`, responses with voice activity speech events will be returned as
	// they are detected.
	EnableVoiceActivityEvents bool `protobuf:"varint,1,opt,name=enable_voice_activity_events,json=enableVoiceActivityEvents,proto3" json:"enable_voice_activity_events,omitempty"`
	// Whether or not to stream interim results to the client. If set to true,
	// interim results will be streamed to the client. Otherwise, only the final
	// response will be streamed back.
	InterimResults bool `protobuf:"varint,2,opt,name=interim_results,json=interimResults,proto3" json:"interim_results,omitempty"`
	// If set, the server will automatically close the stream after the specified
	// duration has elapsed after the last VOICE_ACTIVITY speech event has been
	// sent. The field `voice_activity_events` must also be set to true.
	VoiceActivityTimeout *StreamingRecognitionFeatures_VoiceActivityTimeout `protobuf:"bytes,3,opt,name=voice_activity_timeout,json=voiceActivityTimeout,proto3" json:"voice_activity_timeout,omitempty"`
}

func (x *StreamingRecognitionFeatures) Reset() {
	*x = StreamingRecognitionFeatures{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StreamingRecognitionFeatures) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamingRecognitionFeatures) ProtoMessage() {}

func (x *StreamingRecognitionFeatures) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[21]
	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 StreamingRecognitionFeatures.ProtoReflect.Descriptor instead.
func (*StreamingRecognitionFeatures) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{21}
}

func (x *StreamingRecognitionFeatures) GetEnableVoiceActivityEvents() bool {
	if x != nil {
		return x.EnableVoiceActivityEvents
	}
	return false
}

func (x *StreamingRecognitionFeatures) GetInterimResults() bool {
	if x != nil {
		return x.InterimResults
	}
	return false
}

func (x *StreamingRecognitionFeatures) GetVoiceActivityTimeout() *StreamingRecognitionFeatures_VoiceActivityTimeout {
	if x != nil {
		return x.VoiceActivityTimeout
	}
	return nil
}

// Provides configuration information for the StreamingRecognize request.
type StreamingRecognitionConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Features and audio metadata to use for the Automatic Speech
	// Recognition. This field in combination with the
	// [config_mask][google.cloud.speech.v2.StreamingRecognitionConfig.config_mask]
	// field can be used to override parts of the
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config]
	// of the Recognizer resource.
	Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	// The list of fields in
	// [config][google.cloud.speech.v2.StreamingRecognitionConfig.config] that
	// override the values in the
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config]
	// of the recognizer during this recognition request. If no mask is provided,
	// all non-default valued fields in
	// [config][google.cloud.speech.v2.StreamingRecognitionConfig.config] override
	// the values in the recognizer for this recognition request. If a mask is
	// provided, only the fields listed in the mask override the config in the
	// recognizer for this recognition request. If a wildcard (`*`) is provided,
	// [config][google.cloud.speech.v2.StreamingRecognitionConfig.config]
	// completely overrides and replaces the config in the recognizer for this
	// recognition request.
	ConfigMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=config_mask,json=configMask,proto3" json:"config_mask,omitempty"`
	// Speech recognition features to enable specific to streaming audio
	// recognition requests.
	StreamingFeatures *StreamingRecognitionFeatures `protobuf:"bytes,2,opt,name=streaming_features,json=streamingFeatures,proto3" json:"streaming_features,omitempty"`
}

func (x *StreamingRecognitionConfig) Reset() {
	*x = StreamingRecognitionConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StreamingRecognitionConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamingRecognitionConfig) ProtoMessage() {}

func (x *StreamingRecognitionConfig) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[22]
	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 StreamingRecognitionConfig.ProtoReflect.Descriptor instead.
func (*StreamingRecognitionConfig) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{22}
}

func (x *StreamingRecognitionConfig) GetConfig() *RecognitionConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *StreamingRecognitionConfig) GetConfigMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.ConfigMask
	}
	return nil
}

func (x *StreamingRecognitionConfig) GetStreamingFeatures() *StreamingRecognitionFeatures {
	if x != nil {
		return x.StreamingFeatures
	}
	return nil
}

// Request message for the
// [StreamingRecognize][google.cloud.speech.v2.Speech.StreamingRecognize]
// method. Multiple
// [StreamingRecognizeRequest][google.cloud.speech.v2.StreamingRecognizeRequest]
// messages are sent. The first message must contain a
// [recognizer][google.cloud.speech.v2.StreamingRecognizeRequest.recognizer] and
// optionally a
// [streaming_config][google.cloud.speech.v2.StreamingRecognizeRequest.streaming_config]
// message and must not contain
// [audio][google.cloud.speech.v2.StreamingRecognizeRequest.audio]. All
// subsequent messages must contain
// [audio][google.cloud.speech.v2.StreamingRecognizeRequest.audio] and must not
// contain a
// [streaming_config][google.cloud.speech.v2.StreamingRecognizeRequest.streaming_config]
// message.
type StreamingRecognizeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Streaming recognition should start with an initial request having
	// a `recognizer`. Subsequent requests carry the audio data to be recognized.
	//
	// The initial request with configuration can be omitted if the Recognizer
	// being used has a
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config].
	Recognizer string `protobuf:"bytes,3,opt,name=recognizer,proto3" json:"recognizer,omitempty"`
	// Types that are assignable to StreamingRequest:
	//
	//	*StreamingRecognizeRequest_StreamingConfig
	//	*StreamingRecognizeRequest_Audio
	StreamingRequest isStreamingRecognizeRequest_StreamingRequest `protobuf_oneof:"streaming_request"`
}

func (x *StreamingRecognizeRequest) Reset() {
	*x = StreamingRecognizeRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StreamingRecognizeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamingRecognizeRequest) ProtoMessage() {}

func (x *StreamingRecognizeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[23]
	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 StreamingRecognizeRequest.ProtoReflect.Descriptor instead.
func (*StreamingRecognizeRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{23}
}

func (x *StreamingRecognizeRequest) GetRecognizer() string {
	if x != nil {
		return x.Recognizer
	}
	return ""
}

func (m *StreamingRecognizeRequest) GetStreamingRequest() isStreamingRecognizeRequest_StreamingRequest {
	if m != nil {
		return m.StreamingRequest
	}
	return nil
}

func (x *StreamingRecognizeRequest) GetStreamingConfig() *StreamingRecognitionConfig {
	if x, ok := x.GetStreamingRequest().(*StreamingRecognizeRequest_StreamingConfig); ok {
		return x.StreamingConfig
	}
	return nil
}

func (x *StreamingRecognizeRequest) GetAudio() []byte {
	if x, ok := x.GetStreamingRequest().(*StreamingRecognizeRequest_Audio); ok {
		return x.Audio
	}
	return nil
}

type isStreamingRecognizeRequest_StreamingRequest interface {
	isStreamingRecognizeRequest_StreamingRequest()
}

type StreamingRecognizeRequest_StreamingConfig struct {
	// StreamingRecognitionConfig to be used in this recognition attempt.
	// If provided, it will override the default RecognitionConfig stored in the
	// Recognizer.
	StreamingConfig *StreamingRecognitionConfig `protobuf:"bytes,6,opt,name=streaming_config,json=streamingConfig,proto3,oneof"`
}

type StreamingRecognizeRequest_Audio struct {
	// Inline audio bytes to be Recognized.
	Audio []byte `protobuf:"bytes,5,opt,name=audio,proto3,oneof"`
}

func (*StreamingRecognizeRequest_StreamingConfig) isStreamingRecognizeRequest_StreamingRequest() {}

func (*StreamingRecognizeRequest_Audio) isStreamingRecognizeRequest_StreamingRequest() {}

// Request message for the
// [BatchRecognize][google.cloud.speech.v2.Speech.BatchRecognize]
// method.
type BatchRecognizeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Resource name of the recognizer to be used for ASR.
	Recognizer string `protobuf:"bytes,1,opt,name=recognizer,proto3" json:"recognizer,omitempty"`
	// Features and audio metadata to use for the Automatic Speech Recognition.
	// This field in combination with the
	// [config_mask][google.cloud.speech.v2.BatchRecognizeRequest.config_mask]
	// field can be used to override parts of the
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config]
	// of the Recognizer resource.
	Config *RecognitionConfig `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"`
	// The list of fields in
	// [config][google.cloud.speech.v2.BatchRecognizeRequest.config] that override
	// the values in the
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config]
	// of the recognizer during this recognition request. If no mask is provided,
	// all given fields in
	// [config][google.cloud.speech.v2.BatchRecognizeRequest.config] override the
	// values in the recognizer for this recognition request. If a mask is
	// provided, only the fields listed in the mask override the config in the
	// recognizer for this recognition request. If a wildcard (`*`) is provided,
	// [config][google.cloud.speech.v2.BatchRecognizeRequest.config] completely
	// overrides and replaces the config in the recognizer for this recognition
	// request.
	ConfigMask *fieldmaskpb.FieldMask `protobuf:"bytes,5,opt,name=config_mask,json=configMask,proto3" json:"config_mask,omitempty"`
	// Audio files with file metadata for ASR.
	Files []*BatchRecognizeFileMetadata `protobuf:"bytes,3,rep,name=files,proto3" json:"files,omitempty"`
}

func (x *BatchRecognizeRequest) Reset() {
	*x = BatchRecognizeRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BatchRecognizeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BatchRecognizeRequest) ProtoMessage() {}

func (x *BatchRecognizeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[24]
	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 BatchRecognizeRequest.ProtoReflect.Descriptor instead.
func (*BatchRecognizeRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{24}
}

func (x *BatchRecognizeRequest) GetRecognizer() string {
	if x != nil {
		return x.Recognizer
	}
	return ""
}

func (x *BatchRecognizeRequest) GetConfig() *RecognitionConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *BatchRecognizeRequest) GetConfigMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.ConfigMask
	}
	return nil
}

func (x *BatchRecognizeRequest) GetFiles() []*BatchRecognizeFileMetadata {
	if x != nil {
		return x.Files
	}
	return nil
}

// Response message for
// [BatchRecognize][google.cloud.speech.v2.Speech.BatchRecognize] that is
// packaged into a longrunning [Operation][google.longrunning.Operation].
type BatchRecognizeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Map from filename to the final result for that file.
	Results map[string]*BatchRecognizeFileResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *BatchRecognizeResponse) Reset() {
	*x = BatchRecognizeResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BatchRecognizeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BatchRecognizeResponse) ProtoMessage() {}

func (x *BatchRecognizeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[25]
	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 BatchRecognizeResponse.ProtoReflect.Descriptor instead.
func (*BatchRecognizeResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{25}
}

func (x *BatchRecognizeResponse) GetResults() map[string]*BatchRecognizeFileResult {
	if x != nil {
		return x.Results
	}
	return nil
}

// Final results for a single file.
type BatchRecognizeFileResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The GCS URI to which recognition results were written.
	Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
	// Error if one was encountered.
	Error *status.Status `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
}

func (x *BatchRecognizeFileResult) Reset() {
	*x = BatchRecognizeFileResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BatchRecognizeFileResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BatchRecognizeFileResult) ProtoMessage() {}

func (x *BatchRecognizeFileResult) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[26]
	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 BatchRecognizeFileResult.ProtoReflect.Descriptor instead.
func (*BatchRecognizeFileResult) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{26}
}

func (x *BatchRecognizeFileResult) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *BatchRecognizeFileResult) GetError() *status.Status {
	if x != nil {
		return x.Error
	}
	return nil
}

// Metadata about transcription for a single file (for example, progress
// percent).
type BatchRecognizeTranscriptionMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// How much of the file has been transcribed so far.
	ProgressPercent int32 `protobuf:"varint,1,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"`
	// Error if one was encountered.
	Error *status.Status `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	// The GCS URI to which recognition results will be written.
	Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"`
}

func (x *BatchRecognizeTranscriptionMetadata) Reset() {
	*x = BatchRecognizeTranscriptionMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BatchRecognizeTranscriptionMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BatchRecognizeTranscriptionMetadata) ProtoMessage() {}

func (x *BatchRecognizeTranscriptionMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 BatchRecognizeTranscriptionMetadata.ProtoReflect.Descriptor instead.
func (*BatchRecognizeTranscriptionMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{27}
}

func (x *BatchRecognizeTranscriptionMetadata) GetProgressPercent() int32 {
	if x != nil {
		return x.ProgressPercent
	}
	return 0
}

func (x *BatchRecognizeTranscriptionMetadata) GetError() *status.Status {
	if x != nil {
		return x.Error
	}
	return nil
}

func (x *BatchRecognizeTranscriptionMetadata) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

// Operation metadata for
// [BatchRecognize][google.cloud.speech.v2.Speech.BatchRecognize].
type BatchRecognizeMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Map from provided filename to the transcription metadata for that file.
	TranscriptionMetadata map[string]*BatchRecognizeTranscriptionMetadata `protobuf:"bytes,1,rep,name=transcription_metadata,json=transcriptionMetadata,proto3" json:"transcription_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *BatchRecognizeMetadata) Reset() {
	*x = BatchRecognizeMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BatchRecognizeMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BatchRecognizeMetadata) ProtoMessage() {}

func (x *BatchRecognizeMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 BatchRecognizeMetadata.ProtoReflect.Descriptor instead.
func (*BatchRecognizeMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{28}
}

func (x *BatchRecognizeMetadata) GetTranscriptionMetadata() map[string]*BatchRecognizeTranscriptionMetadata {
	if x != nil {
		return x.TranscriptionMetadata
	}
	return nil
}

// Metadata about a single file in a batch for BatchRecognize.
type BatchRecognizeFileMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The audio source, which is a Google Cloud Storage URI.
	//
	// Types that are assignable to AudioSource:
	//
	//	*BatchRecognizeFileMetadata_Uri
	AudioSource isBatchRecognizeFileMetadata_AudioSource `protobuf_oneof:"audio_source"`
	// Features and audio metadata to use for the Automatic Speech Recognition.
	// This field in combination with the
	// [config_mask][google.cloud.speech.v2.BatchRecognizeFileMetadata.config_mask]
	// field can be used to override parts of the
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config]
	// of the Recognizer resource as well as the
	// [config][google.cloud.speech.v2.BatchRecognizeRequest.config] at the
	// request level.
	Config *RecognitionConfig `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"`
	// The list of fields in
	// [config][google.cloud.speech.v2.BatchRecognizeFileMetadata.config] that
	// override the values in the
	// [default_recognition_config][google.cloud.speech.v2.Recognizer.default_recognition_config]
	// of the recognizer during this recognition request. If no mask is provided,
	// all non-default valued fields in
	// [config][google.cloud.speech.v2.BatchRecognizeFileMetadata.config] override
	// the values in the recognizer for this recognition request. If a mask is
	// provided, only the fields listed in the mask override the config in the
	// recognizer for this recognition request. If a wildcard (`*`) is provided,
	// [config][google.cloud.speech.v2.BatchRecognizeFileMetadata.config]
	// completely overrides and replaces the config in the recognizer for this
	// recognition request.
	ConfigMask *fieldmaskpb.FieldMask `protobuf:"bytes,5,opt,name=config_mask,json=configMask,proto3" json:"config_mask,omitempty"`
}

func (x *BatchRecognizeFileMetadata) Reset() {
	*x = BatchRecognizeFileMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BatchRecognizeFileMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BatchRecognizeFileMetadata) ProtoMessage() {}

func (x *BatchRecognizeFileMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 BatchRecognizeFileMetadata.ProtoReflect.Descriptor instead.
func (*BatchRecognizeFileMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{29}
}

func (m *BatchRecognizeFileMetadata) GetAudioSource() isBatchRecognizeFileMetadata_AudioSource {
	if m != nil {
		return m.AudioSource
	}
	return nil
}

func (x *BatchRecognizeFileMetadata) GetUri() string {
	if x, ok := x.GetAudioSource().(*BatchRecognizeFileMetadata_Uri); ok {
		return x.Uri
	}
	return ""
}

func (x *BatchRecognizeFileMetadata) GetConfig() *RecognitionConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *BatchRecognizeFileMetadata) GetConfigMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.ConfigMask
	}
	return nil
}

type isBatchRecognizeFileMetadata_AudioSource interface {
	isBatchRecognizeFileMetadata_AudioSource()
}

type BatchRecognizeFileMetadata_Uri struct {
	// Cloud Storage URI for the audio file.
	Uri string `protobuf:"bytes,1,opt,name=uri,proto3,oneof"`
}

func (*BatchRecognizeFileMetadata_Uri) isBatchRecognizeFileMetadata_AudioSource() {}

// A streaming speech recognition result corresponding to a portion of the audio
// that is currently being processed.
type StreamingRecognitionResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// May contain one or more recognition hypotheses. These alternatives are
	// ordered in terms of accuracy, with the top (first) alternative being the
	// most probable, as ranked by the recognizer.
	Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives,proto3" json:"alternatives,omitempty"`
	// If `false`, this
	// [StreamingRecognitionResult][google.cloud.speech.v2.StreamingRecognitionResult]
	// represents an interim result that may change. If `true`, this is the final
	// time the speech service will return this particular
	// [StreamingRecognitionResult][google.cloud.speech.v2.StreamingRecognitionResult],
	// the recognizer will not return any further hypotheses for this portion of
	// the transcript and corresponding audio.
	IsFinal bool `protobuf:"varint,2,opt,name=is_final,json=isFinal,proto3" json:"is_final,omitempty"`
	// An estimate of the likelihood that the recognizer will not change its guess
	// about this interim result. Values range from 0.0 (completely unstable)
	// to 1.0 (completely stable). This field is only provided for interim results
	// ([is_final][google.cloud.speech.v2.StreamingRecognitionResult.is_final]=`false`).
	// The default of 0.0 is a sentinel value indicating `stability` was not set.
	Stability float32 `protobuf:"fixed32,3,opt,name=stability,proto3" json:"stability,omitempty"`
	// Time offset of the end of this result relative to the beginning of the
	// audio.
	ResultEndOffset *durationpb.Duration `protobuf:"bytes,4,opt,name=result_end_offset,json=resultEndOffset,proto3" json:"result_end_offset,omitempty"`
	// For multi-channel audio, this is the channel number corresponding to the
	// recognized result for the audio from that channel.
	// For
	// `audio_channel_count` = `N`, its output values can range from `1` to `N`.
	ChannelTag int32 `protobuf:"varint,5,opt,name=channel_tag,json=channelTag,proto3" json:"channel_tag,omitempty"`
	// Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt)
	// language tag of the language in this result. This language code was
	// detected to have the most likelihood of being spoken in the audio.
	LanguageCode string `protobuf:"bytes,6,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
}

func (x *StreamingRecognitionResult) Reset() {
	*x = StreamingRecognitionResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StreamingRecognitionResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamingRecognitionResult) ProtoMessage() {}

func (x *StreamingRecognitionResult) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 StreamingRecognitionResult.ProtoReflect.Descriptor instead.
func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{30}
}

func (x *StreamingRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative {
	if x != nil {
		return x.Alternatives
	}
	return nil
}

func (x *StreamingRecognitionResult) GetIsFinal() bool {
	if x != nil {
		return x.IsFinal
	}
	return false
}

func (x *StreamingRecognitionResult) GetStability() float32 {
	if x != nil {
		return x.Stability
	}
	return 0
}

func (x *StreamingRecognitionResult) GetResultEndOffset() *durationpb.Duration {
	if x != nil {
		return x.ResultEndOffset
	}
	return nil
}

func (x *StreamingRecognitionResult) GetChannelTag() int32 {
	if x != nil {
		return x.ChannelTag
	}
	return 0
}

func (x *StreamingRecognitionResult) GetLanguageCode() string {
	if x != nil {
		return x.LanguageCode
	}
	return ""
}

// `StreamingRecognizeResponse` is the only message returned to the client by
// `StreamingRecognize`. A series of zero or more `StreamingRecognizeResponse`
// messages are streamed back to the client. If there is no recognizable
// audio then no messages are streamed back to the client.
//
// Here are some examples of `StreamingRecognizeResponse`s that might
// be returned while processing audio:
//
// 1. results { alternatives { transcript: "tube" } stability: 0.01 }
//
// 2. results { alternatives { transcript: "to be a" } stability: 0.01 }
//
//  3. results { alternatives { transcript: "to be" } stability: 0.9 }
//     results { alternatives { transcript: " or not to be" } stability: 0.01 }
//
//  4. results { alternatives { transcript: "to be or not to be"
//     confidence: 0.92 }
//     alternatives { transcript: "to bee or not to bee" }
//     is_final: true }
//
// 5. results { alternatives { transcript: " that's" } stability: 0.01 }
//
//  6. results { alternatives { transcript: " that is" } stability: 0.9 }
//     results { alternatives { transcript: " the question" } stability: 0.01 }
//
//  7. results { alternatives { transcript: " that is the question"
//     confidence: 0.98 }
//     alternatives { transcript: " that was the question" }
//     is_final: true }
//
// Notes:
//
//   - Only two of the above responses #4 and #7 contain final results; they are
//     indicated by `is_final: true`. Concatenating these together generates the
//     full transcript: "to be or not to be that is the question".
//
//   - The others contain interim `results`. #3 and #6 contain two interim
//     `results`: the first portion has a high stability and is less likely to
//     change; the second portion has a low stability and is very likely to
//     change. A UI designer might choose to show only high stability `results`.
//
//   - The specific `stability` and `confidence` values shown above are only for
//     illustrative purposes. Actual values may vary.
//
//   - In each response, only one of these fields will be set:
//     `error`,
//     `speech_event_type`, or
//     one or more (repeated) `results`.
type StreamingRecognizeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// This repeated list contains zero or more results that
	// correspond to consecutive portions of the audio currently being processed.
	// It contains zero or one
	// [is_final][google.cloud.speech.v2.StreamingRecognitionResult.is_final]=`true`
	// result (the newly settled portion), followed by zero or more
	// [is_final][google.cloud.speech.v2.StreamingRecognitionResult.is_final]=`false`
	// results (the interim results).
	Results []*StreamingRecognitionResult `protobuf:"bytes,6,rep,name=results,proto3" json:"results,omitempty"`
	// Indicates the type of speech event.
	SpeechEventType StreamingRecognizeResponse_SpeechEventType `protobuf:"varint,3,opt,name=speech_event_type,json=speechEventType,proto3,enum=google.cloud.speech.v2.StreamingRecognizeResponse_SpeechEventType" json:"speech_event_type,omitempty"`
	// Time offset between the beginning of the audio and event emission.
	SpeechEventOffset *durationpb.Duration `protobuf:"bytes,7,opt,name=speech_event_offset,json=speechEventOffset,proto3" json:"speech_event_offset,omitempty"`
	// Metadata about the recognition.
	Metadata *RecognitionResponseMetadata `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"`
}

func (x *StreamingRecognizeResponse) Reset() {
	*x = StreamingRecognizeResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StreamingRecognizeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamingRecognizeResponse) ProtoMessage() {}

func (x *StreamingRecognizeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 StreamingRecognizeResponse.ProtoReflect.Descriptor instead.
func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{31}
}

func (x *StreamingRecognizeResponse) GetResults() []*StreamingRecognitionResult {
	if x != nil {
		return x.Results
	}
	return nil
}

func (x *StreamingRecognizeResponse) GetSpeechEventType() StreamingRecognizeResponse_SpeechEventType {
	if x != nil {
		return x.SpeechEventType
	}
	return StreamingRecognizeResponse_SPEECH_EVENT_TYPE_UNSPECIFIED
}

func (x *StreamingRecognizeResponse) GetSpeechEventOffset() *durationpb.Duration {
	if x != nil {
		return x.SpeechEventOffset
	}
	return nil
}

func (x *StreamingRecognizeResponse) GetMetadata() *RecognitionResponseMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

// Message representing the config for the Speech-to-Text API. This includes an
// optional [KMS key](https://cloud.google.com/kms/docs/resource-hierarchy#keys)
// with which incoming data will be encrypted.
type Config struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. The name of the config resource. There is exactly one config
	// resource per project per location. The expected format is
	// `projects/{project}/locations/{location}/config`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Optional. An optional [KMS key
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) that if
	// present, will be used to encrypt Speech-to-Text resources at-rest. Updating
	// this key will not encrypt existing resources using this key; only new
	// resources will be encrypted using this key. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
	KmsKeyName string `protobuf:"bytes,2,opt,name=kms_key_name,json=kmsKeyName,proto3" json:"kms_key_name,omitempty"`
	// Output only. The most recent time this resource was modified.
	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
}

func (x *Config) Reset() {
	*x = Config{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Config) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Config) ProtoMessage() {}

func (x *Config) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 Config.ProtoReflect.Descriptor instead.
func (*Config) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{32}
}

func (x *Config) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Config) GetKmsKeyName() string {
	if x != nil {
		return x.KmsKeyName
	}
	return ""
}

func (x *Config) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

// Request message for the
// [GetConfig][google.cloud.speech.v2.Speech.GetConfig] method.
type GetConfigRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the config to retrieve. There is exactly one config
	// resource per project per location. The expected format is
	// `projects/{project}/locations/{location}/config`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetConfigRequest) Reset() {
	*x = GetConfigRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetConfigRequest) ProtoMessage() {}

func (x *GetConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 GetConfigRequest.ProtoReflect.Descriptor instead.
func (*GetConfigRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{33}
}

func (x *GetConfigRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for the
// [UpdateConfig][google.cloud.speech.v2.Speech.UpdateConfig] method.
type UpdateConfigRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The config to update.
	//
	// The config's `name` field is used to identify the config to be updated.
	// The expected format is `projects/{project}/locations/{location}/config`.
	Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,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 *UpdateConfigRequest) Reset() {
	*x = UpdateConfigRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateConfigRequest) ProtoMessage() {}

func (x *UpdateConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[34]
	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 UpdateConfigRequest.ProtoReflect.Descriptor instead.
func (*UpdateConfigRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{34}
}

func (x *UpdateConfigRequest) GetConfig() *Config {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *UpdateConfigRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

// CustomClass for biasing in speech recognition. Used to define a set of words
// or phrases that represents a common concept or theme likely to appear in your
// audio, for example a list of passenger ship names.
type CustomClass struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. The resource name of the CustomClass.
	// Format:
	// `projects/{project}/locations/{location}/customClasses/{custom_class}`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Output only. System-assigned unique identifier for the CustomClass.
	Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
	// User-settable, human-readable name for the CustomClass. Must be 63
	// characters or less.
	DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// A collection of class items.
	Items []*CustomClass_ClassItem `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"`
	// Output only. The CustomClass lifecycle state.
	State CustomClass_State `protobuf:"varint,15,opt,name=state,proto3,enum=google.cloud.speech.v2.CustomClass_State" json:"state,omitempty"`
	// Output only. Creation time.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Output only. The most recent time this resource was modified.
	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	// Output only. The time at which this resource was requested for deletion.
	DeleteTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"`
	// Output only. The time at which this resource will be purged.
	ExpireTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
	// Allows users to store small amounts of arbitrary data.
	// Both the key and the value must be 63 characters or less each.
	// At most 100 annotations.
	Annotations map[string]string `protobuf:"bytes,10,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Output only. This checksum is computed by the server based on the value of
	// other fields. This may be sent on update, undelete, and delete requests to
	// ensure the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,11,opt,name=etag,proto3" json:"etag,omitempty"`
	// Output only. Whether or not this CustomClass is in the process of being
	// updated.
	Reconciling bool `protobuf:"varint,12,opt,name=reconciling,proto3" json:"reconciling,omitempty"`
	// Output only. The [KMS key
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) with which
	// the CustomClass is encrypted. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
	KmsKeyName string `protobuf:"bytes,13,opt,name=kms_key_name,json=kmsKeyName,proto3" json:"kms_key_name,omitempty"`
	// Output only. The [KMS key version
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#key_versions)
	// with which the CustomClass is encrypted. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`.
	KmsKeyVersionName string `protobuf:"bytes,14,opt,name=kms_key_version_name,json=kmsKeyVersionName,proto3" json:"kms_key_version_name,omitempty"`
}

func (x *CustomClass) Reset() {
	*x = CustomClass{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CustomClass) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CustomClass) ProtoMessage() {}

func (x *CustomClass) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[35]
	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 CustomClass.ProtoReflect.Descriptor instead.
func (*CustomClass) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{35}
}

func (x *CustomClass) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CustomClass) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *CustomClass) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *CustomClass) GetItems() []*CustomClass_ClassItem {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *CustomClass) GetState() CustomClass_State {
	if x != nil {
		return x.State
	}
	return CustomClass_STATE_UNSPECIFIED
}

func (x *CustomClass) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *CustomClass) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

func (x *CustomClass) GetDeleteTime() *timestamppb.Timestamp {
	if x != nil {
		return x.DeleteTime
	}
	return nil
}

func (x *CustomClass) GetExpireTime() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpireTime
	}
	return nil
}

func (x *CustomClass) GetAnnotations() map[string]string {
	if x != nil {
		return x.Annotations
	}
	return nil
}

func (x *CustomClass) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

func (x *CustomClass) GetReconciling() bool {
	if x != nil {
		return x.Reconciling
	}
	return false
}

func (x *CustomClass) GetKmsKeyName() string {
	if x != nil {
		return x.KmsKeyName
	}
	return ""
}

func (x *CustomClass) GetKmsKeyVersionName() string {
	if x != nil {
		return x.KmsKeyVersionName
	}
	return ""
}

// PhraseSet for biasing in speech recognition. A PhraseSet is used to provide
// "hints" to the speech recognizer to favor specific words and phrases in the
// results.
type PhraseSet struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. The resource name of the PhraseSet.
	// Format: `projects/{project}/locations/{location}/phraseSets/{phrase_set}`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Output only. System-assigned unique identifier for the PhraseSet.
	Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
	// A list of word and phrases.
	Phrases []*PhraseSet_Phrase `protobuf:"bytes,3,rep,name=phrases,proto3" json:"phrases,omitempty"`
	// Hint Boost. Positive value will increase the probability that a specific
	// phrase will be recognized over other similar sounding phrases. The higher
	// the boost, the higher the chance of false positive recognition as well.
	// Valid `boost` values are between 0 (exclusive) and 20. We recommend using a
	// binary search approach to finding the optimal value for your use case.
	Boost float32 `protobuf:"fixed32,4,opt,name=boost,proto3" json:"boost,omitempty"`
	// User-settable, human-readable name for the PhraseSet. Must be 63
	// characters or less.
	DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Output only. The PhraseSet lifecycle state.
	State PhraseSet_State `protobuf:"varint,15,opt,name=state,proto3,enum=google.cloud.speech.v2.PhraseSet_State" json:"state,omitempty"`
	// Output only. Creation time.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Output only. The most recent time this resource was modified.
	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	// Output only. The time at which this resource was requested for deletion.
	DeleteTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"`
	// Output only. The time at which this resource will be purged.
	ExpireTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
	// Allows users to store small amounts of arbitrary data.
	// Both the key and the value must be 63 characters or less each.
	// At most 100 annotations.
	Annotations map[string]string `protobuf:"bytes,10,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Output only. This checksum is computed by the server based on the value of
	// other fields. This may be sent on update, undelete, and delete requests to
	// ensure the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,11,opt,name=etag,proto3" json:"etag,omitempty"`
	// Output only. Whether or not this PhraseSet is in the process of being
	// updated.
	Reconciling bool `protobuf:"varint,12,opt,name=reconciling,proto3" json:"reconciling,omitempty"`
	// Output only. The [KMS key
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) with which
	// the PhraseSet is encrypted. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
	KmsKeyName string `protobuf:"bytes,13,opt,name=kms_key_name,json=kmsKeyName,proto3" json:"kms_key_name,omitempty"`
	// Output only. The [KMS key version
	// name](https://cloud.google.com/kms/docs/resource-hierarchy#key_versions)
	// with which the PhraseSet is encrypted. The expected format is
	// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`.
	KmsKeyVersionName string `protobuf:"bytes,14,opt,name=kms_key_version_name,json=kmsKeyVersionName,proto3" json:"kms_key_version_name,omitempty"`
}

func (x *PhraseSet) Reset() {
	*x = PhraseSet{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PhraseSet) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PhraseSet) ProtoMessage() {}

func (x *PhraseSet) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[36]
	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 PhraseSet.ProtoReflect.Descriptor instead.
func (*PhraseSet) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{36}
}

func (x *PhraseSet) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *PhraseSet) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *PhraseSet) GetPhrases() []*PhraseSet_Phrase {
	if x != nil {
		return x.Phrases
	}
	return nil
}

func (x *PhraseSet) GetBoost() float32 {
	if x != nil {
		return x.Boost
	}
	return 0
}

func (x *PhraseSet) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *PhraseSet) GetState() PhraseSet_State {
	if x != nil {
		return x.State
	}
	return PhraseSet_STATE_UNSPECIFIED
}

func (x *PhraseSet) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *PhraseSet) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

func (x *PhraseSet) GetDeleteTime() *timestamppb.Timestamp {
	if x != nil {
		return x.DeleteTime
	}
	return nil
}

func (x *PhraseSet) GetExpireTime() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpireTime
	}
	return nil
}

func (x *PhraseSet) GetAnnotations() map[string]string {
	if x != nil {
		return x.Annotations
	}
	return nil
}

func (x *PhraseSet) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

func (x *PhraseSet) GetReconciling() bool {
	if x != nil {
		return x.Reconciling
	}
	return false
}

func (x *PhraseSet) GetKmsKeyName() string {
	if x != nil {
		return x.KmsKeyName
	}
	return ""
}

func (x *PhraseSet) GetKmsKeyVersionName() string {
	if x != nil {
		return x.KmsKeyVersionName
	}
	return ""
}

// Request message for the
// [CreateCustomClass][google.cloud.speech.v2.Speech.CreateCustomClass] method.
type CreateCustomClassRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The CustomClass to create.
	CustomClass *CustomClass `protobuf:"bytes,1,opt,name=custom_class,json=customClass,proto3" json:"custom_class,omitempty"`
	// If set, validate the request and preview the CustomClass, but do not
	// actually create it.
	ValidateOnly bool `protobuf:"varint,2,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// The ID to use for the CustomClass, which will become the final component of
	// the CustomClass's resource name.
	//
	// This value should be 4-63 characters, and valid characters
	// are /[a-z][0-9]-/.
	CustomClassId string `protobuf:"bytes,3,opt,name=custom_class_id,json=customClassId,proto3" json:"custom_class_id,omitempty"`
	// Required. The project and location where this CustomClass will be created.
	// The expected format is `projects/{project}/locations/{location}`.
	Parent string `protobuf:"bytes,4,opt,name=parent,proto3" json:"parent,omitempty"`
}

func (x *CreateCustomClassRequest) Reset() {
	*x = CreateCustomClassRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateCustomClassRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateCustomClassRequest) ProtoMessage() {}

func (x *CreateCustomClassRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 CreateCustomClassRequest.ProtoReflect.Descriptor instead.
func (*CreateCustomClassRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{37}
}

func (x *CreateCustomClassRequest) GetCustomClass() *CustomClass {
	if x != nil {
		return x.CustomClass
	}
	return nil
}

func (x *CreateCustomClassRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *CreateCustomClassRequest) GetCustomClassId() string {
	if x != nil {
		return x.CustomClassId
	}
	return ""
}

func (x *CreateCustomClassRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

// Request message for the
// [ListCustomClasses][google.cloud.speech.v2.Speech.ListCustomClasses] method.
type ListCustomClassesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The project and location of CustomClass resources to list. The
	// expected format is `projects/{project}/locations/{location}`.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Number of results per requests. A valid page_size ranges from 0 to 20
	// inclusive. If the page_size is zero or unspecified, a page size of 5 will
	// be chosen. If the page size exceeds 20, it will be coerced down to 20. 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"`
	// A page token, received from a previous
	// [ListCustomClasses][google.cloud.speech.v2.Speech.ListCustomClasses] call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to
	// [ListCustomClasses][google.cloud.speech.v2.Speech.ListCustomClasses] 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"`
	// Whether, or not, to show resources that have been deleted.
	ShowDeleted bool `protobuf:"varint,4,opt,name=show_deleted,json=showDeleted,proto3" json:"show_deleted,omitempty"`
}

func (x *ListCustomClassesRequest) Reset() {
	*x = ListCustomClassesRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListCustomClassesRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListCustomClassesRequest) ProtoMessage() {}

func (x *ListCustomClassesRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 ListCustomClassesRequest.ProtoReflect.Descriptor instead.
func (*ListCustomClassesRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{38}
}

func (x *ListCustomClassesRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListCustomClassesRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListCustomClassesRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *ListCustomClassesRequest) GetShowDeleted() bool {
	if x != nil {
		return x.ShowDeleted
	}
	return false
}

// Response message for the
// [ListCustomClasses][google.cloud.speech.v2.Speech.ListCustomClasses] method.
type ListCustomClassesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The list of requested CustomClasses.
	CustomClasses []*CustomClass `protobuf:"bytes,1,rep,name=custom_classes,json=customClasses,proto3" json:"custom_classes,omitempty"`
	// A token, which can be sent as
	// [page_token][google.cloud.speech.v2.ListCustomClassesRequest.page_token] to
	// retrieve the next page. If this field is omitted, there are no subsequent
	// pages. This token expires after 72 hours.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListCustomClassesResponse) Reset() {
	*x = ListCustomClassesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListCustomClassesResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListCustomClassesResponse) ProtoMessage() {}

func (x *ListCustomClassesResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 ListCustomClassesResponse.ProtoReflect.Descriptor instead.
func (*ListCustomClassesResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{39}
}

func (x *ListCustomClassesResponse) GetCustomClasses() []*CustomClass {
	if x != nil {
		return x.CustomClasses
	}
	return nil
}

func (x *ListCustomClassesResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// Request message for the
// [GetCustomClass][google.cloud.speech.v2.Speech.GetCustomClass] method.
type GetCustomClassRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the CustomClass to retrieve. The expected format is
	// `projects/{project}/locations/{location}/customClasses/{custom_class}`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetCustomClassRequest) Reset() {
	*x = GetCustomClassRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetCustomClassRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetCustomClassRequest) ProtoMessage() {}

func (x *GetCustomClassRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 GetCustomClassRequest.ProtoReflect.Descriptor instead.
func (*GetCustomClassRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{40}
}

func (x *GetCustomClassRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for the
// [UpdateCustomClass][google.cloud.speech.v2.Speech.UpdateCustomClass] method.
type UpdateCustomClassRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The CustomClass to update.
	//
	// The CustomClass's `name` field is used to identify the CustomClass to
	// update. Format:
	// `projects/{project}/locations/{location}/customClasses/{custom_class}`.
	CustomClass *CustomClass `protobuf:"bytes,1,opt,name=custom_class,json=customClass,proto3" json:"custom_class,omitempty"`
	// The list of fields to be updated. If empty, all fields are considered for
	// update.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
	// If set, validate the request and preview the updated CustomClass, but do
	// not actually update it.
	ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}

func (x *UpdateCustomClassRequest) Reset() {
	*x = UpdateCustomClassRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateCustomClassRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateCustomClassRequest) ProtoMessage() {}

func (x *UpdateCustomClassRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 UpdateCustomClassRequest.ProtoReflect.Descriptor instead.
func (*UpdateCustomClassRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{41}
}

func (x *UpdateCustomClassRequest) GetCustomClass() *CustomClass {
	if x != nil {
		return x.CustomClass
	}
	return nil
}

func (x *UpdateCustomClassRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

func (x *UpdateCustomClassRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

// Request message for the
// [DeleteCustomClass][google.cloud.speech.v2.Speech.DeleteCustomClass] method.
type DeleteCustomClassRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the CustomClass to delete.
	// Format:
	// `projects/{project}/locations/{location}/customClasses/{custom_class}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// If set, validate the request and preview the deleted CustomClass, but do
	// not actually delete it.
	ValidateOnly bool `protobuf:"varint,2,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// If set to true, and the CustomClass is not found, the request will succeed
	// and  be a no-op (no Operation is recorded in this case).
	AllowMissing bool `protobuf:"varint,4,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"`
	// This checksum is computed by the server based on the value of other
	// fields. This may be sent on update, undelete, and delete requests to ensure
	// the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,3,opt,name=etag,proto3" json:"etag,omitempty"`
}

func (x *DeleteCustomClassRequest) Reset() {
	*x = DeleteCustomClassRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteCustomClassRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteCustomClassRequest) ProtoMessage() {}

func (x *DeleteCustomClassRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 DeleteCustomClassRequest.ProtoReflect.Descriptor instead.
func (*DeleteCustomClassRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{42}
}

func (x *DeleteCustomClassRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DeleteCustomClassRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *DeleteCustomClassRequest) GetAllowMissing() bool {
	if x != nil {
		return x.AllowMissing
	}
	return false
}

func (x *DeleteCustomClassRequest) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

// Request message for the
// [UndeleteCustomClass][google.cloud.speech.v2.Speech.UndeleteCustomClass]
// method.
type UndeleteCustomClassRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the CustomClass to undelete.
	// Format:
	// `projects/{project}/locations/{location}/customClasses/{custom_class}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// If set, validate the request and preview the undeleted CustomClass, but do
	// not actually undelete it.
	ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// This checksum is computed by the server based on the value of other
	// fields. This may be sent on update, undelete, and delete requests to ensure
	// the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,4,opt,name=etag,proto3" json:"etag,omitempty"`
}

func (x *UndeleteCustomClassRequest) Reset() {
	*x = UndeleteCustomClassRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UndeleteCustomClassRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UndeleteCustomClassRequest) ProtoMessage() {}

func (x *UndeleteCustomClassRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 UndeleteCustomClassRequest.ProtoReflect.Descriptor instead.
func (*UndeleteCustomClassRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{43}
}

func (x *UndeleteCustomClassRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UndeleteCustomClassRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *UndeleteCustomClassRequest) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

// Request message for the
// [CreatePhraseSet][google.cloud.speech.v2.Speech.CreatePhraseSet] method.
type CreatePhraseSetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The PhraseSet to create.
	PhraseSet *PhraseSet `protobuf:"bytes,1,opt,name=phrase_set,json=phraseSet,proto3" json:"phrase_set,omitempty"`
	// If set, validate the request and preview the PhraseSet, but do not
	// actually create it.
	ValidateOnly bool `protobuf:"varint,2,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// The ID to use for the PhraseSet, which will become the final component of
	// the PhraseSet's resource name.
	//
	// This value should be 4-63 characters, and valid characters
	// are /[a-z][0-9]-/.
	PhraseSetId string `protobuf:"bytes,3,opt,name=phrase_set_id,json=phraseSetId,proto3" json:"phrase_set_id,omitempty"`
	// Required. The project and location where this PhraseSet will be created.
	// The expected format is `projects/{project}/locations/{location}`.
	Parent string `protobuf:"bytes,4,opt,name=parent,proto3" json:"parent,omitempty"`
}

func (x *CreatePhraseSetRequest) Reset() {
	*x = CreatePhraseSetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreatePhraseSetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreatePhraseSetRequest) ProtoMessage() {}

func (x *CreatePhraseSetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[44]
	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 CreatePhraseSetRequest.ProtoReflect.Descriptor instead.
func (*CreatePhraseSetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{44}
}

func (x *CreatePhraseSetRequest) GetPhraseSet() *PhraseSet {
	if x != nil {
		return x.PhraseSet
	}
	return nil
}

func (x *CreatePhraseSetRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *CreatePhraseSetRequest) GetPhraseSetId() string {
	if x != nil {
		return x.PhraseSetId
	}
	return ""
}

func (x *CreatePhraseSetRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

// Request message for the
// [ListPhraseSets][google.cloud.speech.v2.Speech.ListPhraseSets] method.
type ListPhraseSetsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The project and location of PhraseSet resources to list. The
	// expected format is `projects/{project}/locations/{location}`.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The maximum number of PhraseSets to return. The service may return fewer
	// than this value. If unspecified, at most 20 PhraseSets will be returned.
	// The maximum value is 20; values above 20 will be coerced to 20.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token, received from a previous
	// [ListPhraseSets][google.cloud.speech.v2.Speech.ListPhraseSets] call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to
	// [ListPhraseSets][google.cloud.speech.v2.Speech.ListPhraseSets] 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"`
	// Whether, or not, to show resources that have been deleted.
	ShowDeleted bool `protobuf:"varint,4,opt,name=show_deleted,json=showDeleted,proto3" json:"show_deleted,omitempty"`
}

func (x *ListPhraseSetsRequest) Reset() {
	*x = ListPhraseSetsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListPhraseSetsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListPhraseSetsRequest) ProtoMessage() {}

func (x *ListPhraseSetsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[45]
	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 ListPhraseSetsRequest.ProtoReflect.Descriptor instead.
func (*ListPhraseSetsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{45}
}

func (x *ListPhraseSetsRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListPhraseSetsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListPhraseSetsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *ListPhraseSetsRequest) GetShowDeleted() bool {
	if x != nil {
		return x.ShowDeleted
	}
	return false
}

// Response message for the
// [ListPhraseSets][google.cloud.speech.v2.Speech.ListPhraseSets] method.
type ListPhraseSetsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The list of requested PhraseSets.
	PhraseSets []*PhraseSet `protobuf:"bytes,1,rep,name=phrase_sets,json=phraseSets,proto3" json:"phrase_sets,omitempty"`
	// A token, which can be sent as
	// [page_token][google.cloud.speech.v2.ListPhraseSetsRequest.page_token] to
	// retrieve the next page. If this field is omitted, there are no subsequent
	// pages. This token expires after 72 hours.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListPhraseSetsResponse) Reset() {
	*x = ListPhraseSetsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListPhraseSetsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListPhraseSetsResponse) ProtoMessage() {}

func (x *ListPhraseSetsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[46]
	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 ListPhraseSetsResponse.ProtoReflect.Descriptor instead.
func (*ListPhraseSetsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{46}
}

func (x *ListPhraseSetsResponse) GetPhraseSets() []*PhraseSet {
	if x != nil {
		return x.PhraseSets
	}
	return nil
}

func (x *ListPhraseSetsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// Request message for the
// [GetPhraseSet][google.cloud.speech.v2.Speech.GetPhraseSet] method.
type GetPhraseSetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the PhraseSet to retrieve. The expected format is
	// `projects/{project}/locations/{location}/phraseSets/{phrase_set}`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetPhraseSetRequest) Reset() {
	*x = GetPhraseSetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPhraseSetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPhraseSetRequest) ProtoMessage() {}

func (x *GetPhraseSetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[47]
	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 GetPhraseSetRequest.ProtoReflect.Descriptor instead.
func (*GetPhraseSetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{47}
}

func (x *GetPhraseSetRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Request message for the
// [UpdatePhraseSet][google.cloud.speech.v2.Speech.UpdatePhraseSet] method.
type UpdatePhraseSetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The PhraseSet to update.
	//
	// The PhraseSet's `name` field is used to identify the PhraseSet to update.
	// Format: `projects/{project}/locations/{location}/phraseSets/{phrase_set}`.
	PhraseSet *PhraseSet `protobuf:"bytes,1,opt,name=phrase_set,json=phraseSet,proto3" json:"phrase_set,omitempty"`
	// The list of fields to update. If empty, all non-default valued fields are
	// considered for update. Use `*` to update the entire PhraseSet resource.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
	// If set, validate the request and preview the updated PhraseSet, but do not
	// actually update it.
	ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}

func (x *UpdatePhraseSetRequest) Reset() {
	*x = UpdatePhraseSetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdatePhraseSetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdatePhraseSetRequest) ProtoMessage() {}

func (x *UpdatePhraseSetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[48]
	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 UpdatePhraseSetRequest.ProtoReflect.Descriptor instead.
func (*UpdatePhraseSetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{48}
}

func (x *UpdatePhraseSetRequest) GetPhraseSet() *PhraseSet {
	if x != nil {
		return x.PhraseSet
	}
	return nil
}

func (x *UpdatePhraseSetRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

func (x *UpdatePhraseSetRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

// Request message for the
// [DeletePhraseSet][google.cloud.speech.v2.Speech.DeletePhraseSet] method.
type DeletePhraseSetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the PhraseSet to delete.
	// Format: `projects/{project}/locations/{location}/phraseSets/{phrase_set}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// If set, validate the request and preview the deleted PhraseSet, but do not
	// actually delete it.
	ValidateOnly bool `protobuf:"varint,2,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// If set to true, and the PhraseSet is not found, the request will succeed
	// and  be a no-op (no Operation is recorded in this case).
	AllowMissing bool `protobuf:"varint,4,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"`
	// This checksum is computed by the server based on the value of other
	// fields. This may be sent on update, undelete, and delete requests to ensure
	// the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,3,opt,name=etag,proto3" json:"etag,omitempty"`
}

func (x *DeletePhraseSetRequest) Reset() {
	*x = DeletePhraseSetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeletePhraseSetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeletePhraseSetRequest) ProtoMessage() {}

func (x *DeletePhraseSetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[49]
	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 DeletePhraseSetRequest.ProtoReflect.Descriptor instead.
func (*DeletePhraseSetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{49}
}

func (x *DeletePhraseSetRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DeletePhraseSetRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *DeletePhraseSetRequest) GetAllowMissing() bool {
	if x != nil {
		return x.AllowMissing
	}
	return false
}

func (x *DeletePhraseSetRequest) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

// Request message for the
// [UndeletePhraseSet][google.cloud.speech.v2.Speech.UndeletePhraseSet]
// method.
type UndeletePhraseSetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the PhraseSet to undelete.
	// Format: `projects/{project}/locations/{location}/phraseSets/{phrase_set}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// If set, validate the request and preview the undeleted PhraseSet, but do
	// not actually undelete it.
	ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
	// This checksum is computed by the server based on the value of other
	// fields. This may be sent on update, undelete, and delete requests to ensure
	// the client has an up-to-date value before proceeding.
	Etag string `protobuf:"bytes,4,opt,name=etag,proto3" json:"etag,omitempty"`
}

func (x *UndeletePhraseSetRequest) Reset() {
	*x = UndeletePhraseSetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UndeletePhraseSetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UndeletePhraseSetRequest) ProtoMessage() {}

func (x *UndeletePhraseSetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 UndeletePhraseSetRequest.ProtoReflect.Descriptor instead.
func (*UndeletePhraseSetRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{50}
}

func (x *UndeletePhraseSetRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UndeletePhraseSetRequest) GetValidateOnly() bool {
	if x != nil {
		return x.ValidateOnly
	}
	return false
}

func (x *UndeletePhraseSetRequest) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

// A biasing phrase set, which can be either a string referencing the name of
// an existing phrase set resource, or an inline definition of a phrase set.
type SpeechAdaptation_AdaptationPhraseSet struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//
	//	*SpeechAdaptation_AdaptationPhraseSet_PhraseSet
	//	*SpeechAdaptation_AdaptationPhraseSet_InlinePhraseSet
	Value isSpeechAdaptation_AdaptationPhraseSet_Value `protobuf_oneof:"value"`
}

func (x *SpeechAdaptation_AdaptationPhraseSet) Reset() {
	*x = SpeechAdaptation_AdaptationPhraseSet{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SpeechAdaptation_AdaptationPhraseSet) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SpeechAdaptation_AdaptationPhraseSet) ProtoMessage() {}

func (x *SpeechAdaptation_AdaptationPhraseSet) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[52]
	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 SpeechAdaptation_AdaptationPhraseSet.ProtoReflect.Descriptor instead.
func (*SpeechAdaptation_AdaptationPhraseSet) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{13, 0}
}

func (m *SpeechAdaptation_AdaptationPhraseSet) GetValue() isSpeechAdaptation_AdaptationPhraseSet_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *SpeechAdaptation_AdaptationPhraseSet) GetPhraseSet() string {
	if x, ok := x.GetValue().(*SpeechAdaptation_AdaptationPhraseSet_PhraseSet); ok {
		return x.PhraseSet
	}
	return ""
}

func (x *SpeechAdaptation_AdaptationPhraseSet) GetInlinePhraseSet() *PhraseSet {
	if x, ok := x.GetValue().(*SpeechAdaptation_AdaptationPhraseSet_InlinePhraseSet); ok {
		return x.InlinePhraseSet
	}
	return nil
}

type isSpeechAdaptation_AdaptationPhraseSet_Value interface {
	isSpeechAdaptation_AdaptationPhraseSet_Value()
}

type SpeechAdaptation_AdaptationPhraseSet_PhraseSet struct {
	// The name of an existing phrase set resource. The user must have read
	// access to the resource and it must not be deleted.
	PhraseSet string `protobuf:"bytes,1,opt,name=phrase_set,json=phraseSet,proto3,oneof"`
}

type SpeechAdaptation_AdaptationPhraseSet_InlinePhraseSet struct {
	// An inline defined phrase set.
	InlinePhraseSet *PhraseSet `protobuf:"bytes,2,opt,name=inline_phrase_set,json=inlinePhraseSet,proto3,oneof"`
}

func (*SpeechAdaptation_AdaptationPhraseSet_PhraseSet) isSpeechAdaptation_AdaptationPhraseSet_Value() {
}

func (*SpeechAdaptation_AdaptationPhraseSet_InlinePhraseSet) isSpeechAdaptation_AdaptationPhraseSet_Value() {
}

// Events that a timeout can be set on for voice activity.
type StreamingRecognitionFeatures_VoiceActivityTimeout struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Duration to timeout the stream if no speech begins. If this is set and
	// no speech is detected in this duration at the start of the stream, the
	// server will close the stream.
	SpeechStartTimeout *durationpb.Duration `protobuf:"bytes,1,opt,name=speech_start_timeout,json=speechStartTimeout,proto3" json:"speech_start_timeout,omitempty"`
	// Duration to timeout the stream after speech ends. If this is set and no
	// speech is detected in this duration after speech was detected, the server
	// will close the stream.
	SpeechEndTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=speech_end_timeout,json=speechEndTimeout,proto3" json:"speech_end_timeout,omitempty"`
}

func (x *StreamingRecognitionFeatures_VoiceActivityTimeout) Reset() {
	*x = StreamingRecognitionFeatures_VoiceActivityTimeout{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StreamingRecognitionFeatures_VoiceActivityTimeout) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamingRecognitionFeatures_VoiceActivityTimeout) ProtoMessage() {}

func (x *StreamingRecognitionFeatures_VoiceActivityTimeout) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 StreamingRecognitionFeatures_VoiceActivityTimeout.ProtoReflect.Descriptor instead.
func (*StreamingRecognitionFeatures_VoiceActivityTimeout) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{21, 0}
}

func (x *StreamingRecognitionFeatures_VoiceActivityTimeout) GetSpeechStartTimeout() *durationpb.Duration {
	if x != nil {
		return x.SpeechStartTimeout
	}
	return nil
}

func (x *StreamingRecognitionFeatures_VoiceActivityTimeout) GetSpeechEndTimeout() *durationpb.Duration {
	if x != nil {
		return x.SpeechEndTimeout
	}
	return nil
}

// An item of the class.
type CustomClass_ClassItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The class item's value.
	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *CustomClass_ClassItem) Reset() {
	*x = CustomClass_ClassItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[56]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CustomClass_ClassItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CustomClass_ClassItem) ProtoMessage() {}

func (x *CustomClass_ClassItem) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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 CustomClass_ClassItem.ProtoReflect.Descriptor instead.
func (*CustomClass_ClassItem) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{35, 0}
}

func (x *CustomClass_ClassItem) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

// A Phrase contains words and phrase "hints" so that the speech recognition
// is more likely to recognize them. This can be used to improve the accuracy
// for specific words and phrases, for example, if specific commands are
// typically spoken by the user. This can also be used to add additional words
// to the vocabulary of the recognizer.
//
// List items can also include CustomClass references containing groups of
// words that represent common concepts that occur in natural language.
type PhraseSet_Phrase struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The phrase itself.
	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
	// Hint Boost. Overrides the boost set at the phrase set level.
	// Positive value will increase the probability that a specific phrase will
	// be recognized over other similar sounding phrases. The higher the boost,
	// the higher the chance of false positive recognition as well. Negative
	// boost values would correspond to anti-biasing. Anti-biasing is not
	// enabled, so negative boost will simply be ignored. Though `boost` can
	// accept a wide range of positive values, most use cases are best served
	// with values between 0 and 20. We recommend using a binary search approach
	// to finding the optimal value for your use case. Speech recognition
	// will skip PhraseSets with a boost value of 0.
	Boost float32 `protobuf:"fixed32,2,opt,name=boost,proto3" json:"boost,omitempty"`
}

func (x *PhraseSet_Phrase) Reset() {
	*x = PhraseSet_Phrase{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[58]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PhraseSet_Phrase) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PhraseSet_Phrase) ProtoMessage() {}

func (x *PhraseSet_Phrase) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_speech_v2_cloud_speech_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)
}

// Deprecated: Use PhraseSet_Phrase.ProtoReflect.Descriptor instead.
func (*PhraseSet_Phrase) Descriptor() ([]byte, []int) {
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP(), []int{36, 0}
}

func (x *PhraseSet_Phrase) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *PhraseSet_Phrase) GetBoost() float32 {
	if x != nil {
		return x.Boost
	}
	return 0
}

var File_google_cloud_speech_v2_cloud_speech_proto protoreflect.FileDescriptor

var file_google_cloud_speech_v2_cloud_speech_proto_rawDesc = []byte{
	0x0a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68,
	0x2e, 0x76, 0x32, 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, 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, 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, 0xee, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32,
	0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c,
	0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x5f,
	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e,
	0x69, 0x7a, 0x65, 0x72, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x12, 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, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xb3, 0x10, 0x0a, 0x11, 0x4f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x3b, 0x0a, 0x0b, 0x75,
	0x70, 0x64, 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, 0x75, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x0c,
	0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x26, 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, 0x0a, 0x6b, 0x6d, 0x73, 0x4b,
	0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5e, 0x0a, 0x14, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65,
	0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 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, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x17, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f,
	0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32,
	0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x15, 0x62, 0x61, 0x74, 0x63, 0x68, 0x52,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x6d, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e,
	0x69, 0x7a, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6d,
	0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x7a, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f,
	0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6d, 0x0a,
	0x19, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a,
	0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x48, 0x00, 0x52, 0x17, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67,
	0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x73, 0x0a, 0x1b,
	0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x7a, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x19, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x71, 0x0a, 0x1b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x18, 0x63, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43,
	0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x18, 0x75,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x1b, 0x64, 0x65, 0x6c, 0x65, 0x74,
	0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x72,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00,
	0x52, 0x18, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c,
	0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x77, 0x0a, 0x1d, 0x75, 0x6e,
	0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c,
	0x61, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74,
	0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x6b, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x68,
	0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x6b, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x68, 0x72, 0x61, 0x73,
	0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x12, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72,
	0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6b, 0x0a,
	0x19, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73,
	0x65, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65,
	0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x1b, 0x75, 0x6e,
	0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65,
	0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74,
	0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x48, 0x00, 0x52, 0x18, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72,
	0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a,
	0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x72,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x75, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x65, 0x72,
	0x63, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x67,
	0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x6a, 0x0a, 0x18, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x5f, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65,
	0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f,
	0x67, 0x6e, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52,
	0x16, 0x62, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x4d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xba,
	0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 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, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x77,
	0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b,
	0x73, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x17,
	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x67,
	0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72,
	0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 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, 0x54, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f,
	0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 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, 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, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x17,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67,
	0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63,
	0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 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, 0x12, 0x23, 0x0a,
	0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e,
	0x6c, 0x79, 0x22, 0xb5, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 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, 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, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c,
	0x79, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69,
	0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d,
	0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0x92, 0x01, 0x0a, 0x19, 0x55,
	0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65,
	0x72, 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,
	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, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x65,
	0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22,
	0x88, 0x09, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 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, 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, 0x19, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x0e,
	0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x11,
	0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75,
	0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x64, 0x65, 0x66, 0x61,
	0x75, 0x6c, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x18, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
	0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x12, 0x55, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32,
	0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 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, 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, 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, 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,
	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, 0x40, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x18, 0x0e, 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, 0x65, 0x78, 0x70, 0x69, 0x72,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x0c, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x25,
	0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20,
	0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63,
	0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x0c, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x03,
	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, 0x0a, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x30, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 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, 0x56, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x52, 0x11, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x4e, 0x61, 0x6d, 0x65, 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, 0x22, 0x37, 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, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10,
	0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x04, 0x3a, 0x6a,
	0xea, 0x41, 0x67, 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, 0x52, 0x01, 0x01, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x75,
	0x74, 0x6f, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa7, 0x02, 0x0a, 0x16, 0x45, 0x78, 0x70, 0x6c, 0x69,
	0x63, 0x69, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x12, 0x5d, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70,
	0x6c, 0x69, 0x63, 0x69, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e,
	0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67,
	0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f,
	0x68, 0x65, 0x72, 0x74, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x61, 0x6d,
	0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x48, 0x65, 0x72, 0x74, 0x7a, 0x12, 0x2e, 0x0a, 0x13,
	0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x61, 0x75, 0x64, 0x69, 0x6f,
	0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x52, 0x0a, 0x0d,
	0x41, 0x75, 0x64, 0x69, 0x6f, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a,
	0x1a, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f,
	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a,
	0x08, 0x4c, 0x49, 0x4e, 0x45, 0x41, 0x52, 0x31, 0x36, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4d,
	0x55, 0x4c, 0x41, 0x57, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4c, 0x41, 0x57, 0x10, 0x03,
	0x22, 0x7c, 0x0a, 0x18, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x44, 0x69, 0x61, 0x72, 0x69,
	0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x11,
	0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x6d, 0x69,
	0x6e, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a,
	0x11, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x6d,
	0x61, 0x78, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb5,
	0x05, 0x0a, 0x13, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x66, 0x61, 0x6e,
	0x69, 0x74, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x61, 0x6e, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x12, 0x37, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x64,
	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x54,
	0x69, 0x6d, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x6e,
	0x61, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64,
	0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65,
	0x12, 0x40, 0x0a, 0x1c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x6d,
	0x61, 0x74, 0x69, 0x63, 0x5f, 0x70, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75,
	0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x50, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x6f,
	0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x6f,
	0x6b, 0x65, 0x6e, 0x50, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30,
	0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x6b, 0x65, 0x6e, 0x5f,
	0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x6e,
	0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x73,
	0x12, 0x6a, 0x0a, 0x12, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x5f, 0x0a, 0x12,
	0x64, 0x69, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76,
	0x32, 0x2e, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x44, 0x69, 0x61, 0x72, 0x69, 0x7a, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x64, 0x69, 0x61, 0x72,
	0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a,
	0x10, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65,
	0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x41, 0x6c, 0x74, 0x65,
	0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x10, 0x4d, 0x75, 0x6c, 0x74,
	0x69, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x1e,
	0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x4f,
	0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
	0x12, 0x24, 0x0a, 0x20, 0x53, 0x45, 0x50, 0x41, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x43,
	0x4f, 0x47, 0x4e, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x48, 0x41,
	0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x01, 0x22, 0xf6, 0x02, 0x0a, 0x10, 0x53, 0x70, 0x65, 0x65, 0x63,
	0x68, 0x41, 0x64, 0x61, 0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x0b, 0x70,
	0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68,
	0x41, 0x64, 0x61, 0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0a,
	0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0e, 0x63, 0x75,
	0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43,
	0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x1a, 0xb6, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x61, 0x70, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x12, 0x45,
	0x0a, 0x0a, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50,
	0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x09, 0x70, 0x68, 0x72, 0x61,
	0x73, 0x65, 0x53, 0x65, 0x74, 0x12, 0x4f, 0x0a, 0x11, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f,
	0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65,
	0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x68, 0x72,
	0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
	0x8b, 0x03, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x64, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x64, 0x65,
	0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x74,
	0x6f, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x44, 0x65, 0x63,
	0x6f, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6a, 0x0a, 0x18, 0x65,
	0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67,
	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65,
	0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x44,
	0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52,
	0x16, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e,
	0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
	0x12, 0x48, 0x0a, 0x0a, 0x61, 0x64, 0x61, 0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70,
	0x65, 0x65, 0x63, 0x68, 0x41, 0x64, 0x61, 0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a,
	0x61, 0x64, 0x61, 0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x64, 0x65,
	0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9c, 0x02,
	0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x48, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 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, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x06,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
	0x3b, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b,
	0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x1a, 0x0a, 0x07,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52,
	0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x42, 0x0e, 0x0a, 0x0c,
	0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x6c, 0x0a, 0x1b,
	0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x15, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 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, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x69, 0x6c, 0x6c,
	0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x53,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74,
	0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 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, 0x36, 0x0a, 0x05, 0x77,
	0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68,
	0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x77, 0x6f,
	0x72, 0x64, 0x73, 0x22, 0xdb, 0x01, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x3c, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 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, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x38,
	0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 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, 0x09, 0x65,
	0x6e, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02,
	0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d,
	0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65,
	0x6c, 0x22, 0x85, 0x02, 0x0a, 0x17, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f,
	0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x58, 0x0a,
	0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, 0x65,
	0x65, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c,
	0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72,
	0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x61, 0x67, 0x12, 0x45, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 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, 0x0f,
	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12,
	0x28, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x6e,
	0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x11, 0x52, 0x65,
	0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x49, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68,
	0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x08, 0x6d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb8, 0x03, 0x0a, 0x1c,
	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c,
	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x74,
	0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x41,
	0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a,
	0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6d, 0x52,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x7f, 0x0a, 0x16, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f,
	0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x69,
	0x63, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75,
	0x74, 0x52, 0x14, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79,
	0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, 0xac, 0x01, 0x0a, 0x14, 0x56, 0x6f, 0x69, 0x63,
	0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x12, 0x4b, 0x0a, 0x14, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74,
	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, 0x12, 0x73, 0x70, 0x65, 0x65, 0x63,
	0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x47, 0x0a,
	0x12, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x6f, 0x75, 0x74, 0x18, 0x02, 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, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x45, 0x6e, 0x64, 0x54,
	0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x86, 0x02, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61,
	0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a,
	0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x63, 0x0a, 0x12, 0x73, 0x74,
	0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x11, 0x73, 0x74,
	0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22,
	0xf3, 0x01, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a,
	0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 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, 0x0a, 0x72, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x5f, 0x0a, 0x10, 0x73, 0x74, 0x72, 0x65, 0x61,
	0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61,
	0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69,
	0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69,
	0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f,
	0x42, 0x13, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xab, 0x02, 0x0a, 0x15, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x48, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 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, 0x0a, 0x72,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x0b,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x0a, 0x63,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x48, 0x0a, 0x05, 0x66, 0x69, 0x6c,
	0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76,
	0x32, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65,
	0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x66, 0x69,
	0x6c, 0x65, 0x73, 0x22, 0xdd, 0x01, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55,
	0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65,
	0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x6c, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x75, 0x6c, 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, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x46, 0x69,
	0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x18, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f,
	0x67, 0x6e, 0x69, 0x7a, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
	0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
	0x69, 0x12, 0x28, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 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, 0x22, 0x8c, 0x01, 0x0a, 0x23,
	0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x54, 0x72,
	0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f,
	0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x70,
	0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x28,
	0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 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, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x22, 0xa3, 0x02, 0x0a, 0x16, 0x42,
	0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x80, 0x01, 0x0a, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63,
	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x4d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x15, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x85, 0x01, 0x0a, 0x1a, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x51, 0x0a, 0x05, 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, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76,
	0x32, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65,
	0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0xc0, 0x01, 0x0a, 0x1a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e,
	0x69, 0x7a, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
	0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03,
	0x75, 0x72, 0x69, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	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, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d,
	0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e,
	0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x12, 0x58, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76,
	0x32, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x52, 0x0c,
	0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08,
	0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
	0x69, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x62, 0x69,
	0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x73, 0x74, 0x61, 0x62,
	0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f,
	0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 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, 0x0f, 0x72, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x61, 0x67, 0x12, 0x28, 0x0a,
	0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x75,
	0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xfe, 0x03, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32,
	0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x11, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x65,
	0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69,
	0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0f, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x65,
	0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 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, 0x11, 0x73, 0x70,
	0x65, 0x65, 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12,
	0x4f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67,
	0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x22, 0x85, 0x01, 0x0a, 0x0f, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x5f, 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, 0x1b, 0x0a, 0x17, 0x45, 0x4e, 0x44, 0x5f, 0x4f,
	0x46, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x55, 0x54, 0x54, 0x45, 0x52, 0x41, 0x4e,
	0x43, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x5f, 0x41,
	0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x10, 0x02, 0x12,
	0x17, 0x0a, 0x13, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49,
	0x54, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x03, 0x22, 0x83, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 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, 0x4b, 0x0a, 0x0c,
	0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 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, 0x0a, 0x6b,
	0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, 0x61, 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, 0x3a, 0x51, 0xea, 0x41, 0x4e,
	0x0a, 0x1c, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e,
	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, 0x66, 0x69, 0x67, 0x22, 0x4c,
	0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x24, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1e, 0x0a, 0x1c, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8f, 0x01, 0x0a,
	0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 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, 0xc8,
	0x08, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 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, 0x21,
	0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x43, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x43, 0x6c, 0x61, 0x73, 0x73, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52,
	0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
	0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 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, 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, 0x40,
	0x0a, 0x0b, 0x75, 0x70, 0x64, 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, 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,
	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, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 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, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x2e, 0x41,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x04,
	0x65, 0x74, 0x61, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x25, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69,
	0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x0c,
	0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x03, 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, 0x0a, 0x6b,
	0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x6b, 0x6d, 0x73,
	0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x2a, 0x0a,
	0x28, 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, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6b, 0x6d, 0x73, 0x4b, 0x65,
	0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x21, 0x0a, 0x09,
	0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, 0x22,
	0x37, 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, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44,
	0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x04, 0x3a, 0x6f, 0xea, 0x41, 0x6c, 0x0a, 0x21, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73,
	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, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f,
	0x63, 0x6c, 0x61, 0x73, 0x73, 0x7d, 0x52, 0x01, 0x01, 0x22, 0xe3, 0x08, 0x0a, 0x09, 0x50, 0x68,
	0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 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, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x07, 0x70, 0x68, 0x72, 0x61, 0x73,
	0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76,
	0x32, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x50, 0x68, 0x72, 0x61,
	0x73, 0x65, 0x52, 0x07, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62,
	0x6f, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x62, 0x6f, 0x6f, 0x73,
	0x74, 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, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x68, 0x72,
	0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 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, 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, 0x40, 0x0a, 0x0b, 0x75, 0x70,
	0x64, 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, 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, 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, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40,
	0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 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, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x54, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x50,
	0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x0b,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12,
	0x25, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e,
	0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x0c, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65,
	0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41,
	0x03, 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, 0x0a, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x30, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 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, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x34, 0x0a, 0x06, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x62, 0x6f, 0x6f, 0x73, 0x74, 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, 0x22, 0x37, 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,
	0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45,
	0x54, 0x45, 0x44, 0x10, 0x04, 0x3a, 0x68, 0xea, 0x41, 0x65, 0x0a, 0x1f, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
	0x6d, 0x2f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 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, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x73, 0x2f,
	0x7b, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x7d, 0x52, 0x01, 0x01, 0x22,
	0xf7, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x0c,
	0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x63, 0x75,
	0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x26,
	0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x69,
	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43,
	0x6c, 0x61, 0x73, 0x73, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x12, 0x21,
	0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73,
	0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x4c, 0x69,
	0x73, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 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, 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, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x64, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x68, 0x6f,
	0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73,
	0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70,
	0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c,
	0x61, 0x73, 0x73, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 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, 0x56, 0x0a, 0x15, 0x47, 0x65,
	0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75,
	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, 0x73, 0x70, 0x65, 0x65, 0x63,
	0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73,
	0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x4b, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 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, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xb7,
	0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43,
	0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 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, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43,
	0x6c, 0x61, 0x73, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12,
	0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73,
	0x73, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0x94, 0x01, 0x0a, 0x1a, 0x55, 0x6e, 0x64,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73,
	0x52, 0x65, 0x71, 0x75, 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, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x65,
	0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22,
	0xe9, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65,
	0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x68,
	0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70,
	0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65,
	0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65,
	0x74, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e,
	0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65,
	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70,
	0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61,
	0x72, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa,
	0x41, 0x21, 0x12, 0x1f, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65,
	0x53, 0x65, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xb9, 0x01, 0x0a, 0x15,
	0x4c, 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 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, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x68, 0x6f, 0x77,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74,
	0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32,
	0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0a, 0x70, 0x68, 0x72, 0x61,
	0x73, 0x65, 0x53, 0x65, 0x74, 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, 0x52,
	0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x65,
	0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
	0x6f, 0x6d, 0x2f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72,
	0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a,
	0x0a, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73,
	0x65, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x68, 0x72, 0x61, 0x73,
	0x65, 0x53, 0x65, 0x74, 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, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e,
	0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xb3, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74,
	0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50,
	0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23,
	0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f,
	0x6e, 0x6c, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73,
	0x73, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f,
	0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0x90, 0x01, 0x0a,
	0x18, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53,
	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a,
	0x1f, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x65,
	0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x32,
	0xbf, 0x25, 0x0a, 0x06, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x12, 0xec, 0x01, 0x0a, 0x10, 0x43,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12,
	0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 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, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x2f, 0x2f, 0x76, 0x32, 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, 0x72, 0x65,
	0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x3a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67,
	0x6e, 0x69, 0x7a, 0x65, 0x72, 0xda, 0x41, 0x1f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x2c, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e,
	0x69, 0x7a, 0x65, 0x72, 0x5f, 0x69, 0x64, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f,
	0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb4, 0x01, 0x0a, 0x0f, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65,
	0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x67,
	0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65,
	0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x67,
	0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x32, 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, 0x72, 0x65, 0x63, 0x6f,
	0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x12, 0xa1, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a,
	0x65, 0x72, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e,
	0x69, 0x7a, 0x65, 0x72, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76,
	0x32, 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, 0x72,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0xee, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x7a, 0x65, 0x72, 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, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x48, 0x32, 0x3a, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x7a, 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,
	0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0a,
	0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0xda, 0x41, 0x16, 0x72, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d,
	0x61, 0x73, 0x6b, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a,
	0x65, 0x72, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xc4, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68,
	0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e,
	0x69, 0x7a, 0x65, 0x72, 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, 0x60, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x32, 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, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73,
	0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x52,
	0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xd4, 0x01, 0x0a,
	0x12, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x7a, 0x65, 0x72, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x6e, 0x64,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 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, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f,
	0x76, 0x32, 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,
	0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x75,
	0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72,
	0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x12, 0xf9, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a,
	0x65, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67,
	0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63,
	0x68, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x22,
	0x3f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72,
	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a,
	0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65,
	0x3a, 0x01, 0x2a, 0xda, 0x41, 0x25, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72,
	0x2c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d,
	0x61, 0x73, 0x6b, 0x2c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0xda, 0x41, 0x21, 0x72, 0x65,
	0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x2c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2c, 0x75, 0x72, 0x69, 0x12,
	0x81, 0x01, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f,
	0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28,
	0x01, 0x30, 0x01, 0x12, 0x84, 0x02, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63,
	0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e,
	0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 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, 0xa3, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f,
	0x76, 0x32, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x3d, 0x70,
	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72,
	0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e,
	0x69, 0x7a, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x23, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
	0x7a, 0x65, 0x72, 0x2c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c, 0x63, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2c, 0x66, 0x69, 0x6c, 0x65, 0x73, 0xca, 0x41, 0x2b, 0x0a,
	0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x8e, 0x01, 0x0a, 0x09, 0x47,
	0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76,
	0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x32, 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,
	0x66, 0x69, 0x67, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x0c,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2b, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x39, 0x32, 0x2f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x66, 0x69,
	0x67, 0x7d, 0x3a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xda, 0x41, 0x12, 0x63, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12,
	0xf7, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x43,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 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, 0x90, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x22,
	0x31, 0x2f, 0x76, 0x32, 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, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73,
	0x65, 0x73, 0x3a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73,
	0xda, 0x41, 0x23, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c,
	0x61, 0x73, 0x73, 0x5f, 0x69, 0x64, 0xca, 0x41, 0x20, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f,
	0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xbc, 0x01, 0x0a, 0x11, 0x4c, 0x69,
	0x73, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12,
	0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
	0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x75, 0x73,
	0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 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, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76,
	0x32, 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, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0xda,
	0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xa6, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74,
	0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x2d, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63,
	0x68, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c,
	0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68,
	0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x22,
	0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x32, 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, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0xf9, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32,
	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61,
	0x73, 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, 0x92, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x4e, 0x32, 0x3e, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63,
	0x6c, 0x61, 0x73, 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, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x2a,
	0x7d, 0x3a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0xda,
	0x41, 0x18, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2c, 0x75,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0xca, 0x41, 0x20, 0x0a, 0x0b, 0x43,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xc9, 0x01,
	0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c,
	0x61, 0x73, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 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, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76,
	0x32, 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,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda,
	0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xca, 0x41, 0x20, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f,
	0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xd9, 0x01, 0x0a, 0x13, 0x55, 0x6e,
	0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73,
	0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 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, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x76,
	0x32, 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,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a,
	0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0xca, 0x41, 0x20, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x61,
	0x73, 0x73, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xe8, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53,
	0x65, 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, 0x85, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x3c, 0x22, 0x2e, 0x2f, 0x76, 0x32, 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, 0x53, 0x65, 0x74,
	0x73, 0x3a, 0x0a, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0xda, 0x41, 0x1f,
	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65,
	0x74, 0x2c, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0xca,
	0x41, 0x1e, 0x0a, 0x09, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x12, 0x11, 0x4f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x12, 0xb0, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53,
	0x65, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73,
	0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74,
	0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x32, 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, 0x53, 0x65, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x12, 0x9d, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73,
	0x65, 0x53, 0x65, 0x74, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65,
	0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73,
	0x65, 0x53, 0x65, 0x74, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76,
	0x32, 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, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0xea, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68,
	0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32,
	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 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, 0x87, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x32,
	0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 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, 0x70, 0x68, 0x72,
	0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0a, 0x70, 0x68, 0x72, 0x61,
	0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0xda, 0x41, 0x16, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f,
	0x73, 0x65, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0xca,
	0x41, 0x1e, 0x0a, 0x09, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x12, 0x11, 0x4f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x12, 0xc0, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73,
	0x65, 0x53, 0x65, 0x74, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 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, 0x5e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x2a, 0x2e, 0x2f, 0x76, 0x32,
	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, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0xca, 0x41, 0x1e, 0x0a, 0x09, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74,
	0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x12, 0xd0, 0x01, 0x0a, 0x11, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e,
	0x76, 0x32, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73,
	0x65, 0x53, 0x65, 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, 0x6a, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x3c, 0x22, 0x37, 0x2f, 0x76, 0x32, 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, 0x53, 0x65, 0x74, 0x73, 0x2f,
	0x2a, 0x7d, 0x3a, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0xca, 0x41, 0x1e, 0x0a, 0x09, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65,
	0x53, 0x65, 0x74, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x73, 0x70, 0x65, 0x65, 0x63,
	0x68, 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, 0x93, 0x03, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x76, 0x32,
	0x42, 0x10, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x50, 0x72, 0x6f,
	0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2f, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x70, 0x65, 0x65,
	0x63, 0x68, 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, 0xa6,
	0x01, 0x0a, 0x28, 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, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x7a, 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,
	0x2f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_cloud_speech_v2_cloud_speech_proto_rawDescOnce sync.Once
	file_google_cloud_speech_v2_cloud_speech_proto_rawDescData = file_google_cloud_speech_v2_cloud_speech_proto_rawDesc
)

func file_google_cloud_speech_v2_cloud_speech_proto_rawDescGZIP() []byte {
	file_google_cloud_speech_v2_cloud_speech_proto_rawDescOnce.Do(func() {
		file_google_cloud_speech_v2_cloud_speech_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_speech_v2_cloud_speech_proto_rawDescData)
	})
	return file_google_cloud_speech_v2_cloud_speech_proto_rawDescData
}

var file_google_cloud_speech_v2_cloud_speech_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
var file_google_cloud_speech_v2_cloud_speech_proto_msgTypes = make([]protoimpl.MessageInfo, 60)
var file_google_cloud_speech_v2_cloud_speech_proto_goTypes = []interface{}{
	(Recognizer_State)(0),                                     // 0: google.cloud.speech.v2.Recognizer.State
	(ExplicitDecodingConfig_AudioEncoding)(0),                 // 1: google.cloud.speech.v2.ExplicitDecodingConfig.AudioEncoding
	(RecognitionFeatures_MultiChannelMode)(0),                 // 2: google.cloud.speech.v2.RecognitionFeatures.MultiChannelMode
	(StreamingRecognizeResponse_SpeechEventType)(0),           // 3: google.cloud.speech.v2.StreamingRecognizeResponse.SpeechEventType
	(CustomClass_State)(0),                                    // 4: google.cloud.speech.v2.CustomClass.State
	(PhraseSet_State)(0),                                      // 5: google.cloud.speech.v2.PhraseSet.State
	(*CreateRecognizerRequest)(nil),                           // 6: google.cloud.speech.v2.CreateRecognizerRequest
	(*OperationMetadata)(nil),                                 // 7: google.cloud.speech.v2.OperationMetadata
	(*ListRecognizersRequest)(nil),                            // 8: google.cloud.speech.v2.ListRecognizersRequest
	(*ListRecognizersResponse)(nil),                           // 9: google.cloud.speech.v2.ListRecognizersResponse
	(*GetRecognizerRequest)(nil),                              // 10: google.cloud.speech.v2.GetRecognizerRequest
	(*UpdateRecognizerRequest)(nil),                           // 11: google.cloud.speech.v2.UpdateRecognizerRequest
	(*DeleteRecognizerRequest)(nil),                           // 12: google.cloud.speech.v2.DeleteRecognizerRequest
	(*UndeleteRecognizerRequest)(nil),                         // 13: google.cloud.speech.v2.UndeleteRecognizerRequest
	(*Recognizer)(nil),                                        // 14: google.cloud.speech.v2.Recognizer
	(*AutoDetectDecodingConfig)(nil),                          // 15: google.cloud.speech.v2.AutoDetectDecodingConfig
	(*ExplicitDecodingConfig)(nil),                            // 16: google.cloud.speech.v2.ExplicitDecodingConfig
	(*SpeakerDiarizationConfig)(nil),                          // 17: google.cloud.speech.v2.SpeakerDiarizationConfig
	(*RecognitionFeatures)(nil),                               // 18: google.cloud.speech.v2.RecognitionFeatures
	(*SpeechAdaptation)(nil),                                  // 19: google.cloud.speech.v2.SpeechAdaptation
	(*RecognitionConfig)(nil),                                 // 20: google.cloud.speech.v2.RecognitionConfig
	(*RecognizeRequest)(nil),                                  // 21: google.cloud.speech.v2.RecognizeRequest
	(*RecognitionResponseMetadata)(nil),                       // 22: google.cloud.speech.v2.RecognitionResponseMetadata
	(*SpeechRecognitionAlternative)(nil),                      // 23: google.cloud.speech.v2.SpeechRecognitionAlternative
	(*WordInfo)(nil),                                          // 24: google.cloud.speech.v2.WordInfo
	(*SpeechRecognitionResult)(nil),                           // 25: google.cloud.speech.v2.SpeechRecognitionResult
	(*RecognizeResponse)(nil),                                 // 26: google.cloud.speech.v2.RecognizeResponse
	(*StreamingRecognitionFeatures)(nil),                      // 27: google.cloud.speech.v2.StreamingRecognitionFeatures
	(*StreamingRecognitionConfig)(nil),                        // 28: google.cloud.speech.v2.StreamingRecognitionConfig
	(*StreamingRecognizeRequest)(nil),                         // 29: google.cloud.speech.v2.StreamingRecognizeRequest
	(*BatchRecognizeRequest)(nil),                             // 30: google.cloud.speech.v2.BatchRecognizeRequest
	(*BatchRecognizeResponse)(nil),                            // 31: google.cloud.speech.v2.BatchRecognizeResponse
	(*BatchRecognizeFileResult)(nil),                          // 32: google.cloud.speech.v2.BatchRecognizeFileResult
	(*BatchRecognizeTranscriptionMetadata)(nil),               // 33: google.cloud.speech.v2.BatchRecognizeTranscriptionMetadata
	(*BatchRecognizeMetadata)(nil),                            // 34: google.cloud.speech.v2.BatchRecognizeMetadata
	(*BatchRecognizeFileMetadata)(nil),                        // 35: google.cloud.speech.v2.BatchRecognizeFileMetadata
	(*StreamingRecognitionResult)(nil),                        // 36: google.cloud.speech.v2.StreamingRecognitionResult
	(*StreamingRecognizeResponse)(nil),                        // 37: google.cloud.speech.v2.StreamingRecognizeResponse
	(*Config)(nil),                                            // 38: google.cloud.speech.v2.Config
	(*GetConfigRequest)(nil),                                  // 39: google.cloud.speech.v2.GetConfigRequest
	(*UpdateConfigRequest)(nil),                               // 40: google.cloud.speech.v2.UpdateConfigRequest
	(*CustomClass)(nil),                                       // 41: google.cloud.speech.v2.CustomClass
	(*PhraseSet)(nil),                                         // 42: google.cloud.speech.v2.PhraseSet
	(*CreateCustomClassRequest)(nil),                          // 43: google.cloud.speech.v2.CreateCustomClassRequest
	(*ListCustomClassesRequest)(nil),                          // 44: google.cloud.speech.v2.ListCustomClassesRequest
	(*ListCustomClassesResponse)(nil),                         // 45: google.cloud.speech.v2.ListCustomClassesResponse
	(*GetCustomClassRequest)(nil),                             // 46: google.cloud.speech.v2.GetCustomClassRequest
	(*UpdateCustomClassRequest)(nil),                          // 47: google.cloud.speech.v2.UpdateCustomClassRequest
	(*DeleteCustomClassRequest)(nil),                          // 48: google.cloud.speech.v2.DeleteCustomClassRequest
	(*UndeleteCustomClassRequest)(nil),                        // 49: google.cloud.speech.v2.UndeleteCustomClassRequest
	(*CreatePhraseSetRequest)(nil),                            // 50: google.cloud.speech.v2.CreatePhraseSetRequest
	(*ListPhraseSetsRequest)(nil),                             // 51: google.cloud.speech.v2.ListPhraseSetsRequest
	(*ListPhraseSetsResponse)(nil),                            // 52: google.cloud.speech.v2.ListPhraseSetsResponse
	(*GetPhraseSetRequest)(nil),                               // 53: google.cloud.speech.v2.GetPhraseSetRequest
	(*UpdatePhraseSetRequest)(nil),                            // 54: google.cloud.speech.v2.UpdatePhraseSetRequest
	(*DeletePhraseSetRequest)(nil),                            // 55: google.cloud.speech.v2.DeletePhraseSetRequest
	(*UndeletePhraseSetRequest)(nil),                          // 56: google.cloud.speech.v2.UndeletePhraseSetRequest
	nil,                                                       // 57: google.cloud.speech.v2.Recognizer.AnnotationsEntry
	(*SpeechAdaptation_AdaptationPhraseSet)(nil),              // 58: google.cloud.speech.v2.SpeechAdaptation.AdaptationPhraseSet
	(*StreamingRecognitionFeatures_VoiceActivityTimeout)(nil), // 59: google.cloud.speech.v2.StreamingRecognitionFeatures.VoiceActivityTimeout
	nil,                           // 60: google.cloud.speech.v2.BatchRecognizeResponse.ResultsEntry
	nil,                           // 61: google.cloud.speech.v2.BatchRecognizeMetadata.TranscriptionMetadataEntry
	(*CustomClass_ClassItem)(nil), // 62: google.cloud.speech.v2.CustomClass.ClassItem
	nil,                           // 63: google.cloud.speech.v2.CustomClass.AnnotationsEntry
	(*PhraseSet_Phrase)(nil),      // 64: google.cloud.speech.v2.PhraseSet.Phrase
	nil,                           // 65: google.cloud.speech.v2.PhraseSet.AnnotationsEntry
	(*timestamppb.Timestamp)(nil), // 66: google.protobuf.Timestamp
	(*fieldmaskpb.FieldMask)(nil), // 67: google.protobuf.FieldMask
	(*durationpb.Duration)(nil),   // 68: google.protobuf.Duration
	(*status.Status)(nil),         // 69: google.rpc.Status
	(*longrunning.Operation)(nil), // 70: google.longrunning.Operation
}
var file_google_cloud_speech_v2_cloud_speech_proto_depIdxs = []int32{
	14,  // 0: google.cloud.speech.v2.CreateRecognizerRequest.recognizer:type_name -> google.cloud.speech.v2.Recognizer
	66,  // 1: google.cloud.speech.v2.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp
	66,  // 2: google.cloud.speech.v2.OperationMetadata.update_time:type_name -> google.protobuf.Timestamp
	30,  // 3: google.cloud.speech.v2.OperationMetadata.batch_recognize_request:type_name -> google.cloud.speech.v2.BatchRecognizeRequest
	6,   // 4: google.cloud.speech.v2.OperationMetadata.create_recognizer_request:type_name -> google.cloud.speech.v2.CreateRecognizerRequest
	11,  // 5: google.cloud.speech.v2.OperationMetadata.update_recognizer_request:type_name -> google.cloud.speech.v2.UpdateRecognizerRequest
	12,  // 6: google.cloud.speech.v2.OperationMetadata.delete_recognizer_request:type_name -> google.cloud.speech.v2.DeleteRecognizerRequest
	13,  // 7: google.cloud.speech.v2.OperationMetadata.undelete_recognizer_request:type_name -> google.cloud.speech.v2.UndeleteRecognizerRequest
	43,  // 8: google.cloud.speech.v2.OperationMetadata.create_custom_class_request:type_name -> google.cloud.speech.v2.CreateCustomClassRequest
	47,  // 9: google.cloud.speech.v2.OperationMetadata.update_custom_class_request:type_name -> google.cloud.speech.v2.UpdateCustomClassRequest
	48,  // 10: google.cloud.speech.v2.OperationMetadata.delete_custom_class_request:type_name -> google.cloud.speech.v2.DeleteCustomClassRequest
	49,  // 11: google.cloud.speech.v2.OperationMetadata.undelete_custom_class_request:type_name -> google.cloud.speech.v2.UndeleteCustomClassRequest
	50,  // 12: google.cloud.speech.v2.OperationMetadata.create_phrase_set_request:type_name -> google.cloud.speech.v2.CreatePhraseSetRequest
	54,  // 13: google.cloud.speech.v2.OperationMetadata.update_phrase_set_request:type_name -> google.cloud.speech.v2.UpdatePhraseSetRequest
	55,  // 14: google.cloud.speech.v2.OperationMetadata.delete_phrase_set_request:type_name -> google.cloud.speech.v2.DeletePhraseSetRequest
	56,  // 15: google.cloud.speech.v2.OperationMetadata.undelete_phrase_set_request:type_name -> google.cloud.speech.v2.UndeletePhraseSetRequest
	40,  // 16: google.cloud.speech.v2.OperationMetadata.update_config_request:type_name -> google.cloud.speech.v2.UpdateConfigRequest
	34,  // 17: google.cloud.speech.v2.OperationMetadata.batch_recognize_metadata:type_name -> google.cloud.speech.v2.BatchRecognizeMetadata
	14,  // 18: google.cloud.speech.v2.ListRecognizersResponse.recognizers:type_name -> google.cloud.speech.v2.Recognizer
	14,  // 19: google.cloud.speech.v2.UpdateRecognizerRequest.recognizer:type_name -> google.cloud.speech.v2.Recognizer
	67,  // 20: google.cloud.speech.v2.UpdateRecognizerRequest.update_mask:type_name -> google.protobuf.FieldMask
	20,  // 21: google.cloud.speech.v2.Recognizer.default_recognition_config:type_name -> google.cloud.speech.v2.RecognitionConfig
	57,  // 22: google.cloud.speech.v2.Recognizer.annotations:type_name -> google.cloud.speech.v2.Recognizer.AnnotationsEntry
	0,   // 23: google.cloud.speech.v2.Recognizer.state:type_name -> google.cloud.speech.v2.Recognizer.State
	66,  // 24: google.cloud.speech.v2.Recognizer.create_time:type_name -> google.protobuf.Timestamp
	66,  // 25: google.cloud.speech.v2.Recognizer.update_time:type_name -> google.protobuf.Timestamp
	66,  // 26: google.cloud.speech.v2.Recognizer.delete_time:type_name -> google.protobuf.Timestamp
	66,  // 27: google.cloud.speech.v2.Recognizer.expire_time:type_name -> google.protobuf.Timestamp
	1,   // 28: google.cloud.speech.v2.ExplicitDecodingConfig.encoding:type_name -> google.cloud.speech.v2.ExplicitDecodingConfig.AudioEncoding
	2,   // 29: google.cloud.speech.v2.RecognitionFeatures.multi_channel_mode:type_name -> google.cloud.speech.v2.RecognitionFeatures.MultiChannelMode
	17,  // 30: google.cloud.speech.v2.RecognitionFeatures.diarization_config:type_name -> google.cloud.speech.v2.SpeakerDiarizationConfig
	58,  // 31: google.cloud.speech.v2.SpeechAdaptation.phrase_sets:type_name -> google.cloud.speech.v2.SpeechAdaptation.AdaptationPhraseSet
	41,  // 32: google.cloud.speech.v2.SpeechAdaptation.custom_classes:type_name -> google.cloud.speech.v2.CustomClass
	15,  // 33: google.cloud.speech.v2.RecognitionConfig.auto_decoding_config:type_name -> google.cloud.speech.v2.AutoDetectDecodingConfig
	16,  // 34: google.cloud.speech.v2.RecognitionConfig.explicit_decoding_config:type_name -> google.cloud.speech.v2.ExplicitDecodingConfig
	18,  // 35: google.cloud.speech.v2.RecognitionConfig.features:type_name -> google.cloud.speech.v2.RecognitionFeatures
	19,  // 36: google.cloud.speech.v2.RecognitionConfig.adaptation:type_name -> google.cloud.speech.v2.SpeechAdaptation
	20,  // 37: google.cloud.speech.v2.RecognizeRequest.config:type_name -> google.cloud.speech.v2.RecognitionConfig
	67,  // 38: google.cloud.speech.v2.RecognizeRequest.config_mask:type_name -> google.protobuf.FieldMask
	68,  // 39: google.cloud.speech.v2.RecognitionResponseMetadata.total_billed_duration:type_name -> google.protobuf.Duration
	24,  // 40: google.cloud.speech.v2.SpeechRecognitionAlternative.words:type_name -> google.cloud.speech.v2.WordInfo
	68,  // 41: google.cloud.speech.v2.WordInfo.start_offset:type_name -> google.protobuf.Duration
	68,  // 42: google.cloud.speech.v2.WordInfo.end_offset:type_name -> google.protobuf.Duration
	23,  // 43: google.cloud.speech.v2.SpeechRecognitionResult.alternatives:type_name -> google.cloud.speech.v2.SpeechRecognitionAlternative
	68,  // 44: google.cloud.speech.v2.SpeechRecognitionResult.result_end_offset:type_name -> google.protobuf.Duration
	25,  // 45: google.cloud.speech.v2.RecognizeResponse.results:type_name -> google.cloud.speech.v2.SpeechRecognitionResult
	22,  // 46: google.cloud.speech.v2.RecognizeResponse.metadata:type_name -> google.cloud.speech.v2.RecognitionResponseMetadata
	59,  // 47: google.cloud.speech.v2.StreamingRecognitionFeatures.voice_activity_timeout:type_name -> google.cloud.speech.v2.StreamingRecognitionFeatures.VoiceActivityTimeout
	20,  // 48: google.cloud.speech.v2.StreamingRecognitionConfig.config:type_name -> google.cloud.speech.v2.RecognitionConfig
	67,  // 49: google.cloud.speech.v2.StreamingRecognitionConfig.config_mask:type_name -> google.protobuf.FieldMask
	27,  // 50: google.cloud.speech.v2.StreamingRecognitionConfig.streaming_features:type_name -> google.cloud.speech.v2.StreamingRecognitionFeatures
	28,  // 51: google.cloud.speech.v2.StreamingRecognizeRequest.streaming_config:type_name -> google.cloud.speech.v2.StreamingRecognitionConfig
	20,  // 52: google.cloud.speech.v2.BatchRecognizeRequest.config:type_name -> google.cloud.speech.v2.RecognitionConfig
	67,  // 53: google.cloud.speech.v2.BatchRecognizeRequest.config_mask:type_name -> google.protobuf.FieldMask
	35,  // 54: google.cloud.speech.v2.BatchRecognizeRequest.files:type_name -> google.cloud.speech.v2.BatchRecognizeFileMetadata
	60,  // 55: google.cloud.speech.v2.BatchRecognizeResponse.results:type_name -> google.cloud.speech.v2.BatchRecognizeResponse.ResultsEntry
	69,  // 56: google.cloud.speech.v2.BatchRecognizeFileResult.error:type_name -> google.rpc.Status
	69,  // 57: google.cloud.speech.v2.BatchRecognizeTranscriptionMetadata.error:type_name -> google.rpc.Status
	61,  // 58: google.cloud.speech.v2.BatchRecognizeMetadata.transcription_metadata:type_name -> google.cloud.speech.v2.BatchRecognizeMetadata.TranscriptionMetadataEntry
	20,  // 59: google.cloud.speech.v2.BatchRecognizeFileMetadata.config:type_name -> google.cloud.speech.v2.RecognitionConfig
	67,  // 60: google.cloud.speech.v2.BatchRecognizeFileMetadata.config_mask:type_name -> google.protobuf.FieldMask
	23,  // 61: google.cloud.speech.v2.StreamingRecognitionResult.alternatives:type_name -> google.cloud.speech.v2.SpeechRecognitionAlternative
	68,  // 62: google.cloud.speech.v2.StreamingRecognitionResult.result_end_offset:type_name -> google.protobuf.Duration
	36,  // 63: google.cloud.speech.v2.StreamingRecognizeResponse.results:type_name -> google.cloud.speech.v2.StreamingRecognitionResult
	3,   // 64: google.cloud.speech.v2.StreamingRecognizeResponse.speech_event_type:type_name -> google.cloud.speech.v2.StreamingRecognizeResponse.SpeechEventType
	68,  // 65: google.cloud.speech.v2.StreamingRecognizeResponse.speech_event_offset:type_name -> google.protobuf.Duration
	22,  // 66: google.cloud.speech.v2.StreamingRecognizeResponse.metadata:type_name -> google.cloud.speech.v2.RecognitionResponseMetadata
	66,  // 67: google.cloud.speech.v2.Config.update_time:type_name -> google.protobuf.Timestamp
	38,  // 68: google.cloud.speech.v2.UpdateConfigRequest.config:type_name -> google.cloud.speech.v2.Config
	67,  // 69: google.cloud.speech.v2.UpdateConfigRequest.update_mask:type_name -> google.protobuf.FieldMask
	62,  // 70: google.cloud.speech.v2.CustomClass.items:type_name -> google.cloud.speech.v2.CustomClass.ClassItem
	4,   // 71: google.cloud.speech.v2.CustomClass.state:type_name -> google.cloud.speech.v2.CustomClass.State
	66,  // 72: google.cloud.speech.v2.CustomClass.create_time:type_name -> google.protobuf.Timestamp
	66,  // 73: google.cloud.speech.v2.CustomClass.update_time:type_name -> google.protobuf.Timestamp
	66,  // 74: google.cloud.speech.v2.CustomClass.delete_time:type_name -> google.protobuf.Timestamp
	66,  // 75: google.cloud.speech.v2.CustomClass.expire_time:type_name -> google.protobuf.Timestamp
	63,  // 76: google.cloud.speech.v2.CustomClass.annotations:type_name -> google.cloud.speech.v2.CustomClass.AnnotationsEntry
	64,  // 77: google.cloud.speech.v2.PhraseSet.phrases:type_name -> google.cloud.speech.v2.PhraseSet.Phrase
	5,   // 78: google.cloud.speech.v2.PhraseSet.state:type_name -> google.cloud.speech.v2.PhraseSet.State
	66,  // 79: google.cloud.speech.v2.PhraseSet.create_time:type_name -> google.protobuf.Timestamp
	66,  // 80: google.cloud.speech.v2.PhraseSet.update_time:type_name -> google.protobuf.Timestamp
	66,  // 81: google.cloud.speech.v2.PhraseSet.delete_time:type_name -> google.protobuf.Timestamp
	66,  // 82: google.cloud.speech.v2.PhraseSet.expire_time:type_name -> google.protobuf.Timestamp
	65,  // 83: google.cloud.speech.v2.PhraseSet.annotations:type_name -> google.cloud.speech.v2.PhraseSet.AnnotationsEntry
	41,  // 84: google.cloud.speech.v2.CreateCustomClassRequest.custom_class:type_name -> google.cloud.speech.v2.CustomClass
	41,  // 85: google.cloud.speech.v2.ListCustomClassesResponse.custom_classes:type_name -> google.cloud.speech.v2.CustomClass
	41,  // 86: google.cloud.speech.v2.UpdateCustomClassRequest.custom_class:type_name -> google.cloud.speech.v2.CustomClass
	67,  // 87: google.cloud.speech.v2.UpdateCustomClassRequest.update_mask:type_name -> google.protobuf.FieldMask
	42,  // 88: google.cloud.speech.v2.CreatePhraseSetRequest.phrase_set:type_name -> google.cloud.speech.v2.PhraseSet
	42,  // 89: google.cloud.speech.v2.ListPhraseSetsResponse.phrase_sets:type_name -> google.cloud.speech.v2.PhraseSet
	42,  // 90: google.cloud.speech.v2.UpdatePhraseSetRequest.phrase_set:type_name -> google.cloud.speech.v2.PhraseSet
	67,  // 91: google.cloud.speech.v2.UpdatePhraseSetRequest.update_mask:type_name -> google.protobuf.FieldMask
	42,  // 92: google.cloud.speech.v2.SpeechAdaptation.AdaptationPhraseSet.inline_phrase_set:type_name -> google.cloud.speech.v2.PhraseSet
	68,  // 93: google.cloud.speech.v2.StreamingRecognitionFeatures.VoiceActivityTimeout.speech_start_timeout:type_name -> google.protobuf.Duration
	68,  // 94: google.cloud.speech.v2.StreamingRecognitionFeatures.VoiceActivityTimeout.speech_end_timeout:type_name -> google.protobuf.Duration
	32,  // 95: google.cloud.speech.v2.BatchRecognizeResponse.ResultsEntry.value:type_name -> google.cloud.speech.v2.BatchRecognizeFileResult
	33,  // 96: google.cloud.speech.v2.BatchRecognizeMetadata.TranscriptionMetadataEntry.value:type_name -> google.cloud.speech.v2.BatchRecognizeTranscriptionMetadata
	6,   // 97: google.cloud.speech.v2.Speech.CreateRecognizer:input_type -> google.cloud.speech.v2.CreateRecognizerRequest
	8,   // 98: google.cloud.speech.v2.Speech.ListRecognizers:input_type -> google.cloud.speech.v2.ListRecognizersRequest
	10,  // 99: google.cloud.speech.v2.Speech.GetRecognizer:input_type -> google.cloud.speech.v2.GetRecognizerRequest
	11,  // 100: google.cloud.speech.v2.Speech.UpdateRecognizer:input_type -> google.cloud.speech.v2.UpdateRecognizerRequest
	12,  // 101: google.cloud.speech.v2.Speech.DeleteRecognizer:input_type -> google.cloud.speech.v2.DeleteRecognizerRequest
	13,  // 102: google.cloud.speech.v2.Speech.UndeleteRecognizer:input_type -> google.cloud.speech.v2.UndeleteRecognizerRequest
	21,  // 103: google.cloud.speech.v2.Speech.Recognize:input_type -> google.cloud.speech.v2.RecognizeRequest
	29,  // 104: google.cloud.speech.v2.Speech.StreamingRecognize:input_type -> google.cloud.speech.v2.StreamingRecognizeRequest
	30,  // 105: google.cloud.speech.v2.Speech.BatchRecognize:input_type -> google.cloud.speech.v2.BatchRecognizeRequest
	39,  // 106: google.cloud.speech.v2.Speech.GetConfig:input_type -> google.cloud.speech.v2.GetConfigRequest
	40,  // 107: google.cloud.speech.v2.Speech.UpdateConfig:input_type -> google.cloud.speech.v2.UpdateConfigRequest
	43,  // 108: google.cloud.speech.v2.Speech.CreateCustomClass:input_type -> google.cloud.speech.v2.CreateCustomClassRequest
	44,  // 109: google.cloud.speech.v2.Speech.ListCustomClasses:input_type -> google.cloud.speech.v2.ListCustomClassesRequest
	46,  // 110: google.cloud.speech.v2.Speech.GetCustomClass:input_type -> google.cloud.speech.v2.GetCustomClassRequest
	47,  // 111: google.cloud.speech.v2.Speech.UpdateCustomClass:input_type -> google.cloud.speech.v2.UpdateCustomClassRequest
	48,  // 112: google.cloud.speech.v2.Speech.DeleteCustomClass:input_type -> google.cloud.speech.v2.DeleteCustomClassRequest
	49,  // 113: google.cloud.speech.v2.Speech.UndeleteCustomClass:input_type -> google.cloud.speech.v2.UndeleteCustomClassRequest
	50,  // 114: google.cloud.speech.v2.Speech.CreatePhraseSet:input_type -> google.cloud.speech.v2.CreatePhraseSetRequest
	51,  // 115: google.cloud.speech.v2.Speech.ListPhraseSets:input_type -> google.cloud.speech.v2.ListPhraseSetsRequest
	53,  // 116: google.cloud.speech.v2.Speech.GetPhraseSet:input_type -> google.cloud.speech.v2.GetPhraseSetRequest
	54,  // 117: google.cloud.speech.v2.Speech.UpdatePhraseSet:input_type -> google.cloud.speech.v2.UpdatePhraseSetRequest
	55,  // 118: google.cloud.speech.v2.Speech.DeletePhraseSet:input_type -> google.cloud.speech.v2.DeletePhraseSetRequest
	56,  // 119: google.cloud.speech.v2.Speech.UndeletePhraseSet:input_type -> google.cloud.speech.v2.UndeletePhraseSetRequest
	70,  // 120: google.cloud.speech.v2.Speech.CreateRecognizer:output_type -> google.longrunning.Operation
	9,   // 121: google.cloud.speech.v2.Speech.ListRecognizers:output_type -> google.cloud.speech.v2.ListRecognizersResponse
	14,  // 122: google.cloud.speech.v2.Speech.GetRecognizer:output_type -> google.cloud.speech.v2.Recognizer
	70,  // 123: google.cloud.speech.v2.Speech.UpdateRecognizer:output_type -> google.longrunning.Operation
	70,  // 124: google.cloud.speech.v2.Speech.DeleteRecognizer:output_type -> google.longrunning.Operation
	70,  // 125: google.cloud.speech.v2.Speech.UndeleteRecognizer:output_type -> google.longrunning.Operation
	26,  // 126: google.cloud.speech.v2.Speech.Recognize:output_type -> google.cloud.speech.v2.RecognizeResponse
	37,  // 127: google.cloud.speech.v2.Speech.StreamingRecognize:output_type -> google.cloud.speech.v2.StreamingRecognizeResponse
	70,  // 128: google.cloud.speech.v2.Speech.BatchRecognize:output_type -> google.longrunning.Operation
	38,  // 129: google.cloud.speech.v2.Speech.GetConfig:output_type -> google.cloud.speech.v2.Config
	38,  // 130: google.cloud.speech.v2.Speech.UpdateConfig:output_type -> google.cloud.speech.v2.Config
	70,  // 131: google.cloud.speech.v2.Speech.CreateCustomClass:output_type -> google.longrunning.Operation
	45,  // 132: google.cloud.speech.v2.Speech.ListCustomClasses:output_type -> google.cloud.speech.v2.ListCustomClassesResponse
	41,  // 133: google.cloud.speech.v2.Speech.GetCustomClass:output_type -> google.cloud.speech.v2.CustomClass
	70,  // 134: google.cloud.speech.v2.Speech.UpdateCustomClass:output_type -> google.longrunning.Operation
	70,  // 135: google.cloud.speech.v2.Speech.DeleteCustomClass:output_type -> google.longrunning.Operation
	70,  // 136: google.cloud.speech.v2.Speech.UndeleteCustomClass:output_type -> google.longrunning.Operation
	70,  // 137: google.cloud.speech.v2.Speech.CreatePhraseSet:output_type -> google.longrunning.Operation
	52,  // 138: google.cloud.speech.v2.Speech.ListPhraseSets:output_type -> google.cloud.speech.v2.ListPhraseSetsResponse
	42,  // 139: google.cloud.speech.v2.Speech.GetPhraseSet:output_type -> google.cloud.speech.v2.PhraseSet
	70,  // 140: google.cloud.speech.v2.Speech.UpdatePhraseSet:output_type -> google.longrunning.Operation
	70,  // 141: google.cloud.speech.v2.Speech.DeletePhraseSet:output_type -> google.longrunning.Operation
	70,  // 142: google.cloud.speech.v2.Speech.UndeletePhraseSet:output_type -> google.longrunning.Operation
	120, // [120:143] is the sub-list for method output_type
	97,  // [97:120] is the sub-list for method input_type
	97,  // [97:97] is the sub-list for extension type_name
	97,  // [97:97] is the sub-list for extension extendee
	0,   // [0:97] is the sub-list for field type_name
}

func init() { file_google_cloud_speech_v2_cloud_speech_proto_init() }
func file_google_cloud_speech_v2_cloud_speech_proto_init() {
	if File_google_cloud_speech_v2_cloud_speech_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateRecognizerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OperationMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListRecognizersRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListRecognizersResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecognizerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateRecognizerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteRecognizerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UndeleteRecognizerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Recognizer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AutoDetectDecodingConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExplicitDecodingConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpeakerDiarizationConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RecognitionFeatures); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpeechAdaptation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RecognitionConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RecognizeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RecognitionResponseMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpeechRecognitionAlternative); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WordInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpeechRecognitionResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RecognizeResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamingRecognitionFeatures); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamingRecognitionConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamingRecognizeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BatchRecognizeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BatchRecognizeResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BatchRecognizeFileResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BatchRecognizeTranscriptionMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BatchRecognizeMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BatchRecognizeFileMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamingRecognitionResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamingRecognizeResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Config); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetConfigRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateConfigRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CustomClass); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PhraseSet); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateCustomClassRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListCustomClassesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListCustomClassesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetCustomClassRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateCustomClassRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteCustomClassRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UndeleteCustomClassRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreatePhraseSetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListPhraseSetsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListPhraseSetsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPhraseSetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdatePhraseSetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePhraseSetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UndeletePhraseSetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpeechAdaptation_AdaptationPhraseSet); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamingRecognitionFeatures_VoiceActivityTimeout); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CustomClass_ClassItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PhraseSet_Phrase); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[1].OneofWrappers = []interface{}{
		(*OperationMetadata_BatchRecognizeRequest)(nil),
		(*OperationMetadata_CreateRecognizerRequest)(nil),
		(*OperationMetadata_UpdateRecognizerRequest)(nil),
		(*OperationMetadata_DeleteRecognizerRequest)(nil),
		(*OperationMetadata_UndeleteRecognizerRequest)(nil),
		(*OperationMetadata_CreateCustomClassRequest)(nil),
		(*OperationMetadata_UpdateCustomClassRequest)(nil),
		(*OperationMetadata_DeleteCustomClassRequest)(nil),
		(*OperationMetadata_UndeleteCustomClassRequest)(nil),
		(*OperationMetadata_CreatePhraseSetRequest)(nil),
		(*OperationMetadata_UpdatePhraseSetRequest)(nil),
		(*OperationMetadata_DeletePhraseSetRequest)(nil),
		(*OperationMetadata_UndeletePhraseSetRequest)(nil),
		(*OperationMetadata_UpdateConfigRequest)(nil),
		(*OperationMetadata_BatchRecognizeMetadata)(nil),
	}
	file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[14].OneofWrappers = []interface{}{
		(*RecognitionConfig_AutoDecodingConfig)(nil),
		(*RecognitionConfig_ExplicitDecodingConfig)(nil),
	}
	file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[15].OneofWrappers = []interface{}{
		(*RecognizeRequest_Content)(nil),
		(*RecognizeRequest_Uri)(nil),
	}
	file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[23].OneofWrappers = []interface{}{
		(*StreamingRecognizeRequest_StreamingConfig)(nil),
		(*StreamingRecognizeRequest_Audio)(nil),
	}
	file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[29].OneofWrappers = []interface{}{
		(*BatchRecognizeFileMetadata_Uri)(nil),
	}
	file_google_cloud_speech_v2_cloud_speech_proto_msgTypes[52].OneofWrappers = []interface{}{
		(*SpeechAdaptation_AdaptationPhraseSet_PhraseSet)(nil),
		(*SpeechAdaptation_AdaptationPhraseSet_InlinePhraseSet)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_cloud_speech_v2_cloud_speech_proto_rawDesc,
			NumEnums:      6,
			NumMessages:   60,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_google_cloud_speech_v2_cloud_speech_proto_goTypes,
		DependencyIndexes: file_google_cloud_speech_v2_cloud_speech_proto_depIdxs,
		EnumInfos:         file_google_cloud_speech_v2_cloud_speech_proto_enumTypes,
		MessageInfos:      file_google_cloud_speech_v2_cloud_speech_proto_msgTypes,
	}.Build()
	File_google_cloud_speech_v2_cloud_speech_proto = out.File
	file_google_cloud_speech_v2_cloud_speech_proto_rawDesc = nil
	file_google_cloud_speech_v2_cloud_speech_proto_goTypes = nil
	file_google_cloud_speech_v2_cloud_speech_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// SpeechClient is the client API for Speech service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type SpeechClient interface {
	// Creates a [Recognizer][google.cloud.speech.v2.Recognizer].
	CreateRecognizer(ctx context.Context, in *CreateRecognizerRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Lists Recognizers.
	ListRecognizers(ctx context.Context, in *ListRecognizersRequest, opts ...grpc.CallOption) (*ListRecognizersResponse, error)
	// Returns the requested
	// [Recognizer][google.cloud.speech.v2.Recognizer]. Fails with
	// [NOT_FOUND][google.rpc.Code.NOT_FOUND] if the requested recognizer doesn't
	// exist.
	GetRecognizer(ctx context.Context, in *GetRecognizerRequest, opts ...grpc.CallOption) (*Recognizer, error)
	// Updates the [Recognizer][google.cloud.speech.v2.Recognizer].
	UpdateRecognizer(ctx context.Context, in *UpdateRecognizerRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Deletes the [Recognizer][google.cloud.speech.v2.Recognizer].
	DeleteRecognizer(ctx context.Context, in *DeleteRecognizerRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Undeletes the [Recognizer][google.cloud.speech.v2.Recognizer].
	UndeleteRecognizer(ctx context.Context, in *UndeleteRecognizerRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Performs synchronous Speech recognition: receive results after all audio
	// has been sent and processed.
	Recognize(ctx context.Context, in *RecognizeRequest, opts ...grpc.CallOption) (*RecognizeResponse, error)
	// Performs bidirectional streaming speech recognition: receive results while
	// sending audio. This method is only available via the gRPC API (not REST).
	StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error)
	// Performs batch asynchronous speech recognition: send a request with N
	// audio files and receive a long running operation that can be polled to see
	// when the transcriptions are finished.
	BatchRecognize(ctx context.Context, in *BatchRecognizeRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Returns the requested [Config][google.cloud.speech.v2.Config].
	GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*Config, error)
	// Updates the [Config][google.cloud.speech.v2.Config].
	UpdateConfig(ctx context.Context, in *UpdateConfigRequest, opts ...grpc.CallOption) (*Config, error)
	// Creates a [CustomClass][google.cloud.speech.v2.CustomClass].
	CreateCustomClass(ctx context.Context, in *CreateCustomClassRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Lists CustomClasses.
	ListCustomClasses(ctx context.Context, in *ListCustomClassesRequest, opts ...grpc.CallOption) (*ListCustomClassesResponse, error)
	// Returns the requested
	// [CustomClass][google.cloud.speech.v2.CustomClass].
	GetCustomClass(ctx context.Context, in *GetCustomClassRequest, opts ...grpc.CallOption) (*CustomClass, error)
	// Updates the [CustomClass][google.cloud.speech.v2.CustomClass].
	UpdateCustomClass(ctx context.Context, in *UpdateCustomClassRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Deletes the [CustomClass][google.cloud.speech.v2.CustomClass].
	DeleteCustomClass(ctx context.Context, in *DeleteCustomClassRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Undeletes the [CustomClass][google.cloud.speech.v2.CustomClass].
	UndeleteCustomClass(ctx context.Context, in *UndeleteCustomClassRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Creates a [PhraseSet][google.cloud.speech.v2.PhraseSet].
	CreatePhraseSet(ctx context.Context, in *CreatePhraseSetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Lists PhraseSets.
	ListPhraseSets(ctx context.Context, in *ListPhraseSetsRequest, opts ...grpc.CallOption) (*ListPhraseSetsResponse, error)
	// Returns the requested
	// [PhraseSet][google.cloud.speech.v2.PhraseSet].
	GetPhraseSet(ctx context.Context, in *GetPhraseSetRequest, opts ...grpc.CallOption) (*PhraseSet, error)
	// Updates the [PhraseSet][google.cloud.speech.v2.PhraseSet].
	UpdatePhraseSet(ctx context.Context, in *UpdatePhraseSetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Deletes the [PhraseSet][google.cloud.speech.v2.PhraseSet].
	DeletePhraseSet(ctx context.Context, in *DeletePhraseSetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Undeletes the [PhraseSet][google.cloud.speech.v2.PhraseSet].
	UndeletePhraseSet(ctx context.Context, in *UndeletePhraseSetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
}

type speechClient struct {
	cc grpc.ClientConnInterface
}

func NewSpeechClient(cc grpc.ClientConnInterface) SpeechClient {
	return &speechClient{cc}
}

func (c *speechClient) CreateRecognizer(ctx context.Context, in *CreateRecognizerRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/CreateRecognizer", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) ListRecognizers(ctx context.Context, in *ListRecognizersRequest, opts ...grpc.CallOption) (*ListRecognizersResponse, error) {
	out := new(ListRecognizersResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/ListRecognizers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) GetRecognizer(ctx context.Context, in *GetRecognizerRequest, opts ...grpc.CallOption) (*Recognizer, error) {
	out := new(Recognizer)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/GetRecognizer", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) UpdateRecognizer(ctx context.Context, in *UpdateRecognizerRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/UpdateRecognizer", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) DeleteRecognizer(ctx context.Context, in *DeleteRecognizerRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/DeleteRecognizer", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) UndeleteRecognizer(ctx context.Context, in *UndeleteRecognizerRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/UndeleteRecognizer", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) Recognize(ctx context.Context, in *RecognizeRequest, opts ...grpc.CallOption) (*RecognizeResponse, error) {
	out := new(RecognizeResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/Recognize", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error) {
	stream, err := c.cc.NewStream(ctx, &_Speech_serviceDesc.Streams[0], "/google.cloud.speech.v2.Speech/StreamingRecognize", opts...)
	if err != nil {
		return nil, err
	}
	x := &speechStreamingRecognizeClient{stream}
	return x, nil
}

type Speech_StreamingRecognizeClient interface {
	Send(*StreamingRecognizeRequest) error
	Recv() (*StreamingRecognizeResponse, error)
	grpc.ClientStream
}

type speechStreamingRecognizeClient struct {
	grpc.ClientStream
}

func (x *speechStreamingRecognizeClient) Send(m *StreamingRecognizeRequest) error {
	return x.ClientStream.SendMsg(m)
}

func (x *speechStreamingRecognizeClient) Recv() (*StreamingRecognizeResponse, error) {
	m := new(StreamingRecognizeResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *speechClient) BatchRecognize(ctx context.Context, in *BatchRecognizeRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/BatchRecognize", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*Config, error) {
	out := new(Config)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/GetConfig", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) UpdateConfig(ctx context.Context, in *UpdateConfigRequest, opts ...grpc.CallOption) (*Config, error) {
	out := new(Config)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/UpdateConfig", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) CreateCustomClass(ctx context.Context, in *CreateCustomClassRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/CreateCustomClass", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) ListCustomClasses(ctx context.Context, in *ListCustomClassesRequest, opts ...grpc.CallOption) (*ListCustomClassesResponse, error) {
	out := new(ListCustomClassesResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/ListCustomClasses", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) GetCustomClass(ctx context.Context, in *GetCustomClassRequest, opts ...grpc.CallOption) (*CustomClass, error) {
	out := new(CustomClass)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/GetCustomClass", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) UpdateCustomClass(ctx context.Context, in *UpdateCustomClassRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/UpdateCustomClass", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) DeleteCustomClass(ctx context.Context, in *DeleteCustomClassRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/DeleteCustomClass", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) UndeleteCustomClass(ctx context.Context, in *UndeleteCustomClassRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/UndeleteCustomClass", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) CreatePhraseSet(ctx context.Context, in *CreatePhraseSetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/CreatePhraseSet", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) ListPhraseSets(ctx context.Context, in *ListPhraseSetsRequest, opts ...grpc.CallOption) (*ListPhraseSetsResponse, error) {
	out := new(ListPhraseSetsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/ListPhraseSets", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) GetPhraseSet(ctx context.Context, in *GetPhraseSetRequest, opts ...grpc.CallOption) (*PhraseSet, error) {
	out := new(PhraseSet)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/GetPhraseSet", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) UpdatePhraseSet(ctx context.Context, in *UpdatePhraseSetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/UpdatePhraseSet", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) DeletePhraseSet(ctx context.Context, in *DeletePhraseSetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/DeletePhraseSet", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *speechClient) UndeletePhraseSet(ctx context.Context, in *UndeletePhraseSetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.speech.v2.Speech/UndeletePhraseSet", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// SpeechServer is the server API for Speech service.
type SpeechServer interface {
	// Creates a [Recognizer][google.cloud.speech.v2.Recognizer].
	CreateRecognizer(context.Context, *CreateRecognizerRequest) (*longrunning.Operation, error)
	// Lists Recognizers.
	ListRecognizers(context.Context, *ListRecognizersRequest) (*ListRecognizersResponse, error)
	// Returns the requested
	// [Recognizer][google.cloud.speech.v2.Recognizer]. Fails with
	// [NOT_FOUND][google.rpc.Code.NOT_FOUND] if the requested recognizer doesn't
	// exist.
	GetRecognizer(context.Context, *GetRecognizerRequest) (*Recognizer, error)
	// Updates the [Recognizer][google.cloud.speech.v2.Recognizer].
	UpdateRecognizer(context.Context, *UpdateRecognizerRequest) (*longrunning.Operation, error)
	// Deletes the [Recognizer][google.cloud.speech.v2.Recognizer].
	DeleteRecognizer(context.Context, *DeleteRecognizerRequest) (*longrunning.Operation, error)
	// Undeletes the [Recognizer][google.cloud.speech.v2.Recognizer].
	UndeleteRecognizer(context.Context, *UndeleteRecognizerRequest) (*longrunning.Operation, error)
	// Performs synchronous Speech recognition: receive results after all audio
	// has been sent and processed.
	Recognize(context.Context, *RecognizeRequest) (*RecognizeResponse, error)
	// Performs bidirectional streaming speech recognition: receive results while
	// sending audio. This method is only available via the gRPC API (not REST).
	StreamingRecognize(Speech_StreamingRecognizeServer) error
	// Performs batch asynchronous speech recognition: send a request with N
	// audio files and receive a long running operation that can be polled to see
	// when the transcriptions are finished.
	BatchRecognize(context.Context, *BatchRecognizeRequest) (*longrunning.Operation, error)
	// Returns the requested [Config][google.cloud.speech.v2.Config].
	GetConfig(context.Context, *GetConfigRequest) (*Config, error)
	// Updates the [Config][google.cloud.speech.v2.Config].
	UpdateConfig(context.Context, *UpdateConfigRequest) (*Config, error)
	// Creates a [CustomClass][google.cloud.speech.v2.CustomClass].
	CreateCustomClass(context.Context, *CreateCustomClassRequest) (*longrunning.Operation, error)
	// Lists CustomClasses.
	ListCustomClasses(context.Context, *ListCustomClassesRequest) (*ListCustomClassesResponse, error)
	// Returns the requested
	// [CustomClass][google.cloud.speech.v2.CustomClass].
	GetCustomClass(context.Context, *GetCustomClassRequest) (*CustomClass, error)
	// Updates the [CustomClass][google.cloud.speech.v2.CustomClass].
	UpdateCustomClass(context.Context, *UpdateCustomClassRequest) (*longrunning.Operation, error)
	// Deletes the [CustomClass][google.cloud.speech.v2.CustomClass].
	DeleteCustomClass(context.Context, *DeleteCustomClassRequest) (*longrunning.Operation, error)
	// Undeletes the [CustomClass][google.cloud.speech.v2.CustomClass].
	UndeleteCustomClass(context.Context, *UndeleteCustomClassRequest) (*longrunning.Operation, error)
	// Creates a [PhraseSet][google.cloud.speech.v2.PhraseSet].
	CreatePhraseSet(context.Context, *CreatePhraseSetRequest) (*longrunning.Operation, error)
	// Lists PhraseSets.
	ListPhraseSets(context.Context, *ListPhraseSetsRequest) (*ListPhraseSetsResponse, error)
	// Returns the requested
	// [PhraseSet][google.cloud.speech.v2.PhraseSet].
	GetPhraseSet(context.Context, *GetPhraseSetRequest) (*PhraseSet, error)
	// Updates the [PhraseSet][google.cloud.speech.v2.PhraseSet].
	UpdatePhraseSet(context.Context, *UpdatePhraseSetRequest) (*longrunning.Operation, error)
	// Deletes the [PhraseSet][google.cloud.speech.v2.PhraseSet].
	DeletePhraseSet(context.Context, *DeletePhraseSetRequest) (*longrunning.Operation, error)
	// Undeletes the [PhraseSet][google.cloud.speech.v2.PhraseSet].
	UndeletePhraseSet(context.Context, *UndeletePhraseSetRequest) (*longrunning.Operation, error)
}

// UnimplementedSpeechServer can be embedded to have forward compatible implementations.
type UnimplementedSpeechServer struct {
}

func (*UnimplementedSpeechServer) CreateRecognizer(context.Context, *CreateRecognizerRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreateRecognizer not implemented")
}
func (*UnimplementedSpeechServer) ListRecognizers(context.Context, *ListRecognizersRequest) (*ListRecognizersResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListRecognizers not implemented")
}
func (*UnimplementedSpeechServer) GetRecognizer(context.Context, *GetRecognizerRequest) (*Recognizer, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetRecognizer not implemented")
}
func (*UnimplementedSpeechServer) UpdateRecognizer(context.Context, *UpdateRecognizerRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdateRecognizer not implemented")
}
func (*UnimplementedSpeechServer) DeleteRecognizer(context.Context, *DeleteRecognizerRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeleteRecognizer not implemented")
}
func (*UnimplementedSpeechServer) UndeleteRecognizer(context.Context, *UndeleteRecognizerRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UndeleteRecognizer not implemented")
}
func (*UnimplementedSpeechServer) Recognize(context.Context, *RecognizeRequest) (*RecognizeResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method Recognize not implemented")
}
func (*UnimplementedSpeechServer) StreamingRecognize(Speech_StreamingRecognizeServer) error {
	return status1.Errorf(codes.Unimplemented, "method StreamingRecognize not implemented")
}
func (*UnimplementedSpeechServer) BatchRecognize(context.Context, *BatchRecognizeRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method BatchRecognize not implemented")
}
func (*UnimplementedSpeechServer) GetConfig(context.Context, *GetConfigRequest) (*Config, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetConfig not implemented")
}
func (*UnimplementedSpeechServer) UpdateConfig(context.Context, *UpdateConfigRequest) (*Config, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdateConfig not implemented")
}
func (*UnimplementedSpeechServer) CreateCustomClass(context.Context, *CreateCustomClassRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreateCustomClass not implemented")
}
func (*UnimplementedSpeechServer) ListCustomClasses(context.Context, *ListCustomClassesRequest) (*ListCustomClassesResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListCustomClasses not implemented")
}
func (*UnimplementedSpeechServer) GetCustomClass(context.Context, *GetCustomClassRequest) (*CustomClass, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetCustomClass not implemented")
}
func (*UnimplementedSpeechServer) UpdateCustomClass(context.Context, *UpdateCustomClassRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdateCustomClass not implemented")
}
func (*UnimplementedSpeechServer) DeleteCustomClass(context.Context, *DeleteCustomClassRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeleteCustomClass not implemented")
}
func (*UnimplementedSpeechServer) UndeleteCustomClass(context.Context, *UndeleteCustomClassRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UndeleteCustomClass not implemented")
}
func (*UnimplementedSpeechServer) CreatePhraseSet(context.Context, *CreatePhraseSetRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreatePhraseSet not implemented")
}
func (*UnimplementedSpeechServer) ListPhraseSets(context.Context, *ListPhraseSetsRequest) (*ListPhraseSetsResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListPhraseSets not implemented")
}
func (*UnimplementedSpeechServer) GetPhraseSet(context.Context, *GetPhraseSetRequest) (*PhraseSet, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method GetPhraseSet not implemented")
}
func (*UnimplementedSpeechServer) UpdatePhraseSet(context.Context, *UpdatePhraseSetRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UpdatePhraseSet not implemented")
}
func (*UnimplementedSpeechServer) DeletePhraseSet(context.Context, *DeletePhraseSetRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeletePhraseSet not implemented")
}
func (*UnimplementedSpeechServer) UndeletePhraseSet(context.Context, *UndeletePhraseSetRequest) (*longrunning.Operation, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method UndeletePhraseSet not implemented")
}

func RegisterSpeechServer(s *grpc.Server, srv SpeechServer) {
	s.RegisterService(&_Speech_serviceDesc, srv)
}

func _Speech_CreateRecognizer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateRecognizerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).CreateRecognizer(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/CreateRecognizer",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).CreateRecognizer(ctx, req.(*CreateRecognizerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_ListRecognizers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListRecognizersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).ListRecognizers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/ListRecognizers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).ListRecognizers(ctx, req.(*ListRecognizersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_GetRecognizer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetRecognizerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).GetRecognizer(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/GetRecognizer",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).GetRecognizer(ctx, req.(*GetRecognizerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_UpdateRecognizer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateRecognizerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).UpdateRecognizer(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/UpdateRecognizer",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).UpdateRecognizer(ctx, req.(*UpdateRecognizerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_DeleteRecognizer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteRecognizerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).DeleteRecognizer(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/DeleteRecognizer",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).DeleteRecognizer(ctx, req.(*DeleteRecognizerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_UndeleteRecognizer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UndeleteRecognizerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).UndeleteRecognizer(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/UndeleteRecognizer",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).UndeleteRecognizer(ctx, req.(*UndeleteRecognizerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_Recognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RecognizeRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).Recognize(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/Recognize",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).Recognize(ctx, req.(*RecognizeRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_StreamingRecognize_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(SpeechServer).StreamingRecognize(&speechStreamingRecognizeServer{stream})
}

type Speech_StreamingRecognizeServer interface {
	Send(*StreamingRecognizeResponse) error
	Recv() (*StreamingRecognizeRequest, error)
	grpc.ServerStream
}

type speechStreamingRecognizeServer struct {
	grpc.ServerStream
}

func (x *speechStreamingRecognizeServer) Send(m *StreamingRecognizeResponse) error {
	return x.ServerStream.SendMsg(m)
}

func (x *speechStreamingRecognizeServer) Recv() (*StreamingRecognizeRequest, error) {
	m := new(StreamingRecognizeRequest)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _Speech_BatchRecognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(BatchRecognizeRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).BatchRecognize(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/BatchRecognize",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).BatchRecognize(ctx, req.(*BatchRecognizeRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).GetConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/GetConfig",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).GetConfig(ctx, req.(*GetConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_UpdateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).UpdateConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/UpdateConfig",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).UpdateConfig(ctx, req.(*UpdateConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_CreateCustomClass_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateCustomClassRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).CreateCustomClass(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/CreateCustomClass",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).CreateCustomClass(ctx, req.(*CreateCustomClassRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_ListCustomClasses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListCustomClassesRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).ListCustomClasses(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/ListCustomClasses",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).ListCustomClasses(ctx, req.(*ListCustomClassesRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_GetCustomClass_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetCustomClassRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).GetCustomClass(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/GetCustomClass",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).GetCustomClass(ctx, req.(*GetCustomClassRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_UpdateCustomClass_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateCustomClassRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).UpdateCustomClass(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/UpdateCustomClass",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).UpdateCustomClass(ctx, req.(*UpdateCustomClassRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_DeleteCustomClass_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteCustomClassRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).DeleteCustomClass(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/DeleteCustomClass",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).DeleteCustomClass(ctx, req.(*DeleteCustomClassRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_UndeleteCustomClass_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UndeleteCustomClassRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).UndeleteCustomClass(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/UndeleteCustomClass",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).UndeleteCustomClass(ctx, req.(*UndeleteCustomClassRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_CreatePhraseSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreatePhraseSetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).CreatePhraseSet(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/CreatePhraseSet",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).CreatePhraseSet(ctx, req.(*CreatePhraseSetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_ListPhraseSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListPhraseSetsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).ListPhraseSets(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/ListPhraseSets",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).ListPhraseSets(ctx, req.(*ListPhraseSetsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_GetPhraseSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPhraseSetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).GetPhraseSet(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/GetPhraseSet",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).GetPhraseSet(ctx, req.(*GetPhraseSetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_UpdatePhraseSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdatePhraseSetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).UpdatePhraseSet(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/UpdatePhraseSet",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).UpdatePhraseSet(ctx, req.(*UpdatePhraseSetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_DeletePhraseSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeletePhraseSetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).DeletePhraseSet(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/DeletePhraseSet",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).DeletePhraseSet(ctx, req.(*DeletePhraseSetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Speech_UndeletePhraseSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UndeletePhraseSetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SpeechServer).UndeletePhraseSet(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.speech.v2.Speech/UndeletePhraseSet",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SpeechServer).UndeletePhraseSet(ctx, req.(*UndeletePhraseSetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Speech_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.cloud.speech.v2.Speech",
	HandlerType: (*SpeechServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreateRecognizer",
			Handler:    _Speech_CreateRecognizer_Handler,
		},
		{
			MethodName: "ListRecognizers",
			Handler:    _Speech_ListRecognizers_Handler,
		},
		{
			MethodName: "GetRecognizer",
			Handler:    _Speech_GetRecognizer_Handler,
		},
		{
			MethodName: "UpdateRecognizer",
			Handler:    _Speech_UpdateRecognizer_Handler,
		},
		{
			MethodName: "DeleteRecognizer",
			Handler:    _Speech_DeleteRecognizer_Handler,
		},
		{
			MethodName: "UndeleteRecognizer",
			Handler:    _Speech_UndeleteRecognizer_Handler,
		},
		{
			MethodName: "Recognize",
			Handler:    _Speech_Recognize_Handler,
		},
		{
			MethodName: "BatchRecognize",
			Handler:    _Speech_BatchRecognize_Handler,
		},
		{
			MethodName: "GetConfig",
			Handler:    _Speech_GetConfig_Handler,
		},
		{
			MethodName: "UpdateConfig",
			Handler:    _Speech_UpdateConfig_Handler,
		},
		{
			MethodName: "CreateCustomClass",
			Handler:    _Speech_CreateCustomClass_Handler,
		},
		{
			MethodName: "ListCustomClasses",
			Handler:    _Speech_ListCustomClasses_Handler,
		},
		{
			MethodName: "GetCustomClass",
			Handler:    _Speech_GetCustomClass_Handler,
		},
		{
			MethodName: "UpdateCustomClass",
			Handler:    _Speech_UpdateCustomClass_Handler,
		},
		{
			MethodName: "DeleteCustomClass",
			Handler:    _Speech_DeleteCustomClass_Handler,
		},
		{
			MethodName: "UndeleteCustomClass",
			Handler:    _Speech_UndeleteCustomClass_Handler,
		},
		{
			MethodName: "CreatePhraseSet",
			Handler:    _Speech_CreatePhraseSet_Handler,
		},
		{
			MethodName: "ListPhraseSets",
			Handler:    _Speech_ListPhraseSets_Handler,
		},
		{
			MethodName: "GetPhraseSet",
			Handler:    _Speech_GetPhraseSet_Handler,
		},
		{
			MethodName: "UpdatePhraseSet",
			Handler:    _Speech_UpdatePhraseSet_Handler,
		},
		{
			MethodName: "DeletePhraseSet",
			Handler:    _Speech_DeletePhraseSet_Handler,
		},
		{
			MethodName: "UndeletePhraseSet",
			Handler:    _Speech_UndeletePhraseSet_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "StreamingRecognize",
			Handler:       _Speech_StreamingRecognize_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
	},
	Metadata: "google/cloud/speech/v2/cloud_speech.proto",
}
