From 1c7e02f6871d3fbd5475a549405ba5b94fd28100 Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Tue, 18 Oct 2022 16:04:53 -0600 Subject: [PATCH] feat(speech): start generating apiv2 (#6891) --- internal/.repo-metadata-full.json | 9 + internal/aliasfix/mappings.go | 4 + internal/gapicgen/generator/config.go | 9 + internal/gapicgen/go.mod | 3 +- internal/gapicgen/go.sum | 6 +- speech/apiv2/doc.go | 177 + speech/apiv2/gapic_metadata.json | 153 + speech/apiv2/speech_client.go | 2545 ++++++ speech/apiv2/speech_client_example_test.go | 819 ++ speech/apiv2/speechpb/cloud_speech.pb.go | 8600 ++++++++++++++++++++ speech/apiv2/version.go | 23 + 11 files changed, 12342 insertions(+), 6 deletions(-) create mode 100644 speech/apiv2/doc.go create mode 100644 speech/apiv2/gapic_metadata.json create mode 100644 speech/apiv2/speech_client.go create mode 100644 speech/apiv2/speech_client_example_test.go create mode 100644 speech/apiv2/speechpb/cloud_speech.pb.go create mode 100644 speech/apiv2/version.go diff --git a/internal/.repo-metadata-full.json b/internal/.repo-metadata-full.json index dd05eb1fbb80..936b73b1b70c 100644 --- a/internal/.repo-metadata-full.json +++ b/internal/.repo-metadata-full.json @@ -1682,6 +1682,15 @@ "release_level": "beta", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/speech/apiv2": { + "distribution_name": "cloud.google.com/go/speech/apiv2", + "description": "Cloud Speech-to-Text API", + "language": "Go", + "client_library_type": "generated", + "docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/speech/latest/apiv2", + "release_level": "beta", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/storage": { "distribution_name": "cloud.google.com/go/storage", "description": "Cloud Storage (GCS)", diff --git a/internal/aliasfix/mappings.go b/internal/aliasfix/mappings.go index 8f5424b4b189..041e1af795a3 100644 --- a/internal/aliasfix/mappings.go +++ b/internal/aliasfix/mappings.go @@ -826,4 +826,8 @@ var GenprotoPkgMigration map[string]Pkg = map[string]Pkg{ ImportPath: "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb", Status: StatusMigrated, }, + "google.golang.org/genproto/googleapis/cloud/speech/v2": { + ImportPath: "cloud.google.com/go/speech/apiv2/speechpb", + Status: StatusMigrated, + }, } diff --git a/internal/gapicgen/generator/config.go b/internal/gapicgen/generator/config.go index aec446eb26ce..3d2bfb40322e 100644 --- a/internal/gapicgen/generator/config.go +++ b/internal/gapicgen/generator/config.go @@ -1764,6 +1764,15 @@ var MicrogenGapicConfigs = []*MicrogenConfig{ // GA after 2022/10/20 ReleaseLevel: "beta", }, + { + InputDirectoryPath: "google/cloud/speech/v2", + Pkg: "speech", + ImportPath: "cloud.google.com/go/speech/apiv2", + GRPCServiceConfigPath: "speech_grpc_service_config.json", + ApiServiceConfigPath: "speech_v2.yaml", + // GA after 2022/11/18 + ReleaseLevel: "beta", + }, // Non-Cloud APIs { diff --git a/internal/gapicgen/go.mod b/internal/gapicgen/go.mod index c0621f8bae92..ce78d5a5216e 100644 --- a/internal/gapicgen/go.mod +++ b/internal/gapicgen/go.mod @@ -3,7 +3,6 @@ module cloud.google.com/go/internal/gapicgen go 1.19 require ( - cloud.google.com/go v0.104.0 cloud.google.com/go/internal/aliasfix v0.0.0 cloud.google.com/go/internal/aliasgen v0.0.0-20221014201223-53a0f9dc7e78 cloud.google.com/go/internal/godocfx v0.0.0-20221014201223-53a0f9dc7e78 @@ -12,7 +11,7 @@ require ( golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0 golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 - google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e + google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55 google.golang.org/protobuf v1.28.1 gopkg.in/src-d/go-git.v4 v4.13.1 gopkg.in/yaml.v2 v2.4.0 diff --git a/internal/gapicgen/go.sum b/internal/gapicgen/go.sum index 5738b02644d2..5c443e5a1df1 100644 --- a/internal/gapicgen/go.sum +++ b/internal/gapicgen/go.sum @@ -1,5 +1,3 @@ -cloud.google.com/go v0.104.0 h1:gSmWO7DY1vOm0MVU6DNXM11BWHHsTUmsC5cv1fuW5X8= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go/internal/godocfx v0.0.0-20221014201223-53a0f9dc7e78 h1:WgnE4zxCN0cKw6Ab+Il10vU6mkQwW9ECzrO166McFdw= cloud.google.com/go/internal/godocfx v0.0.0-20221014201223-53a0f9dc7e78/go.mod h1:NI0jlG07G9GsolCgKd0nUOXMsWUVzC5iGOakJUS6ogg= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= @@ -100,8 +98,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e h1:halCgTFuLWDRD61piiNSxPsARANGD3Xl16hPrLgLiIg= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55 h1:U1u4KB2kx6KR/aJDjQ97hZ15wQs8ZPvDcGcRynBhkvg= +google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55/go.mod h1:45EK0dUbEZ2NHjCeAd2LXmyjAgGUGrpGROgjhC3ADck= google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/speech/apiv2/doc.go b/speech/apiv2/doc.go new file mode 100644 index 000000000000..29f1f281c4a4 --- /dev/null +++ b/speech/apiv2/doc.go @@ -0,0 +1,177 @@ +// 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 +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// Package speech is an auto-generated package for the +// Cloud Speech-to-Text API. +// +// Converts audio to text by applying powerful neural network models. +// +// NOTE: This package is in beta. It is not stable, and may be subject to changes. +// +// # Example usage +// +// To get started with this package, create a client. +// +// ctx := context.Background() +// // This snippet has been automatically generated and should be regarded as a code template only. +// // It will require modifications to work: +// // - It may require correct/in-range values for request initialization. +// // - It may require specifying regional endpoints when creating the service client as shown in: +// // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options +// c, err := speech.NewClient(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// defer c.Close() +// +// The client will use your default application credentials. Clients should be reused instead of created as needed. +// The methods of Client are safe for concurrent use by multiple goroutines. +// The returned client must be Closed when it is done being used. +// +// # Using the Client +// +// The following is an example of making an API call with the newly created client. +// +// ctx := context.Background() +// // This snippet has been automatically generated and should be regarded as a code template only. +// // It will require modifications to work: +// // - It may require correct/in-range values for request initialization. +// // - It may require specifying regional endpoints when creating the service client as shown in: +// // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options +// c, err := speech.NewClient(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// defer c.Close() +// +// req := &speechpb.CreateRecognizerRequest{ +// // TODO: Fill request struct fields. +// // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#CreateRecognizerRequest. +// } +// op, err := c.CreateRecognizer(ctx, req) +// if err != nil { +// // TODO: Handle error. +// } +// +// resp, err := op.Wait(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// // TODO: Use resp. +// _ = resp +// +// # Use of Context +// +// The ctx passed to NewClient is used for authentication requests and +// for creating the underlying connection, but is not used for subsequent calls. +// Individual methods on the client use the ctx given to them. +// +// To close the open connection, use the Close() method. +// +// For information about setting deadlines, reusing contexts, and more +// please visit https://pkg.go.dev/cloud.google.com/go. +package speech // import "cloud.google.com/go/speech/apiv2" + +import ( + "context" + "os" + "runtime" + "strconv" + "strings" + "unicode" + + "google.golang.org/api/option" + "google.golang.org/grpc/metadata" +) + +// For more information on implementing a client constructor hook, see +// https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors. +type clientHookParams struct{} +type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) + +var versionClient string + +func getVersionClient() string { + if versionClient == "" { + return "UNKNOWN" + } + return versionClient +} + +func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { + out, _ := metadata.FromOutgoingContext(ctx) + out = out.Copy() + for _, md := range mds { + for k, v := range md { + out[k] = append(out[k], v...) + } + } + return metadata.NewOutgoingContext(ctx, out) +} + +func checkDisableDeadlines() (bool, error) { + raw, ok := os.LookupEnv("GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE") + if !ok { + return false, nil + } + + b, err := strconv.ParseBool(raw) + return b, err +} + +// DefaultAuthScopes reports the default set of authentication scopes to use with this package. +func DefaultAuthScopes() []string { + return []string{ + "https://www.googleapis.com/auth/cloud-platform", + } +} + +// versionGo returns the Go runtime version. The returned string +// has no whitespace, suitable for reporting in header. +func versionGo() string { + const develPrefix = "devel +" + + s := runtime.Version() + if strings.HasPrefix(s, develPrefix) { + s = s[len(develPrefix):] + if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 { + s = s[:p] + } + return s + } + + notSemverRune := func(r rune) bool { + return !strings.ContainsRune("0123456789.", r) + } + + if strings.HasPrefix(s, "go1") { + s = s[2:] + var prerelease string + if p := strings.IndexFunc(s, notSemverRune); p >= 0 { + s, prerelease = s[:p], s[p:] + } + if strings.HasSuffix(s, ".") { + s += "0" + } else if strings.Count(s, ".") < 2 { + s += ".0" + } + if prerelease != "" { + s += "-" + prerelease + } + return s + } + return "UNKNOWN" +} diff --git a/speech/apiv2/gapic_metadata.json b/speech/apiv2/gapic_metadata.json new file mode 100644 index 000000000000..2e246af0d0ce --- /dev/null +++ b/speech/apiv2/gapic_metadata.json @@ -0,0 +1,153 @@ +{ + "schema": "1.0", + "comment": "This file maps proto services/RPCs to the corresponding library clients/methods.", + "language": "go", + "protoPackage": "google.cloud.speech.v2", + "libraryPackage": "cloud.google.com/go/speech/apiv2", + "services": { + "Speech": { + "clients": { + "grpc": { + "libraryClient": "Client", + "rpcs": { + "BatchRecognize": { + "methods": [ + "BatchRecognize" + ] + }, + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateCustomClass": { + "methods": [ + "CreateCustomClass" + ] + }, + "CreatePhraseSet": { + "methods": [ + "CreatePhraseSet" + ] + }, + "CreateRecognizer": { + "methods": [ + "CreateRecognizer" + ] + }, + "DeleteCustomClass": { + "methods": [ + "DeleteCustomClass" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "DeletePhraseSet": { + "methods": [ + "DeletePhraseSet" + ] + }, + "DeleteRecognizer": { + "methods": [ + "DeleteRecognizer" + ] + }, + "GetConfig": { + "methods": [ + "GetConfig" + ] + }, + "GetCustomClass": { + "methods": [ + "GetCustomClass" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "GetPhraseSet": { + "methods": [ + "GetPhraseSet" + ] + }, + "GetRecognizer": { + "methods": [ + "GetRecognizer" + ] + }, + "ListCustomClasses": { + "methods": [ + "ListCustomClasses" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, + "ListPhraseSets": { + "methods": [ + "ListPhraseSets" + ] + }, + "ListRecognizers": { + "methods": [ + "ListRecognizers" + ] + }, + "Recognize": { + "methods": [ + "Recognize" + ] + }, + "StreamingRecognize": { + "methods": [ + "StreamingRecognize" + ] + }, + "UndeleteCustomClass": { + "methods": [ + "UndeleteCustomClass" + ] + }, + "UndeletePhraseSet": { + "methods": [ + "UndeletePhraseSet" + ] + }, + "UndeleteRecognizer": { + "methods": [ + "UndeleteRecognizer" + ] + }, + "UpdateConfig": { + "methods": [ + "UpdateConfig" + ] + }, + "UpdateCustomClass": { + "methods": [ + "UpdateCustomClass" + ] + }, + "UpdatePhraseSet": { + "methods": [ + "UpdatePhraseSet" + ] + }, + "UpdateRecognizer": { + "methods": [ + "UpdateRecognizer" + ] + } + } + } + } + } + } +} diff --git a/speech/apiv2/speech_client.go b/speech/apiv2/speech_client.go new file mode 100644 index 000000000000..664468874658 --- /dev/null +++ b/speech/apiv2/speech_client.go @@ -0,0 +1,2545 @@ +// 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 +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package speech + +import ( + "context" + "fmt" + "math" + "net/url" + "time" + + "cloud.google.com/go/longrunning" + lroauto "cloud.google.com/go/longrunning/autogen" + speechpb "cloud.google.com/go/speech/apiv2/speechpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + longrunningpb "google.golang.org/genproto/googleapis/longrunning" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/proto" +) + +var newClientHook clientHook + +// CallOptions contains the retry settings for each method of Client. +type CallOptions struct { + CreateRecognizer []gax.CallOption + ListRecognizers []gax.CallOption + GetRecognizer []gax.CallOption + UpdateRecognizer []gax.CallOption + DeleteRecognizer []gax.CallOption + UndeleteRecognizer []gax.CallOption + Recognize []gax.CallOption + StreamingRecognize []gax.CallOption + BatchRecognize []gax.CallOption + GetConfig []gax.CallOption + UpdateConfig []gax.CallOption + CreateCustomClass []gax.CallOption + ListCustomClasses []gax.CallOption + GetCustomClass []gax.CallOption + UpdateCustomClass []gax.CallOption + DeleteCustomClass []gax.CallOption + UndeleteCustomClass []gax.CallOption + CreatePhraseSet []gax.CallOption + ListPhraseSets []gax.CallOption + GetPhraseSet []gax.CallOption + UpdatePhraseSet []gax.CallOption + DeletePhraseSet []gax.CallOption + UndeletePhraseSet []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption +} + +func defaultGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("speech.googleapis.com:443"), + internaloption.WithDefaultMTLSEndpoint("speech.mtls.googleapis.com:443"), + internaloption.WithDefaultAudience("https://speech.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultCallOptions() *CallOptions { + return &CallOptions{ + CreateRecognizer: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListRecognizers: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetRecognizer: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + UpdateRecognizer: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + DeleteRecognizer: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + UndeleteRecognizer: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + Recognize: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + StreamingRecognize: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + BatchRecognize: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetConfig: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + UpdateConfig: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + CreateCustomClass: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListCustomClasses: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetCustomClass: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + UpdateCustomClass: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + DeleteCustomClass: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + UndeleteCustomClass: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + CreatePhraseSet: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListPhraseSets: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetPhraseSet: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + UpdatePhraseSet: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + DeletePhraseSet: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + UndeletePhraseSet: []gax.CallOption{ + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +// internalClient is an interface that defines the methods available from Cloud Speech-to-Text API. +type internalClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + CreateRecognizer(context.Context, *speechpb.CreateRecognizerRequest, ...gax.CallOption) (*CreateRecognizerOperation, error) + CreateRecognizerOperation(name string) *CreateRecognizerOperation + ListRecognizers(context.Context, *speechpb.ListRecognizersRequest, ...gax.CallOption) *RecognizerIterator + GetRecognizer(context.Context, *speechpb.GetRecognizerRequest, ...gax.CallOption) (*speechpb.Recognizer, error) + UpdateRecognizer(context.Context, *speechpb.UpdateRecognizerRequest, ...gax.CallOption) (*UpdateRecognizerOperation, error) + UpdateRecognizerOperation(name string) *UpdateRecognizerOperation + DeleteRecognizer(context.Context, *speechpb.DeleteRecognizerRequest, ...gax.CallOption) (*DeleteRecognizerOperation, error) + DeleteRecognizerOperation(name string) *DeleteRecognizerOperation + UndeleteRecognizer(context.Context, *speechpb.UndeleteRecognizerRequest, ...gax.CallOption) (*UndeleteRecognizerOperation, error) + UndeleteRecognizerOperation(name string) *UndeleteRecognizerOperation + Recognize(context.Context, *speechpb.RecognizeRequest, ...gax.CallOption) (*speechpb.RecognizeResponse, error) + StreamingRecognize(context.Context, ...gax.CallOption) (speechpb.Speech_StreamingRecognizeClient, error) + BatchRecognize(context.Context, *speechpb.BatchRecognizeRequest, ...gax.CallOption) (*BatchRecognizeOperation, error) + BatchRecognizeOperation(name string) *BatchRecognizeOperation + GetConfig(context.Context, *speechpb.GetConfigRequest, ...gax.CallOption) (*speechpb.Config, error) + UpdateConfig(context.Context, *speechpb.UpdateConfigRequest, ...gax.CallOption) (*speechpb.Config, error) + CreateCustomClass(context.Context, *speechpb.CreateCustomClassRequest, ...gax.CallOption) (*CreateCustomClassOperation, error) + CreateCustomClassOperation(name string) *CreateCustomClassOperation + ListCustomClasses(context.Context, *speechpb.ListCustomClassesRequest, ...gax.CallOption) *CustomClassIterator + GetCustomClass(context.Context, *speechpb.GetCustomClassRequest, ...gax.CallOption) (*speechpb.CustomClass, error) + UpdateCustomClass(context.Context, *speechpb.UpdateCustomClassRequest, ...gax.CallOption) (*UpdateCustomClassOperation, error) + UpdateCustomClassOperation(name string) *UpdateCustomClassOperation + DeleteCustomClass(context.Context, *speechpb.DeleteCustomClassRequest, ...gax.CallOption) (*DeleteCustomClassOperation, error) + DeleteCustomClassOperation(name string) *DeleteCustomClassOperation + UndeleteCustomClass(context.Context, *speechpb.UndeleteCustomClassRequest, ...gax.CallOption) (*UndeleteCustomClassOperation, error) + UndeleteCustomClassOperation(name string) *UndeleteCustomClassOperation + CreatePhraseSet(context.Context, *speechpb.CreatePhraseSetRequest, ...gax.CallOption) (*CreatePhraseSetOperation, error) + CreatePhraseSetOperation(name string) *CreatePhraseSetOperation + ListPhraseSets(context.Context, *speechpb.ListPhraseSetsRequest, ...gax.CallOption) *PhraseSetIterator + GetPhraseSet(context.Context, *speechpb.GetPhraseSetRequest, ...gax.CallOption) (*speechpb.PhraseSet, error) + UpdatePhraseSet(context.Context, *speechpb.UpdatePhraseSetRequest, ...gax.CallOption) (*UpdatePhraseSetOperation, error) + UpdatePhraseSetOperation(name string) *UpdatePhraseSetOperation + DeletePhraseSet(context.Context, *speechpb.DeletePhraseSetRequest, ...gax.CallOption) (*DeletePhraseSetOperation, error) + DeletePhraseSetOperation(name string) *DeletePhraseSetOperation + UndeletePhraseSet(context.Context, *speechpb.UndeletePhraseSetRequest, ...gax.CallOption) (*UndeletePhraseSetOperation, error) + UndeletePhraseSetOperation(name string) *UndeletePhraseSetOperation + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator +} + +// Client is a client for interacting with Cloud Speech-to-Text API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// Enables speech transcription and resource management. +type Client struct { + // The internal transport-dependent client. + internalClient internalClient + + // The call options for this service. + CallOptions *CallOptions + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient *lroauto.OperationsClient +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *Client) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *Client) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *Client) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// CreateRecognizer creates a Recognizer. +func (c *Client) CreateRecognizer(ctx context.Context, req *speechpb.CreateRecognizerRequest, opts ...gax.CallOption) (*CreateRecognizerOperation, error) { + return c.internalClient.CreateRecognizer(ctx, req, opts...) +} + +// CreateRecognizerOperation returns a new CreateRecognizerOperation from a given name. +// The name must be that of a previously created CreateRecognizerOperation, possibly from a different process. +func (c *Client) CreateRecognizerOperation(name string) *CreateRecognizerOperation { + return c.internalClient.CreateRecognizerOperation(name) +} + +// ListRecognizers lists Recognizers. +func (c *Client) ListRecognizers(ctx context.Context, req *speechpb.ListRecognizersRequest, opts ...gax.CallOption) *RecognizerIterator { + return c.internalClient.ListRecognizers(ctx, req, opts...) +} + +// GetRecognizer returns the requested +// Recognizer. Fails with +// NOT_FOUND if the requested recognizer doesn’t +// exist. +func (c *Client) GetRecognizer(ctx context.Context, req *speechpb.GetRecognizerRequest, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + return c.internalClient.GetRecognizer(ctx, req, opts...) +} + +// UpdateRecognizer updates the Recognizer. +func (c *Client) UpdateRecognizer(ctx context.Context, req *speechpb.UpdateRecognizerRequest, opts ...gax.CallOption) (*UpdateRecognizerOperation, error) { + return c.internalClient.UpdateRecognizer(ctx, req, opts...) +} + +// UpdateRecognizerOperation returns a new UpdateRecognizerOperation from a given name. +// The name must be that of a previously created UpdateRecognizerOperation, possibly from a different process. +func (c *Client) UpdateRecognizerOperation(name string) *UpdateRecognizerOperation { + return c.internalClient.UpdateRecognizerOperation(name) +} + +// DeleteRecognizer deletes the Recognizer. +func (c *Client) DeleteRecognizer(ctx context.Context, req *speechpb.DeleteRecognizerRequest, opts ...gax.CallOption) (*DeleteRecognizerOperation, error) { + return c.internalClient.DeleteRecognizer(ctx, req, opts...) +} + +// DeleteRecognizerOperation returns a new DeleteRecognizerOperation from a given name. +// The name must be that of a previously created DeleteRecognizerOperation, possibly from a different process. +func (c *Client) DeleteRecognizerOperation(name string) *DeleteRecognizerOperation { + return c.internalClient.DeleteRecognizerOperation(name) +} + +// UndeleteRecognizer undeletes the Recognizer. +func (c *Client) UndeleteRecognizer(ctx context.Context, req *speechpb.UndeleteRecognizerRequest, opts ...gax.CallOption) (*UndeleteRecognizerOperation, error) { + return c.internalClient.UndeleteRecognizer(ctx, req, opts...) +} + +// UndeleteRecognizerOperation returns a new UndeleteRecognizerOperation from a given name. +// The name must be that of a previously created UndeleteRecognizerOperation, possibly from a different process. +func (c *Client) UndeleteRecognizerOperation(name string) *UndeleteRecognizerOperation { + return c.internalClient.UndeleteRecognizerOperation(name) +} + +// Recognize performs synchronous Speech recognition: receive results after all audio +// has been sent and processed. +func (c *Client) Recognize(ctx context.Context, req *speechpb.RecognizeRequest, opts ...gax.CallOption) (*speechpb.RecognizeResponse, error) { + return c.internalClient.Recognize(ctx, req, opts...) +} + +// StreamingRecognize performs bidirectional streaming speech recognition: receive results while +// sending audio. This method is only available via the gRPC API (not REST). +func (c *Client) StreamingRecognize(ctx context.Context, opts ...gax.CallOption) (speechpb.Speech_StreamingRecognizeClient, error) { + return c.internalClient.StreamingRecognize(ctx, opts...) +} + +// BatchRecognize 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. +func (c *Client) BatchRecognize(ctx context.Context, req *speechpb.BatchRecognizeRequest, opts ...gax.CallOption) (*BatchRecognizeOperation, error) { + return c.internalClient.BatchRecognize(ctx, req, opts...) +} + +// BatchRecognizeOperation returns a new BatchRecognizeOperation from a given name. +// The name must be that of a previously created BatchRecognizeOperation, possibly from a different process. +func (c *Client) BatchRecognizeOperation(name string) *BatchRecognizeOperation { + return c.internalClient.BatchRecognizeOperation(name) +} + +// GetConfig returns the requested Config. +func (c *Client) GetConfig(ctx context.Context, req *speechpb.GetConfigRequest, opts ...gax.CallOption) (*speechpb.Config, error) { + return c.internalClient.GetConfig(ctx, req, opts...) +} + +// UpdateConfig updates the Config. +func (c *Client) UpdateConfig(ctx context.Context, req *speechpb.UpdateConfigRequest, opts ...gax.CallOption) (*speechpb.Config, error) { + return c.internalClient.UpdateConfig(ctx, req, opts...) +} + +// CreateCustomClass creates a CustomClass. +func (c *Client) CreateCustomClass(ctx context.Context, req *speechpb.CreateCustomClassRequest, opts ...gax.CallOption) (*CreateCustomClassOperation, error) { + return c.internalClient.CreateCustomClass(ctx, req, opts...) +} + +// CreateCustomClassOperation returns a new CreateCustomClassOperation from a given name. +// The name must be that of a previously created CreateCustomClassOperation, possibly from a different process. +func (c *Client) CreateCustomClassOperation(name string) *CreateCustomClassOperation { + return c.internalClient.CreateCustomClassOperation(name) +} + +// ListCustomClasses lists CustomClasses. +func (c *Client) ListCustomClasses(ctx context.Context, req *speechpb.ListCustomClassesRequest, opts ...gax.CallOption) *CustomClassIterator { + return c.internalClient.ListCustomClasses(ctx, req, opts...) +} + +// GetCustomClass returns the requested +// CustomClass. +func (c *Client) GetCustomClass(ctx context.Context, req *speechpb.GetCustomClassRequest, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + return c.internalClient.GetCustomClass(ctx, req, opts...) +} + +// UpdateCustomClass updates the CustomClass. +func (c *Client) UpdateCustomClass(ctx context.Context, req *speechpb.UpdateCustomClassRequest, opts ...gax.CallOption) (*UpdateCustomClassOperation, error) { + return c.internalClient.UpdateCustomClass(ctx, req, opts...) +} + +// UpdateCustomClassOperation returns a new UpdateCustomClassOperation from a given name. +// The name must be that of a previously created UpdateCustomClassOperation, possibly from a different process. +func (c *Client) UpdateCustomClassOperation(name string) *UpdateCustomClassOperation { + return c.internalClient.UpdateCustomClassOperation(name) +} + +// DeleteCustomClass deletes the CustomClass. +func (c *Client) DeleteCustomClass(ctx context.Context, req *speechpb.DeleteCustomClassRequest, opts ...gax.CallOption) (*DeleteCustomClassOperation, error) { + return c.internalClient.DeleteCustomClass(ctx, req, opts...) +} + +// DeleteCustomClassOperation returns a new DeleteCustomClassOperation from a given name. +// The name must be that of a previously created DeleteCustomClassOperation, possibly from a different process. +func (c *Client) DeleteCustomClassOperation(name string) *DeleteCustomClassOperation { + return c.internalClient.DeleteCustomClassOperation(name) +} + +// UndeleteCustomClass undeletes the CustomClass. +func (c *Client) UndeleteCustomClass(ctx context.Context, req *speechpb.UndeleteCustomClassRequest, opts ...gax.CallOption) (*UndeleteCustomClassOperation, error) { + return c.internalClient.UndeleteCustomClass(ctx, req, opts...) +} + +// UndeleteCustomClassOperation returns a new UndeleteCustomClassOperation from a given name. +// The name must be that of a previously created UndeleteCustomClassOperation, possibly from a different process. +func (c *Client) UndeleteCustomClassOperation(name string) *UndeleteCustomClassOperation { + return c.internalClient.UndeleteCustomClassOperation(name) +} + +// CreatePhraseSet creates a PhraseSet. +func (c *Client) CreatePhraseSet(ctx context.Context, req *speechpb.CreatePhraseSetRequest, opts ...gax.CallOption) (*CreatePhraseSetOperation, error) { + return c.internalClient.CreatePhraseSet(ctx, req, opts...) +} + +// CreatePhraseSetOperation returns a new CreatePhraseSetOperation from a given name. +// The name must be that of a previously created CreatePhraseSetOperation, possibly from a different process. +func (c *Client) CreatePhraseSetOperation(name string) *CreatePhraseSetOperation { + return c.internalClient.CreatePhraseSetOperation(name) +} + +// ListPhraseSets lists PhraseSets. +func (c *Client) ListPhraseSets(ctx context.Context, req *speechpb.ListPhraseSetsRequest, opts ...gax.CallOption) *PhraseSetIterator { + return c.internalClient.ListPhraseSets(ctx, req, opts...) +} + +// GetPhraseSet returns the requested +// PhraseSet. +func (c *Client) GetPhraseSet(ctx context.Context, req *speechpb.GetPhraseSetRequest, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + return c.internalClient.GetPhraseSet(ctx, req, opts...) +} + +// UpdatePhraseSet updates the PhraseSet. +func (c *Client) UpdatePhraseSet(ctx context.Context, req *speechpb.UpdatePhraseSetRequest, opts ...gax.CallOption) (*UpdatePhraseSetOperation, error) { + return c.internalClient.UpdatePhraseSet(ctx, req, opts...) +} + +// UpdatePhraseSetOperation returns a new UpdatePhraseSetOperation from a given name. +// The name must be that of a previously created UpdatePhraseSetOperation, possibly from a different process. +func (c *Client) UpdatePhraseSetOperation(name string) *UpdatePhraseSetOperation { + return c.internalClient.UpdatePhraseSetOperation(name) +} + +// DeletePhraseSet deletes the PhraseSet. +func (c *Client) DeletePhraseSet(ctx context.Context, req *speechpb.DeletePhraseSetRequest, opts ...gax.CallOption) (*DeletePhraseSetOperation, error) { + return c.internalClient.DeletePhraseSet(ctx, req, opts...) +} + +// DeletePhraseSetOperation returns a new DeletePhraseSetOperation from a given name. +// The name must be that of a previously created DeletePhraseSetOperation, possibly from a different process. +func (c *Client) DeletePhraseSetOperation(name string) *DeletePhraseSetOperation { + return c.internalClient.DeletePhraseSetOperation(name) +} + +// UndeletePhraseSet undeletes the PhraseSet. +func (c *Client) UndeletePhraseSet(ctx context.Context, req *speechpb.UndeletePhraseSetRequest, opts ...gax.CallOption) (*UndeletePhraseSetOperation, error) { + return c.internalClient.UndeletePhraseSet(ctx, req, opts...) +} + +// UndeletePhraseSetOperation returns a new UndeletePhraseSetOperation from a given name. +// The name must be that of a previously created UndeletePhraseSetOperation, possibly from a different process. +func (c *Client) UndeletePhraseSetOperation(name string) *UndeletePhraseSetOperation { + return c.internalClient.UndeletePhraseSetOperation(name) +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *Client) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *Client) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *Client) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *Client) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + +// gRPCClient is a client for interacting with Cloud Speech-to-Text API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type gRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE + disableDeadlines bool + + // Points back to the CallOptions field of the containing Client + CallOptions **CallOptions + + // The gRPC API client. + client speechpb.SpeechClient + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + operationsClient longrunningpb.OperationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogMetadata metadata.MD +} + +// NewClient creates a new speech client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// Enables speech transcription and resource management. +func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { + clientOpts := defaultGRPCClientOptions() + if newClientHook != nil { + hookOpts, err := newClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + disableDeadlines, err := checkDisableDeadlines() + if err != nil { + return nil, err + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := Client{CallOptions: defaultCallOptions()} + + c := &gRPCClient{ + connPool: connPool, + disableDeadlines: disableDeadlines, + client: speechpb.NewSpeechClient(connPool), + CallOptions: &client.CallOptions, + operationsClient: longrunningpb.NewOperationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) + if err != nil { + // This error "should not happen", since we are just reusing old connection pool + // and never actually need to dial. + // If this does happen, we could leak connp. However, we cannot close conn: + // If the user invoked the constructor with option.WithGRPCConn, + // we would close a connection that's still in use. + // TODO: investigate error conditions. + return nil, err + } + c.LROClient = &client.LROClient + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *gRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *gRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", versionGo()}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) + c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *gRPCClient) Close() error { + return c.connPool.Close() +} + +func (c *gRPCClient) CreateRecognizer(ctx context.Context, req *speechpb.CreateRecognizerRequest, opts ...gax.CallOption) (*CreateRecognizerOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).CreateRecognizer[0:len((*c.CallOptions).CreateRecognizer):len((*c.CallOptions).CreateRecognizer)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateRecognizer(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateRecognizerOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) ListRecognizers(ctx context.Context, req *speechpb.ListRecognizersRequest, opts ...gax.CallOption) *RecognizerIterator { + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).ListRecognizers[0:len((*c.CallOptions).ListRecognizers):len((*c.CallOptions).ListRecognizers)], opts...) + it := &RecognizerIterator{} + req = proto.Clone(req).(*speechpb.ListRecognizersRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*speechpb.Recognizer, string, error) { + resp := &speechpb.ListRecognizersResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListRecognizers(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetRecognizers(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) GetRecognizer(ctx context.Context, req *speechpb.GetRecognizerRequest, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).GetRecognizer[0:len((*c.CallOptions).GetRecognizer):len((*c.CallOptions).GetRecognizer)], opts...) + var resp *speechpb.Recognizer + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetRecognizer(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdateRecognizer(ctx context.Context, req *speechpb.UpdateRecognizerRequest, opts ...gax.CallOption) (*UpdateRecognizerOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "recognizer.name", url.QueryEscape(req.GetRecognizer().GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).UpdateRecognizer[0:len((*c.CallOptions).UpdateRecognizer):len((*c.CallOptions).UpdateRecognizer)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateRecognizer(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UpdateRecognizerOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) DeleteRecognizer(ctx context.Context, req *speechpb.DeleteRecognizerRequest, opts ...gax.CallOption) (*DeleteRecognizerOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).DeleteRecognizer[0:len((*c.CallOptions).DeleteRecognizer):len((*c.CallOptions).DeleteRecognizer)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.DeleteRecognizer(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeleteRecognizerOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) UndeleteRecognizer(ctx context.Context, req *speechpb.UndeleteRecognizerRequest, opts ...gax.CallOption) (*UndeleteRecognizerOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).UndeleteRecognizer[0:len((*c.CallOptions).UndeleteRecognizer):len((*c.CallOptions).UndeleteRecognizer)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UndeleteRecognizer(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UndeleteRecognizerOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) Recognize(ctx context.Context, req *speechpb.RecognizeRequest, opts ...gax.CallOption) (*speechpb.RecognizeResponse, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "recognizer", url.QueryEscape(req.GetRecognizer()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).Recognize[0:len((*c.CallOptions).Recognize):len((*c.CallOptions).Recognize)], opts...) + var resp *speechpb.RecognizeResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.Recognize(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) StreamingRecognize(ctx context.Context, opts ...gax.CallOption) (speechpb.Speech_StreamingRecognizeClient, error) { + ctx = insertMetadata(ctx, c.xGoogMetadata) + var resp speechpb.Speech_StreamingRecognizeClient + opts = append((*c.CallOptions).StreamingRecognize[0:len((*c.CallOptions).StreamingRecognize):len((*c.CallOptions).StreamingRecognize)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.StreamingRecognize(ctx, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) BatchRecognize(ctx context.Context, req *speechpb.BatchRecognizeRequest, opts ...gax.CallOption) (*BatchRecognizeOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "recognizer", url.QueryEscape(req.GetRecognizer()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).BatchRecognize[0:len((*c.CallOptions).BatchRecognize):len((*c.CallOptions).BatchRecognize)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.BatchRecognize(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &BatchRecognizeOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) GetConfig(ctx context.Context, req *speechpb.GetConfigRequest, opts ...gax.CallOption) (*speechpb.Config, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).GetConfig[0:len((*c.CallOptions).GetConfig):len((*c.CallOptions).GetConfig)], opts...) + var resp *speechpb.Config + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetConfig(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdateConfig(ctx context.Context, req *speechpb.UpdateConfigRequest, opts ...gax.CallOption) (*speechpb.Config, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "config.name", url.QueryEscape(req.GetConfig().GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).UpdateConfig[0:len((*c.CallOptions).UpdateConfig):len((*c.CallOptions).UpdateConfig)], opts...) + var resp *speechpb.Config + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateConfig(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) CreateCustomClass(ctx context.Context, req *speechpb.CreateCustomClassRequest, opts ...gax.CallOption) (*CreateCustomClassOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).CreateCustomClass[0:len((*c.CallOptions).CreateCustomClass):len((*c.CallOptions).CreateCustomClass)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateCustomClass(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateCustomClassOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) ListCustomClasses(ctx context.Context, req *speechpb.ListCustomClassesRequest, opts ...gax.CallOption) *CustomClassIterator { + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).ListCustomClasses[0:len((*c.CallOptions).ListCustomClasses):len((*c.CallOptions).ListCustomClasses)], opts...) + it := &CustomClassIterator{} + req = proto.Clone(req).(*speechpb.ListCustomClassesRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*speechpb.CustomClass, string, error) { + resp := &speechpb.ListCustomClassesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListCustomClasses(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetCustomClasses(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) GetCustomClass(ctx context.Context, req *speechpb.GetCustomClassRequest, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).GetCustomClass[0:len((*c.CallOptions).GetCustomClass):len((*c.CallOptions).GetCustomClass)], opts...) + var resp *speechpb.CustomClass + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetCustomClass(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdateCustomClass(ctx context.Context, req *speechpb.UpdateCustomClassRequest, opts ...gax.CallOption) (*UpdateCustomClassOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "custom_class.name", url.QueryEscape(req.GetCustomClass().GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).UpdateCustomClass[0:len((*c.CallOptions).UpdateCustomClass):len((*c.CallOptions).UpdateCustomClass)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateCustomClass(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UpdateCustomClassOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) DeleteCustomClass(ctx context.Context, req *speechpb.DeleteCustomClassRequest, opts ...gax.CallOption) (*DeleteCustomClassOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).DeleteCustomClass[0:len((*c.CallOptions).DeleteCustomClass):len((*c.CallOptions).DeleteCustomClass)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.DeleteCustomClass(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeleteCustomClassOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) UndeleteCustomClass(ctx context.Context, req *speechpb.UndeleteCustomClassRequest, opts ...gax.CallOption) (*UndeleteCustomClassOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).UndeleteCustomClass[0:len((*c.CallOptions).UndeleteCustomClass):len((*c.CallOptions).UndeleteCustomClass)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UndeleteCustomClass(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UndeleteCustomClassOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) CreatePhraseSet(ctx context.Context, req *speechpb.CreatePhraseSetRequest, opts ...gax.CallOption) (*CreatePhraseSetOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).CreatePhraseSet[0:len((*c.CallOptions).CreatePhraseSet):len((*c.CallOptions).CreatePhraseSet)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreatePhraseSet(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreatePhraseSetOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) ListPhraseSets(ctx context.Context, req *speechpb.ListPhraseSetsRequest, opts ...gax.CallOption) *PhraseSetIterator { + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).ListPhraseSets[0:len((*c.CallOptions).ListPhraseSets):len((*c.CallOptions).ListPhraseSets)], opts...) + it := &PhraseSetIterator{} + req = proto.Clone(req).(*speechpb.ListPhraseSetsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*speechpb.PhraseSet, string, error) { + resp := &speechpb.ListPhraseSetsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListPhraseSets(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetPhraseSets(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) GetPhraseSet(ctx context.Context, req *speechpb.GetPhraseSetRequest, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).GetPhraseSet[0:len((*c.CallOptions).GetPhraseSet):len((*c.CallOptions).GetPhraseSet)], opts...) + var resp *speechpb.PhraseSet + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetPhraseSet(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdatePhraseSet(ctx context.Context, req *speechpb.UpdatePhraseSetRequest, opts ...gax.CallOption) (*UpdatePhraseSetOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "phrase_set.name", url.QueryEscape(req.GetPhraseSet().GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).UpdatePhraseSet[0:len((*c.CallOptions).UpdatePhraseSet):len((*c.CallOptions).UpdatePhraseSet)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdatePhraseSet(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UpdatePhraseSetOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) DeletePhraseSet(ctx context.Context, req *speechpb.DeletePhraseSetRequest, opts ...gax.CallOption) (*DeletePhraseSetOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).DeletePhraseSet[0:len((*c.CallOptions).DeletePhraseSet):len((*c.CallOptions).DeletePhraseSet)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.DeletePhraseSet(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeletePhraseSetOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) UndeletePhraseSet(ctx context.Context, req *speechpb.UndeletePhraseSetRequest, opts ...gax.CallOption) (*UndeletePhraseSetOperation, error) { + if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { + cctx, cancel := context.WithTimeout(ctx, 5000000*time.Millisecond) + defer cancel() + ctx = cctx + } + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).UndeletePhraseSet[0:len((*c.CallOptions).UndeletePhraseSet):len((*c.CallOptions).UndeletePhraseSet)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UndeletePhraseSet(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UndeletePhraseSetOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.operationsClient.CancelOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).DeleteOperation[0:len((*c.CallOptions).DeleteOperation):len((*c.CallOptions).DeleteOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.operationsClient.DeleteOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.GetOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + + ctx = insertMetadata(ctx, c.xGoogMetadata, md) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.ListOperations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// BatchRecognizeOperation manages a long-running operation from BatchRecognize. +type BatchRecognizeOperation struct { + lro *longrunning.Operation +} + +// BatchRecognizeOperation returns a new BatchRecognizeOperation from a given name. +// The name must be that of a previously created BatchRecognizeOperation, possibly from a different process. +func (c *gRPCClient) BatchRecognizeOperation(name string) *BatchRecognizeOperation { + return &BatchRecognizeOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *BatchRecognizeOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.BatchRecognizeResponse, error) { + var resp speechpb.BatchRecognizeResponse + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *BatchRecognizeOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.BatchRecognizeResponse, error) { + var resp speechpb.BatchRecognizeResponse + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *BatchRecognizeOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *BatchRecognizeOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *BatchRecognizeOperation) Name() string { + return op.lro.Name() +} + +// CreateCustomClassOperation manages a long-running operation from CreateCustomClass. +type CreateCustomClassOperation struct { + lro *longrunning.Operation +} + +// CreateCustomClassOperation returns a new CreateCustomClassOperation from a given name. +// The name must be that of a previously created CreateCustomClassOperation, possibly from a different process. +func (c *gRPCClient) CreateCustomClassOperation(name string) *CreateCustomClassOperation { + return &CreateCustomClassOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreateCustomClassOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + var resp speechpb.CustomClass + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreateCustomClassOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + var resp speechpb.CustomClass + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreateCustomClassOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreateCustomClassOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreateCustomClassOperation) Name() string { + return op.lro.Name() +} + +// CreatePhraseSetOperation manages a long-running operation from CreatePhraseSet. +type CreatePhraseSetOperation struct { + lro *longrunning.Operation +} + +// CreatePhraseSetOperation returns a new CreatePhraseSetOperation from a given name. +// The name must be that of a previously created CreatePhraseSetOperation, possibly from a different process. +func (c *gRPCClient) CreatePhraseSetOperation(name string) *CreatePhraseSetOperation { + return &CreatePhraseSetOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreatePhraseSetOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + var resp speechpb.PhraseSet + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreatePhraseSetOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + var resp speechpb.PhraseSet + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreatePhraseSetOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreatePhraseSetOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreatePhraseSetOperation) Name() string { + return op.lro.Name() +} + +// CreateRecognizerOperation manages a long-running operation from CreateRecognizer. +type CreateRecognizerOperation struct { + lro *longrunning.Operation +} + +// CreateRecognizerOperation returns a new CreateRecognizerOperation from a given name. +// The name must be that of a previously created CreateRecognizerOperation, possibly from a different process. +func (c *gRPCClient) CreateRecognizerOperation(name string) *CreateRecognizerOperation { + return &CreateRecognizerOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreateRecognizerOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + var resp speechpb.Recognizer + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreateRecognizerOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + var resp speechpb.Recognizer + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreateRecognizerOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreateRecognizerOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreateRecognizerOperation) Name() string { + return op.lro.Name() +} + +// DeleteCustomClassOperation manages a long-running operation from DeleteCustomClass. +type DeleteCustomClassOperation struct { + lro *longrunning.Operation +} + +// DeleteCustomClassOperation returns a new DeleteCustomClassOperation from a given name. +// The name must be that of a previously created DeleteCustomClassOperation, possibly from a different process. +func (c *gRPCClient) DeleteCustomClassOperation(name string) *DeleteCustomClassOperation { + return &DeleteCustomClassOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *DeleteCustomClassOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + var resp speechpb.CustomClass + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *DeleteCustomClassOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + var resp speechpb.CustomClass + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *DeleteCustomClassOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *DeleteCustomClassOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *DeleteCustomClassOperation) Name() string { + return op.lro.Name() +} + +// DeletePhraseSetOperation manages a long-running operation from DeletePhraseSet. +type DeletePhraseSetOperation struct { + lro *longrunning.Operation +} + +// DeletePhraseSetOperation returns a new DeletePhraseSetOperation from a given name. +// The name must be that of a previously created DeletePhraseSetOperation, possibly from a different process. +func (c *gRPCClient) DeletePhraseSetOperation(name string) *DeletePhraseSetOperation { + return &DeletePhraseSetOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *DeletePhraseSetOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + var resp speechpb.PhraseSet + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *DeletePhraseSetOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + var resp speechpb.PhraseSet + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *DeletePhraseSetOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *DeletePhraseSetOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *DeletePhraseSetOperation) Name() string { + return op.lro.Name() +} + +// DeleteRecognizerOperation manages a long-running operation from DeleteRecognizer. +type DeleteRecognizerOperation struct { + lro *longrunning.Operation +} + +// DeleteRecognizerOperation returns a new DeleteRecognizerOperation from a given name. +// The name must be that of a previously created DeleteRecognizerOperation, possibly from a different process. +func (c *gRPCClient) DeleteRecognizerOperation(name string) *DeleteRecognizerOperation { + return &DeleteRecognizerOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *DeleteRecognizerOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + var resp speechpb.Recognizer + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *DeleteRecognizerOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + var resp speechpb.Recognizer + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *DeleteRecognizerOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *DeleteRecognizerOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *DeleteRecognizerOperation) Name() string { + return op.lro.Name() +} + +// UndeleteCustomClassOperation manages a long-running operation from UndeleteCustomClass. +type UndeleteCustomClassOperation struct { + lro *longrunning.Operation +} + +// UndeleteCustomClassOperation returns a new UndeleteCustomClassOperation from a given name. +// The name must be that of a previously created UndeleteCustomClassOperation, possibly from a different process. +func (c *gRPCClient) UndeleteCustomClassOperation(name string) *UndeleteCustomClassOperation { + return &UndeleteCustomClassOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UndeleteCustomClassOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + var resp speechpb.CustomClass + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UndeleteCustomClassOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + var resp speechpb.CustomClass + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UndeleteCustomClassOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UndeleteCustomClassOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UndeleteCustomClassOperation) Name() string { + return op.lro.Name() +} + +// UndeletePhraseSetOperation manages a long-running operation from UndeletePhraseSet. +type UndeletePhraseSetOperation struct { + lro *longrunning.Operation +} + +// UndeletePhraseSetOperation returns a new UndeletePhraseSetOperation from a given name. +// The name must be that of a previously created UndeletePhraseSetOperation, possibly from a different process. +func (c *gRPCClient) UndeletePhraseSetOperation(name string) *UndeletePhraseSetOperation { + return &UndeletePhraseSetOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UndeletePhraseSetOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + var resp speechpb.PhraseSet + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UndeletePhraseSetOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + var resp speechpb.PhraseSet + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UndeletePhraseSetOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UndeletePhraseSetOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UndeletePhraseSetOperation) Name() string { + return op.lro.Name() +} + +// UndeleteRecognizerOperation manages a long-running operation from UndeleteRecognizer. +type UndeleteRecognizerOperation struct { + lro *longrunning.Operation +} + +// UndeleteRecognizerOperation returns a new UndeleteRecognizerOperation from a given name. +// The name must be that of a previously created UndeleteRecognizerOperation, possibly from a different process. +func (c *gRPCClient) UndeleteRecognizerOperation(name string) *UndeleteRecognizerOperation { + return &UndeleteRecognizerOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UndeleteRecognizerOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + var resp speechpb.Recognizer + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UndeleteRecognizerOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + var resp speechpb.Recognizer + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UndeleteRecognizerOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UndeleteRecognizerOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UndeleteRecognizerOperation) Name() string { + return op.lro.Name() +} + +// UpdateCustomClassOperation manages a long-running operation from UpdateCustomClass. +type UpdateCustomClassOperation struct { + lro *longrunning.Operation +} + +// UpdateCustomClassOperation returns a new UpdateCustomClassOperation from a given name. +// The name must be that of a previously created UpdateCustomClassOperation, possibly from a different process. +func (c *gRPCClient) UpdateCustomClassOperation(name string) *UpdateCustomClassOperation { + return &UpdateCustomClassOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UpdateCustomClassOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + var resp speechpb.CustomClass + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UpdateCustomClassOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.CustomClass, error) { + var resp speechpb.CustomClass + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UpdateCustomClassOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UpdateCustomClassOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UpdateCustomClassOperation) Name() string { + return op.lro.Name() +} + +// UpdatePhraseSetOperation manages a long-running operation from UpdatePhraseSet. +type UpdatePhraseSetOperation struct { + lro *longrunning.Operation +} + +// UpdatePhraseSetOperation returns a new UpdatePhraseSetOperation from a given name. +// The name must be that of a previously created UpdatePhraseSetOperation, possibly from a different process. +func (c *gRPCClient) UpdatePhraseSetOperation(name string) *UpdatePhraseSetOperation { + return &UpdatePhraseSetOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UpdatePhraseSetOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + var resp speechpb.PhraseSet + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UpdatePhraseSetOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.PhraseSet, error) { + var resp speechpb.PhraseSet + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UpdatePhraseSetOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UpdatePhraseSetOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UpdatePhraseSetOperation) Name() string { + return op.lro.Name() +} + +// UpdateRecognizerOperation manages a long-running operation from UpdateRecognizer. +type UpdateRecognizerOperation struct { + lro *longrunning.Operation +} + +// UpdateRecognizerOperation returns a new UpdateRecognizerOperation from a given name. +// The name must be that of a previously created UpdateRecognizerOperation, possibly from a different process. +func (c *gRPCClient) UpdateRecognizerOperation(name string) *UpdateRecognizerOperation { + return &UpdateRecognizerOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UpdateRecognizerOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + var resp speechpb.Recognizer + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UpdateRecognizerOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*speechpb.Recognizer, error) { + var resp speechpb.Recognizer + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UpdateRecognizerOperation) Metadata() (*speechpb.OperationMetadata, error) { + var meta speechpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UpdateRecognizerOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UpdateRecognizerOperation) Name() string { + return op.lro.Name() +} + +// CustomClassIterator manages a stream of *speechpb.CustomClass. +type CustomClassIterator struct { + items []*speechpb.CustomClass + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*speechpb.CustomClass, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *CustomClassIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *CustomClassIterator) Next() (*speechpb.CustomClass, error) { + var item *speechpb.CustomClass + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *CustomClassIterator) bufLen() int { + return len(it.items) +} + +func (it *CustomClassIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// OperationIterator manages a stream of *longrunningpb.Operation. +type OperationIterator struct { + items []*longrunningpb.Operation + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*longrunningpb.Operation, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *OperationIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *OperationIterator) Next() (*longrunningpb.Operation, error) { + var item *longrunningpb.Operation + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *OperationIterator) bufLen() int { + return len(it.items) +} + +func (it *OperationIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// PhraseSetIterator manages a stream of *speechpb.PhraseSet. +type PhraseSetIterator struct { + items []*speechpb.PhraseSet + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*speechpb.PhraseSet, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *PhraseSetIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *PhraseSetIterator) Next() (*speechpb.PhraseSet, error) { + var item *speechpb.PhraseSet + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *PhraseSetIterator) bufLen() int { + return len(it.items) +} + +func (it *PhraseSetIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// RecognizerIterator manages a stream of *speechpb.Recognizer. +type RecognizerIterator struct { + items []*speechpb.Recognizer + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*speechpb.Recognizer, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *RecognizerIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *RecognizerIterator) Next() (*speechpb.Recognizer, error) { + var item *speechpb.Recognizer + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *RecognizerIterator) bufLen() int { + return len(it.items) +} + +func (it *RecognizerIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} diff --git a/speech/apiv2/speech_client_example_test.go b/speech/apiv2/speech_client_example_test.go new file mode 100644 index 000000000000..5803af9755f3 --- /dev/null +++ b/speech/apiv2/speech_client_example_test.go @@ -0,0 +1,819 @@ +// 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 +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package speech_test + +import ( + "context" + "io" + + speech "cloud.google.com/go/speech/apiv2" + speechpb "cloud.google.com/go/speech/apiv2/speechpb" + "google.golang.org/api/iterator" + longrunningpb "google.golang.org/genproto/googleapis/longrunning" +) + +func ExampleNewClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleClient_CreateRecognizer() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.CreateRecognizerRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#CreateRecognizerRequest. + } + op, err := c.CreateRecognizer(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListRecognizers() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.ListRecognizersRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#ListRecognizersRequest. + } + it := c.ListRecognizers(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_GetRecognizer() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.GetRecognizerRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#GetRecognizerRequest. + } + resp, err := c.GetRecognizer(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UpdateRecognizer() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.UpdateRecognizerRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#UpdateRecognizerRequest. + } + op, err := c.UpdateRecognizer(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_DeleteRecognizer() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.DeleteRecognizerRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#DeleteRecognizerRequest. + } + op, err := c.DeleteRecognizer(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UndeleteRecognizer() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.UndeleteRecognizerRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#UndeleteRecognizerRequest. + } + op, err := c.UndeleteRecognizer(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_Recognize() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.RecognizeRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#RecognizeRequest. + } + resp, err := c.Recognize(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_StreamingRecognize() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamingRecognize(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*speechpb.StreamingRecognizeRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_BatchRecognize() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.BatchRecognizeRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#BatchRecognizeRequest. + } + op, err := c.BatchRecognize(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetConfig() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.GetConfigRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#GetConfigRequest. + } + resp, err := c.GetConfig(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UpdateConfig() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.UpdateConfigRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#UpdateConfigRequest. + } + resp, err := c.UpdateConfig(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_CreateCustomClass() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.CreateCustomClassRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#CreateCustomClassRequest. + } + op, err := c.CreateCustomClass(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListCustomClasses() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.ListCustomClassesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#ListCustomClassesRequest. + } + it := c.ListCustomClasses(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_GetCustomClass() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.GetCustomClassRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#GetCustomClassRequest. + } + resp, err := c.GetCustomClass(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UpdateCustomClass() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.UpdateCustomClassRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#UpdateCustomClassRequest. + } + op, err := c.UpdateCustomClass(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_DeleteCustomClass() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.DeleteCustomClassRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#DeleteCustomClassRequest. + } + op, err := c.DeleteCustomClass(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UndeleteCustomClass() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.UndeleteCustomClassRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#UndeleteCustomClassRequest. + } + op, err := c.UndeleteCustomClass(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_CreatePhraseSet() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.CreatePhraseSetRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#CreatePhraseSetRequest. + } + op, err := c.CreatePhraseSet(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListPhraseSets() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.ListPhraseSetsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#ListPhraseSetsRequest. + } + it := c.ListPhraseSets(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_GetPhraseSet() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.GetPhraseSetRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#GetPhraseSetRequest. + } + resp, err := c.GetPhraseSet(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UpdatePhraseSet() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.UpdatePhraseSetRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#UpdatePhraseSetRequest. + } + op, err := c.UpdatePhraseSet(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_DeletePhraseSet() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.DeletePhraseSetRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#DeletePhraseSetRequest. + } + op, err := c.DeletePhraseSet(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UndeletePhraseSet() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &speechpb.UndeletePhraseSetRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/speech/apiv2/speechpb#UndeletePhraseSetRequest. + } + op, err := c.UndeletePhraseSet(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_CancelOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/longrunning#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleClient_DeleteOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/longrunning#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleClient_GetOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/longrunning#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListOperations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := speech.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/longrunning#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/speech/apiv2/speechpb/cloud_speech.pb.go b/speech/apiv2/speechpb/cloud_speech.pb.go new file mode 100644 index 000000000000..7c70b80c44bb --- /dev/null +++ b/speech/apiv2/speechpb/cloud_speech.pb.go @@ -0,0 +1,8600 @@ +// 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.19.4 +// source: google/cloud/speech/v2/cloud_speech.proto + +package speechpb + +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", +} diff --git a/speech/apiv2/version.go b/speech/apiv2/version.go new file mode 100644 index 000000000000..e91afb21aff1 --- /dev/null +++ b/speech/apiv2/version.go @@ -0,0 +1,23 @@ +// 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 gapicgen. DO NOT EDIT. + +package speech + +import "cloud.google.com/go/speech/internal" + +func init() { + versionClient = internal.Version +}