...

Source file src/google.golang.org/genproto/googleapis/cloud/vision/v1p4beta1/product_search_service.pb.go

Documentation: google.golang.org/genproto/googleapis/cloud/vision/v1p4beta1

     1  // Copyright 2019 Google LLC.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  //
    15  
    16  // Code generated by protoc-gen-go. DO NOT EDIT.
    17  // versions:
    18  // 	protoc-gen-go v1.26.0
    19  // 	protoc        v3.12.2
    20  // source: google/cloud/vision/v1p4beta1/product_search_service.proto
    21  
    22  package vision
    23  
    24  import (
    25  	context "context"
    26  	reflect "reflect"
    27  	sync "sync"
    28  
    29  	_ "google.golang.org/genproto/googleapis/api/annotations"
    30  	longrunning "google.golang.org/genproto/googleapis/longrunning"
    31  	status "google.golang.org/genproto/googleapis/rpc/status"
    32  	grpc "google.golang.org/grpc"
    33  	codes "google.golang.org/grpc/codes"
    34  	status1 "google.golang.org/grpc/status"
    35  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    36  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    37  	emptypb "google.golang.org/protobuf/types/known/emptypb"
    38  	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    39  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    40  )
    41  
    42  const (
    43  	// Verify that this generated code is sufficiently up-to-date.
    44  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    45  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    46  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    47  )
    48  
    49  // Enumerates the possible states that the batch request can be in.
    50  type BatchOperationMetadata_State int32
    51  
    52  const (
    53  	// Invalid.
    54  	BatchOperationMetadata_STATE_UNSPECIFIED BatchOperationMetadata_State = 0
    55  	// Request is actively being processed.
    56  	BatchOperationMetadata_PROCESSING BatchOperationMetadata_State = 1
    57  	// The request is done and at least one item has been successfully
    58  	// processed.
    59  	BatchOperationMetadata_SUCCESSFUL BatchOperationMetadata_State = 2
    60  	// The request is done and no item has been successfully processed.
    61  	BatchOperationMetadata_FAILED BatchOperationMetadata_State = 3
    62  	// The request is done after the longrunning.Operations.CancelOperation has
    63  	// been called by the user.  Any records that were processed before the
    64  	// cancel command are output as specified in the request.
    65  	BatchOperationMetadata_CANCELLED BatchOperationMetadata_State = 4
    66  )
    67  
    68  // Enum value maps for BatchOperationMetadata_State.
    69  var (
    70  	BatchOperationMetadata_State_name = map[int32]string{
    71  		0: "STATE_UNSPECIFIED",
    72  		1: "PROCESSING",
    73  		2: "SUCCESSFUL",
    74  		3: "FAILED",
    75  		4: "CANCELLED",
    76  	}
    77  	BatchOperationMetadata_State_value = map[string]int32{
    78  		"STATE_UNSPECIFIED": 0,
    79  		"PROCESSING":        1,
    80  		"SUCCESSFUL":        2,
    81  		"FAILED":            3,
    82  		"CANCELLED":         4,
    83  	}
    84  )
    85  
    86  func (x BatchOperationMetadata_State) Enum() *BatchOperationMetadata_State {
    87  	p := new(BatchOperationMetadata_State)
    88  	*p = x
    89  	return p
    90  }
    91  
    92  func (x BatchOperationMetadata_State) String() string {
    93  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    94  }
    95  
    96  func (BatchOperationMetadata_State) Descriptor() protoreflect.EnumDescriptor {
    97  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_enumTypes[0].Descriptor()
    98  }
    99  
   100  func (BatchOperationMetadata_State) Type() protoreflect.EnumType {
   101  	return &file_google_cloud_vision_v1p4beta1_product_search_service_proto_enumTypes[0]
   102  }
   103  
   104  func (x BatchOperationMetadata_State) Number() protoreflect.EnumNumber {
   105  	return protoreflect.EnumNumber(x)
   106  }
   107  
   108  // Deprecated: Use BatchOperationMetadata_State.Descriptor instead.
   109  func (BatchOperationMetadata_State) EnumDescriptor() ([]byte, []int) {
   110  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{28, 0}
   111  }
   112  
   113  // A Product contains ReferenceImages.
   114  type Product struct {
   115  	state         protoimpl.MessageState
   116  	sizeCache     protoimpl.SizeCache
   117  	unknownFields protoimpl.UnknownFields
   118  
   119  	// The resource name of the product.
   120  	//
   121  	// Format is:
   122  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
   123  	//
   124  	// This field is ignored when creating a product.
   125  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   126  	// The user-provided name for this Product. Must not be empty. Must be at most
   127  	// 4096 characters long.
   128  	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
   129  	// User-provided metadata to be stored with this product. Must be at most 4096
   130  	// characters long.
   131  	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
   132  	// Immutable. The category for the product identified by the reference image.
   133  	// This should be either "homegoods-v2", "apparel-v2", or "toys-v2". The
   134  	// legacy categories "homegoods", "apparel", and "toys" are still supported,
   135  	// but these should not be used for new products.
   136  	ProductCategory string `protobuf:"bytes,4,opt,name=product_category,json=productCategory,proto3" json:"product_category,omitempty"`
   137  	// Key-value pairs that can be attached to a product. At query time,
   138  	// constraints can be specified based on the product_labels.
   139  	//
   140  	// Note that integer values can be provided as strings, e.g. "1199". Only
   141  	// strings with integer values can match a range-based restriction which is
   142  	// to be supported soon.
   143  	//
   144  	// Multiple values can be assigned to the same key. One product may have up to
   145  	// 500 product_labels.
   146  	//
   147  	// Notice that the total number of distinct product_labels over all products
   148  	// in one ProductSet cannot exceed 1M, otherwise the product search pipeline
   149  	// will refuse to work for that ProductSet.
   150  	ProductLabels []*Product_KeyValue `protobuf:"bytes,5,rep,name=product_labels,json=productLabels,proto3" json:"product_labels,omitempty"`
   151  }
   152  
   153  func (x *Product) Reset() {
   154  	*x = Product{}
   155  	if protoimpl.UnsafeEnabled {
   156  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[0]
   157  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   158  		ms.StoreMessageInfo(mi)
   159  	}
   160  }
   161  
   162  func (x *Product) String() string {
   163  	return protoimpl.X.MessageStringOf(x)
   164  }
   165  
   166  func (*Product) ProtoMessage() {}
   167  
   168  func (x *Product) ProtoReflect() protoreflect.Message {
   169  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[0]
   170  	if protoimpl.UnsafeEnabled && x != nil {
   171  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   172  		if ms.LoadMessageInfo() == nil {
   173  			ms.StoreMessageInfo(mi)
   174  		}
   175  		return ms
   176  	}
   177  	return mi.MessageOf(x)
   178  }
   179  
   180  // Deprecated: Use Product.ProtoReflect.Descriptor instead.
   181  func (*Product) Descriptor() ([]byte, []int) {
   182  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{0}
   183  }
   184  
   185  func (x *Product) GetName() string {
   186  	if x != nil {
   187  		return x.Name
   188  	}
   189  	return ""
   190  }
   191  
   192  func (x *Product) GetDisplayName() string {
   193  	if x != nil {
   194  		return x.DisplayName
   195  	}
   196  	return ""
   197  }
   198  
   199  func (x *Product) GetDescription() string {
   200  	if x != nil {
   201  		return x.Description
   202  	}
   203  	return ""
   204  }
   205  
   206  func (x *Product) GetProductCategory() string {
   207  	if x != nil {
   208  		return x.ProductCategory
   209  	}
   210  	return ""
   211  }
   212  
   213  func (x *Product) GetProductLabels() []*Product_KeyValue {
   214  	if x != nil {
   215  		return x.ProductLabels
   216  	}
   217  	return nil
   218  }
   219  
   220  // A ProductSet contains Products. A ProductSet can contain a maximum of 1
   221  // million reference images. If the limit is exceeded, periodic indexing will
   222  // fail.
   223  type ProductSet struct {
   224  	state         protoimpl.MessageState
   225  	sizeCache     protoimpl.SizeCache
   226  	unknownFields protoimpl.UnknownFields
   227  
   228  	// The resource name of the ProductSet.
   229  	//
   230  	// Format is:
   231  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`.
   232  	//
   233  	// This field is ignored when creating a ProductSet.
   234  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   235  	// The user-provided name for this ProductSet. Must not be empty. Must be at
   236  	// most 4096 characters long.
   237  	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
   238  	// Output only. The time at which this ProductSet was last indexed. Query
   239  	// results will reflect all updates before this time. If this ProductSet has
   240  	// never been indexed, this timestamp is the default value
   241  	// "1970-01-01T00:00:00Z".
   242  	//
   243  	// This field is ignored when creating a ProductSet.
   244  	IndexTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=index_time,json=indexTime,proto3" json:"index_time,omitempty"`
   245  	// Output only. If there was an error with indexing the product set, the field
   246  	// is populated.
   247  	//
   248  	// This field is ignored when creating a ProductSet.
   249  	IndexError *status.Status `protobuf:"bytes,4,opt,name=index_error,json=indexError,proto3" json:"index_error,omitempty"`
   250  }
   251  
   252  func (x *ProductSet) Reset() {
   253  	*x = ProductSet{}
   254  	if protoimpl.UnsafeEnabled {
   255  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[1]
   256  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   257  		ms.StoreMessageInfo(mi)
   258  	}
   259  }
   260  
   261  func (x *ProductSet) String() string {
   262  	return protoimpl.X.MessageStringOf(x)
   263  }
   264  
   265  func (*ProductSet) ProtoMessage() {}
   266  
   267  func (x *ProductSet) ProtoReflect() protoreflect.Message {
   268  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[1]
   269  	if protoimpl.UnsafeEnabled && x != nil {
   270  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   271  		if ms.LoadMessageInfo() == nil {
   272  			ms.StoreMessageInfo(mi)
   273  		}
   274  		return ms
   275  	}
   276  	return mi.MessageOf(x)
   277  }
   278  
   279  // Deprecated: Use ProductSet.ProtoReflect.Descriptor instead.
   280  func (*ProductSet) Descriptor() ([]byte, []int) {
   281  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{1}
   282  }
   283  
   284  func (x *ProductSet) GetName() string {
   285  	if x != nil {
   286  		return x.Name
   287  	}
   288  	return ""
   289  }
   290  
   291  func (x *ProductSet) GetDisplayName() string {
   292  	if x != nil {
   293  		return x.DisplayName
   294  	}
   295  	return ""
   296  }
   297  
   298  func (x *ProductSet) GetIndexTime() *timestamppb.Timestamp {
   299  	if x != nil {
   300  		return x.IndexTime
   301  	}
   302  	return nil
   303  }
   304  
   305  func (x *ProductSet) GetIndexError() *status.Status {
   306  	if x != nil {
   307  		return x.IndexError
   308  	}
   309  	return nil
   310  }
   311  
   312  // A `ReferenceImage` represents a product image and its associated metadata,
   313  // such as bounding boxes.
   314  type ReferenceImage struct {
   315  	state         protoimpl.MessageState
   316  	sizeCache     protoimpl.SizeCache
   317  	unknownFields protoimpl.UnknownFields
   318  
   319  	// The resource name of the reference image.
   320  	//
   321  	// Format is:
   322  	//
   323  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`.
   324  	//
   325  	// This field is ignored when creating a reference image.
   326  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   327  	// Required. The Google Cloud Storage URI of the reference image.
   328  	//
   329  	// The URI must start with `gs://`.
   330  	Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
   331  	// Optional. Bounding polygons around the areas of interest in the reference
   332  	// image. If this field is empty, the system will try to detect regions of
   333  	// interest. At most 10 bounding polygons will be used.
   334  	//
   335  	// The provided shape is converted into a non-rotated rectangle. Once
   336  	// converted, the small edge of the rectangle must be greater than or equal
   337  	// to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5
   338  	// is not).
   339  	BoundingPolys []*BoundingPoly `protobuf:"bytes,3,rep,name=bounding_polys,json=boundingPolys,proto3" json:"bounding_polys,omitempty"`
   340  }
   341  
   342  func (x *ReferenceImage) Reset() {
   343  	*x = ReferenceImage{}
   344  	if protoimpl.UnsafeEnabled {
   345  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[2]
   346  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   347  		ms.StoreMessageInfo(mi)
   348  	}
   349  }
   350  
   351  func (x *ReferenceImage) String() string {
   352  	return protoimpl.X.MessageStringOf(x)
   353  }
   354  
   355  func (*ReferenceImage) ProtoMessage() {}
   356  
   357  func (x *ReferenceImage) ProtoReflect() protoreflect.Message {
   358  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[2]
   359  	if protoimpl.UnsafeEnabled && x != nil {
   360  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   361  		if ms.LoadMessageInfo() == nil {
   362  			ms.StoreMessageInfo(mi)
   363  		}
   364  		return ms
   365  	}
   366  	return mi.MessageOf(x)
   367  }
   368  
   369  // Deprecated: Use ReferenceImage.ProtoReflect.Descriptor instead.
   370  func (*ReferenceImage) Descriptor() ([]byte, []int) {
   371  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{2}
   372  }
   373  
   374  func (x *ReferenceImage) GetName() string {
   375  	if x != nil {
   376  		return x.Name
   377  	}
   378  	return ""
   379  }
   380  
   381  func (x *ReferenceImage) GetUri() string {
   382  	if x != nil {
   383  		return x.Uri
   384  	}
   385  	return ""
   386  }
   387  
   388  func (x *ReferenceImage) GetBoundingPolys() []*BoundingPoly {
   389  	if x != nil {
   390  		return x.BoundingPolys
   391  	}
   392  	return nil
   393  }
   394  
   395  // Request message for the `CreateProduct` method.
   396  type CreateProductRequest struct {
   397  	state         protoimpl.MessageState
   398  	sizeCache     protoimpl.SizeCache
   399  	unknownFields protoimpl.UnknownFields
   400  
   401  	// Required. The project in which the Product should be created.
   402  	//
   403  	// Format is
   404  	// `projects/PROJECT_ID/locations/LOC_ID`.
   405  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   406  	// Required. The product to create.
   407  	Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
   408  	// A user-supplied resource id for this Product. If set, the server will
   409  	// attempt to use this value as the resource id. If it is already in use, an
   410  	// error is returned with code ALREADY_EXISTS. Must be at most 128 characters
   411  	// long. It cannot contain the character `/`.
   412  	ProductId string `protobuf:"bytes,3,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"`
   413  }
   414  
   415  func (x *CreateProductRequest) Reset() {
   416  	*x = CreateProductRequest{}
   417  	if protoimpl.UnsafeEnabled {
   418  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[3]
   419  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   420  		ms.StoreMessageInfo(mi)
   421  	}
   422  }
   423  
   424  func (x *CreateProductRequest) String() string {
   425  	return protoimpl.X.MessageStringOf(x)
   426  }
   427  
   428  func (*CreateProductRequest) ProtoMessage() {}
   429  
   430  func (x *CreateProductRequest) ProtoReflect() protoreflect.Message {
   431  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[3]
   432  	if protoimpl.UnsafeEnabled && x != nil {
   433  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   434  		if ms.LoadMessageInfo() == nil {
   435  			ms.StoreMessageInfo(mi)
   436  		}
   437  		return ms
   438  	}
   439  	return mi.MessageOf(x)
   440  }
   441  
   442  // Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead.
   443  func (*CreateProductRequest) Descriptor() ([]byte, []int) {
   444  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{3}
   445  }
   446  
   447  func (x *CreateProductRequest) GetParent() string {
   448  	if x != nil {
   449  		return x.Parent
   450  	}
   451  	return ""
   452  }
   453  
   454  func (x *CreateProductRequest) GetProduct() *Product {
   455  	if x != nil {
   456  		return x.Product
   457  	}
   458  	return nil
   459  }
   460  
   461  func (x *CreateProductRequest) GetProductId() string {
   462  	if x != nil {
   463  		return x.ProductId
   464  	}
   465  	return ""
   466  }
   467  
   468  // Request message for the `ListProducts` method.
   469  type ListProductsRequest struct {
   470  	state         protoimpl.MessageState
   471  	sizeCache     protoimpl.SizeCache
   472  	unknownFields protoimpl.UnknownFields
   473  
   474  	// Required. The project OR ProductSet from which Products should be listed.
   475  	//
   476  	// Format:
   477  	// `projects/PROJECT_ID/locations/LOC_ID`
   478  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   479  	// The maximum number of items to return. Default 10, maximum 100.
   480  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   481  	// The next_page_token returned from a previous List request, if any.
   482  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   483  }
   484  
   485  func (x *ListProductsRequest) Reset() {
   486  	*x = ListProductsRequest{}
   487  	if protoimpl.UnsafeEnabled {
   488  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[4]
   489  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   490  		ms.StoreMessageInfo(mi)
   491  	}
   492  }
   493  
   494  func (x *ListProductsRequest) String() string {
   495  	return protoimpl.X.MessageStringOf(x)
   496  }
   497  
   498  func (*ListProductsRequest) ProtoMessage() {}
   499  
   500  func (x *ListProductsRequest) ProtoReflect() protoreflect.Message {
   501  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[4]
   502  	if protoimpl.UnsafeEnabled && x != nil {
   503  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   504  		if ms.LoadMessageInfo() == nil {
   505  			ms.StoreMessageInfo(mi)
   506  		}
   507  		return ms
   508  	}
   509  	return mi.MessageOf(x)
   510  }
   511  
   512  // Deprecated: Use ListProductsRequest.ProtoReflect.Descriptor instead.
   513  func (*ListProductsRequest) Descriptor() ([]byte, []int) {
   514  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{4}
   515  }
   516  
   517  func (x *ListProductsRequest) GetParent() string {
   518  	if x != nil {
   519  		return x.Parent
   520  	}
   521  	return ""
   522  }
   523  
   524  func (x *ListProductsRequest) GetPageSize() int32 {
   525  	if x != nil {
   526  		return x.PageSize
   527  	}
   528  	return 0
   529  }
   530  
   531  func (x *ListProductsRequest) GetPageToken() string {
   532  	if x != nil {
   533  		return x.PageToken
   534  	}
   535  	return ""
   536  }
   537  
   538  // Response message for the `ListProducts` method.
   539  type ListProductsResponse struct {
   540  	state         protoimpl.MessageState
   541  	sizeCache     protoimpl.SizeCache
   542  	unknownFields protoimpl.UnknownFields
   543  
   544  	// List of products.
   545  	Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"`
   546  	// Token to retrieve the next page of results, or empty if there are no more
   547  	// results in the list.
   548  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   549  }
   550  
   551  func (x *ListProductsResponse) Reset() {
   552  	*x = ListProductsResponse{}
   553  	if protoimpl.UnsafeEnabled {
   554  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[5]
   555  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   556  		ms.StoreMessageInfo(mi)
   557  	}
   558  }
   559  
   560  func (x *ListProductsResponse) String() string {
   561  	return protoimpl.X.MessageStringOf(x)
   562  }
   563  
   564  func (*ListProductsResponse) ProtoMessage() {}
   565  
   566  func (x *ListProductsResponse) ProtoReflect() protoreflect.Message {
   567  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[5]
   568  	if protoimpl.UnsafeEnabled && x != nil {
   569  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   570  		if ms.LoadMessageInfo() == nil {
   571  			ms.StoreMessageInfo(mi)
   572  		}
   573  		return ms
   574  	}
   575  	return mi.MessageOf(x)
   576  }
   577  
   578  // Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead.
   579  func (*ListProductsResponse) Descriptor() ([]byte, []int) {
   580  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{5}
   581  }
   582  
   583  func (x *ListProductsResponse) GetProducts() []*Product {
   584  	if x != nil {
   585  		return x.Products
   586  	}
   587  	return nil
   588  }
   589  
   590  func (x *ListProductsResponse) GetNextPageToken() string {
   591  	if x != nil {
   592  		return x.NextPageToken
   593  	}
   594  	return ""
   595  }
   596  
   597  // Request message for the `GetProduct` method.
   598  type GetProductRequest struct {
   599  	state         protoimpl.MessageState
   600  	sizeCache     protoimpl.SizeCache
   601  	unknownFields protoimpl.UnknownFields
   602  
   603  	// Required. Resource name of the Product to get.
   604  	//
   605  	// Format is:
   606  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
   607  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   608  }
   609  
   610  func (x *GetProductRequest) Reset() {
   611  	*x = GetProductRequest{}
   612  	if protoimpl.UnsafeEnabled {
   613  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[6]
   614  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   615  		ms.StoreMessageInfo(mi)
   616  	}
   617  }
   618  
   619  func (x *GetProductRequest) String() string {
   620  	return protoimpl.X.MessageStringOf(x)
   621  }
   622  
   623  func (*GetProductRequest) ProtoMessage() {}
   624  
   625  func (x *GetProductRequest) ProtoReflect() protoreflect.Message {
   626  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[6]
   627  	if protoimpl.UnsafeEnabled && x != nil {
   628  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   629  		if ms.LoadMessageInfo() == nil {
   630  			ms.StoreMessageInfo(mi)
   631  		}
   632  		return ms
   633  	}
   634  	return mi.MessageOf(x)
   635  }
   636  
   637  // Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead.
   638  func (*GetProductRequest) Descriptor() ([]byte, []int) {
   639  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{6}
   640  }
   641  
   642  func (x *GetProductRequest) GetName() string {
   643  	if x != nil {
   644  		return x.Name
   645  	}
   646  	return ""
   647  }
   648  
   649  // Request message for the `UpdateProduct` method.
   650  type UpdateProductRequest struct {
   651  	state         protoimpl.MessageState
   652  	sizeCache     protoimpl.SizeCache
   653  	unknownFields protoimpl.UnknownFields
   654  
   655  	// Required. The Product resource which replaces the one on the server.
   656  	// product.name is immutable.
   657  	Product *Product `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"`
   658  	// The [FieldMask][google.protobuf.FieldMask] that specifies which fields
   659  	// to update.
   660  	// If update_mask isn't specified, all mutable fields are to be updated.
   661  	// Valid mask paths include `product_labels`, `display_name`, and
   662  	// `description`.
   663  	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
   664  }
   665  
   666  func (x *UpdateProductRequest) Reset() {
   667  	*x = UpdateProductRequest{}
   668  	if protoimpl.UnsafeEnabled {
   669  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[7]
   670  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   671  		ms.StoreMessageInfo(mi)
   672  	}
   673  }
   674  
   675  func (x *UpdateProductRequest) String() string {
   676  	return protoimpl.X.MessageStringOf(x)
   677  }
   678  
   679  func (*UpdateProductRequest) ProtoMessage() {}
   680  
   681  func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message {
   682  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[7]
   683  	if protoimpl.UnsafeEnabled && x != nil {
   684  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   685  		if ms.LoadMessageInfo() == nil {
   686  			ms.StoreMessageInfo(mi)
   687  		}
   688  		return ms
   689  	}
   690  	return mi.MessageOf(x)
   691  }
   692  
   693  // Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead.
   694  func (*UpdateProductRequest) Descriptor() ([]byte, []int) {
   695  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{7}
   696  }
   697  
   698  func (x *UpdateProductRequest) GetProduct() *Product {
   699  	if x != nil {
   700  		return x.Product
   701  	}
   702  	return nil
   703  }
   704  
   705  func (x *UpdateProductRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
   706  	if x != nil {
   707  		return x.UpdateMask
   708  	}
   709  	return nil
   710  }
   711  
   712  // Request message for the `DeleteProduct` method.
   713  type DeleteProductRequest struct {
   714  	state         protoimpl.MessageState
   715  	sizeCache     protoimpl.SizeCache
   716  	unknownFields protoimpl.UnknownFields
   717  
   718  	// Required. Resource name of product to delete.
   719  	//
   720  	// Format is:
   721  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
   722  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   723  }
   724  
   725  func (x *DeleteProductRequest) Reset() {
   726  	*x = DeleteProductRequest{}
   727  	if protoimpl.UnsafeEnabled {
   728  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[8]
   729  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   730  		ms.StoreMessageInfo(mi)
   731  	}
   732  }
   733  
   734  func (x *DeleteProductRequest) String() string {
   735  	return protoimpl.X.MessageStringOf(x)
   736  }
   737  
   738  func (*DeleteProductRequest) ProtoMessage() {}
   739  
   740  func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message {
   741  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[8]
   742  	if protoimpl.UnsafeEnabled && x != nil {
   743  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   744  		if ms.LoadMessageInfo() == nil {
   745  			ms.StoreMessageInfo(mi)
   746  		}
   747  		return ms
   748  	}
   749  	return mi.MessageOf(x)
   750  }
   751  
   752  // Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead.
   753  func (*DeleteProductRequest) Descriptor() ([]byte, []int) {
   754  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{8}
   755  }
   756  
   757  func (x *DeleteProductRequest) GetName() string {
   758  	if x != nil {
   759  		return x.Name
   760  	}
   761  	return ""
   762  }
   763  
   764  // Request message for the `CreateProductSet` method.
   765  type CreateProductSetRequest struct {
   766  	state         protoimpl.MessageState
   767  	sizeCache     protoimpl.SizeCache
   768  	unknownFields protoimpl.UnknownFields
   769  
   770  	// Required. The project in which the ProductSet should be created.
   771  	//
   772  	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
   773  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   774  	// Required. The ProductSet to create.
   775  	ProductSet *ProductSet `protobuf:"bytes,2,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"`
   776  	// A user-supplied resource id for this ProductSet. If set, the server will
   777  	// attempt to use this value as the resource id. If it is already in use, an
   778  	// error is returned with code ALREADY_EXISTS. Must be at most 128 characters
   779  	// long. It cannot contain the character `/`.
   780  	ProductSetId string `protobuf:"bytes,3,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"`
   781  }
   782  
   783  func (x *CreateProductSetRequest) Reset() {
   784  	*x = CreateProductSetRequest{}
   785  	if protoimpl.UnsafeEnabled {
   786  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[9]
   787  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   788  		ms.StoreMessageInfo(mi)
   789  	}
   790  }
   791  
   792  func (x *CreateProductSetRequest) String() string {
   793  	return protoimpl.X.MessageStringOf(x)
   794  }
   795  
   796  func (*CreateProductSetRequest) ProtoMessage() {}
   797  
   798  func (x *CreateProductSetRequest) ProtoReflect() protoreflect.Message {
   799  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[9]
   800  	if protoimpl.UnsafeEnabled && x != nil {
   801  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   802  		if ms.LoadMessageInfo() == nil {
   803  			ms.StoreMessageInfo(mi)
   804  		}
   805  		return ms
   806  	}
   807  	return mi.MessageOf(x)
   808  }
   809  
   810  // Deprecated: Use CreateProductSetRequest.ProtoReflect.Descriptor instead.
   811  func (*CreateProductSetRequest) Descriptor() ([]byte, []int) {
   812  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{9}
   813  }
   814  
   815  func (x *CreateProductSetRequest) GetParent() string {
   816  	if x != nil {
   817  		return x.Parent
   818  	}
   819  	return ""
   820  }
   821  
   822  func (x *CreateProductSetRequest) GetProductSet() *ProductSet {
   823  	if x != nil {
   824  		return x.ProductSet
   825  	}
   826  	return nil
   827  }
   828  
   829  func (x *CreateProductSetRequest) GetProductSetId() string {
   830  	if x != nil {
   831  		return x.ProductSetId
   832  	}
   833  	return ""
   834  }
   835  
   836  // Request message for the `ListProductSets` method.
   837  type ListProductSetsRequest struct {
   838  	state         protoimpl.MessageState
   839  	sizeCache     protoimpl.SizeCache
   840  	unknownFields protoimpl.UnknownFields
   841  
   842  	// Required. The project from which ProductSets should be listed.
   843  	//
   844  	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
   845  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   846  	// The maximum number of items to return. Default 10, maximum 100.
   847  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   848  	// The next_page_token returned from a previous List request, if any.
   849  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   850  }
   851  
   852  func (x *ListProductSetsRequest) Reset() {
   853  	*x = ListProductSetsRequest{}
   854  	if protoimpl.UnsafeEnabled {
   855  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[10]
   856  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   857  		ms.StoreMessageInfo(mi)
   858  	}
   859  }
   860  
   861  func (x *ListProductSetsRequest) String() string {
   862  	return protoimpl.X.MessageStringOf(x)
   863  }
   864  
   865  func (*ListProductSetsRequest) ProtoMessage() {}
   866  
   867  func (x *ListProductSetsRequest) ProtoReflect() protoreflect.Message {
   868  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[10]
   869  	if protoimpl.UnsafeEnabled && x != nil {
   870  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   871  		if ms.LoadMessageInfo() == nil {
   872  			ms.StoreMessageInfo(mi)
   873  		}
   874  		return ms
   875  	}
   876  	return mi.MessageOf(x)
   877  }
   878  
   879  // Deprecated: Use ListProductSetsRequest.ProtoReflect.Descriptor instead.
   880  func (*ListProductSetsRequest) Descriptor() ([]byte, []int) {
   881  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{10}
   882  }
   883  
   884  func (x *ListProductSetsRequest) GetParent() string {
   885  	if x != nil {
   886  		return x.Parent
   887  	}
   888  	return ""
   889  }
   890  
   891  func (x *ListProductSetsRequest) GetPageSize() int32 {
   892  	if x != nil {
   893  		return x.PageSize
   894  	}
   895  	return 0
   896  }
   897  
   898  func (x *ListProductSetsRequest) GetPageToken() string {
   899  	if x != nil {
   900  		return x.PageToken
   901  	}
   902  	return ""
   903  }
   904  
   905  // Response message for the `ListProductSets` method.
   906  type ListProductSetsResponse struct {
   907  	state         protoimpl.MessageState
   908  	sizeCache     protoimpl.SizeCache
   909  	unknownFields protoimpl.UnknownFields
   910  
   911  	// List of ProductSets.
   912  	ProductSets []*ProductSet `protobuf:"bytes,1,rep,name=product_sets,json=productSets,proto3" json:"product_sets,omitempty"`
   913  	// Token to retrieve the next page of results, or empty if there are no more
   914  	// results in the list.
   915  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   916  }
   917  
   918  func (x *ListProductSetsResponse) Reset() {
   919  	*x = ListProductSetsResponse{}
   920  	if protoimpl.UnsafeEnabled {
   921  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[11]
   922  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   923  		ms.StoreMessageInfo(mi)
   924  	}
   925  }
   926  
   927  func (x *ListProductSetsResponse) String() string {
   928  	return protoimpl.X.MessageStringOf(x)
   929  }
   930  
   931  func (*ListProductSetsResponse) ProtoMessage() {}
   932  
   933  func (x *ListProductSetsResponse) ProtoReflect() protoreflect.Message {
   934  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[11]
   935  	if protoimpl.UnsafeEnabled && x != nil {
   936  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   937  		if ms.LoadMessageInfo() == nil {
   938  			ms.StoreMessageInfo(mi)
   939  		}
   940  		return ms
   941  	}
   942  	return mi.MessageOf(x)
   943  }
   944  
   945  // Deprecated: Use ListProductSetsResponse.ProtoReflect.Descriptor instead.
   946  func (*ListProductSetsResponse) Descriptor() ([]byte, []int) {
   947  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{11}
   948  }
   949  
   950  func (x *ListProductSetsResponse) GetProductSets() []*ProductSet {
   951  	if x != nil {
   952  		return x.ProductSets
   953  	}
   954  	return nil
   955  }
   956  
   957  func (x *ListProductSetsResponse) GetNextPageToken() string {
   958  	if x != nil {
   959  		return x.NextPageToken
   960  	}
   961  	return ""
   962  }
   963  
   964  // Request message for the `GetProductSet` method.
   965  type GetProductSetRequest struct {
   966  	state         protoimpl.MessageState
   967  	sizeCache     protoimpl.SizeCache
   968  	unknownFields protoimpl.UnknownFields
   969  
   970  	// Required. Resource name of the ProductSet to get.
   971  	//
   972  	// Format is:
   973  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
   974  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   975  }
   976  
   977  func (x *GetProductSetRequest) Reset() {
   978  	*x = GetProductSetRequest{}
   979  	if protoimpl.UnsafeEnabled {
   980  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[12]
   981  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   982  		ms.StoreMessageInfo(mi)
   983  	}
   984  }
   985  
   986  func (x *GetProductSetRequest) String() string {
   987  	return protoimpl.X.MessageStringOf(x)
   988  }
   989  
   990  func (*GetProductSetRequest) ProtoMessage() {}
   991  
   992  func (x *GetProductSetRequest) ProtoReflect() protoreflect.Message {
   993  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[12]
   994  	if protoimpl.UnsafeEnabled && x != nil {
   995  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   996  		if ms.LoadMessageInfo() == nil {
   997  			ms.StoreMessageInfo(mi)
   998  		}
   999  		return ms
  1000  	}
  1001  	return mi.MessageOf(x)
  1002  }
  1003  
  1004  // Deprecated: Use GetProductSetRequest.ProtoReflect.Descriptor instead.
  1005  func (*GetProductSetRequest) Descriptor() ([]byte, []int) {
  1006  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{12}
  1007  }
  1008  
  1009  func (x *GetProductSetRequest) GetName() string {
  1010  	if x != nil {
  1011  		return x.Name
  1012  	}
  1013  	return ""
  1014  }
  1015  
  1016  // Request message for the `UpdateProductSet` method.
  1017  type UpdateProductSetRequest struct {
  1018  	state         protoimpl.MessageState
  1019  	sizeCache     protoimpl.SizeCache
  1020  	unknownFields protoimpl.UnknownFields
  1021  
  1022  	// Required. The ProductSet resource which replaces the one on the server.
  1023  	ProductSet *ProductSet `protobuf:"bytes,1,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"`
  1024  	// The [FieldMask][google.protobuf.FieldMask] that specifies which fields to
  1025  	// update.
  1026  	// If update_mask isn't specified, all mutable fields are to be updated.
  1027  	// Valid mask path is `display_name`.
  1028  	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
  1029  }
  1030  
  1031  func (x *UpdateProductSetRequest) Reset() {
  1032  	*x = UpdateProductSetRequest{}
  1033  	if protoimpl.UnsafeEnabled {
  1034  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[13]
  1035  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1036  		ms.StoreMessageInfo(mi)
  1037  	}
  1038  }
  1039  
  1040  func (x *UpdateProductSetRequest) String() string {
  1041  	return protoimpl.X.MessageStringOf(x)
  1042  }
  1043  
  1044  func (*UpdateProductSetRequest) ProtoMessage() {}
  1045  
  1046  func (x *UpdateProductSetRequest) ProtoReflect() protoreflect.Message {
  1047  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[13]
  1048  	if protoimpl.UnsafeEnabled && x != nil {
  1049  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1050  		if ms.LoadMessageInfo() == nil {
  1051  			ms.StoreMessageInfo(mi)
  1052  		}
  1053  		return ms
  1054  	}
  1055  	return mi.MessageOf(x)
  1056  }
  1057  
  1058  // Deprecated: Use UpdateProductSetRequest.ProtoReflect.Descriptor instead.
  1059  func (*UpdateProductSetRequest) Descriptor() ([]byte, []int) {
  1060  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{13}
  1061  }
  1062  
  1063  func (x *UpdateProductSetRequest) GetProductSet() *ProductSet {
  1064  	if x != nil {
  1065  		return x.ProductSet
  1066  	}
  1067  	return nil
  1068  }
  1069  
  1070  func (x *UpdateProductSetRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
  1071  	if x != nil {
  1072  		return x.UpdateMask
  1073  	}
  1074  	return nil
  1075  }
  1076  
  1077  // Request message for the `DeleteProductSet` method.
  1078  type DeleteProductSetRequest struct {
  1079  	state         protoimpl.MessageState
  1080  	sizeCache     protoimpl.SizeCache
  1081  	unknownFields protoimpl.UnknownFields
  1082  
  1083  	// Required. Resource name of the ProductSet to delete.
  1084  	//
  1085  	// Format is:
  1086  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
  1087  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1088  }
  1089  
  1090  func (x *DeleteProductSetRequest) Reset() {
  1091  	*x = DeleteProductSetRequest{}
  1092  	if protoimpl.UnsafeEnabled {
  1093  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[14]
  1094  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1095  		ms.StoreMessageInfo(mi)
  1096  	}
  1097  }
  1098  
  1099  func (x *DeleteProductSetRequest) String() string {
  1100  	return protoimpl.X.MessageStringOf(x)
  1101  }
  1102  
  1103  func (*DeleteProductSetRequest) ProtoMessage() {}
  1104  
  1105  func (x *DeleteProductSetRequest) ProtoReflect() protoreflect.Message {
  1106  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[14]
  1107  	if protoimpl.UnsafeEnabled && x != nil {
  1108  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1109  		if ms.LoadMessageInfo() == nil {
  1110  			ms.StoreMessageInfo(mi)
  1111  		}
  1112  		return ms
  1113  	}
  1114  	return mi.MessageOf(x)
  1115  }
  1116  
  1117  // Deprecated: Use DeleteProductSetRequest.ProtoReflect.Descriptor instead.
  1118  func (*DeleteProductSetRequest) Descriptor() ([]byte, []int) {
  1119  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{14}
  1120  }
  1121  
  1122  func (x *DeleteProductSetRequest) GetName() string {
  1123  	if x != nil {
  1124  		return x.Name
  1125  	}
  1126  	return ""
  1127  }
  1128  
  1129  // Request message for the `CreateReferenceImage` method.
  1130  type CreateReferenceImageRequest struct {
  1131  	state         protoimpl.MessageState
  1132  	sizeCache     protoimpl.SizeCache
  1133  	unknownFields protoimpl.UnknownFields
  1134  
  1135  	// Required. Resource name of the product in which to create the reference
  1136  	// image.
  1137  	//
  1138  	// Format is
  1139  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
  1140  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
  1141  	// Required. The reference image to create.
  1142  	// If an image ID is specified, it is ignored.
  1143  	ReferenceImage *ReferenceImage `protobuf:"bytes,2,opt,name=reference_image,json=referenceImage,proto3" json:"reference_image,omitempty"`
  1144  	// A user-supplied resource id for the ReferenceImage to be added. If set,
  1145  	// the server will attempt to use this value as the resource id. If it is
  1146  	// already in use, an error is returned with code ALREADY_EXISTS. Must be at
  1147  	// most 128 characters long. It cannot contain the character `/`.
  1148  	ReferenceImageId string `protobuf:"bytes,3,opt,name=reference_image_id,json=referenceImageId,proto3" json:"reference_image_id,omitempty"`
  1149  }
  1150  
  1151  func (x *CreateReferenceImageRequest) Reset() {
  1152  	*x = CreateReferenceImageRequest{}
  1153  	if protoimpl.UnsafeEnabled {
  1154  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[15]
  1155  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1156  		ms.StoreMessageInfo(mi)
  1157  	}
  1158  }
  1159  
  1160  func (x *CreateReferenceImageRequest) String() string {
  1161  	return protoimpl.X.MessageStringOf(x)
  1162  }
  1163  
  1164  func (*CreateReferenceImageRequest) ProtoMessage() {}
  1165  
  1166  func (x *CreateReferenceImageRequest) ProtoReflect() protoreflect.Message {
  1167  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[15]
  1168  	if protoimpl.UnsafeEnabled && x != nil {
  1169  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1170  		if ms.LoadMessageInfo() == nil {
  1171  			ms.StoreMessageInfo(mi)
  1172  		}
  1173  		return ms
  1174  	}
  1175  	return mi.MessageOf(x)
  1176  }
  1177  
  1178  // Deprecated: Use CreateReferenceImageRequest.ProtoReflect.Descriptor instead.
  1179  func (*CreateReferenceImageRequest) Descriptor() ([]byte, []int) {
  1180  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{15}
  1181  }
  1182  
  1183  func (x *CreateReferenceImageRequest) GetParent() string {
  1184  	if x != nil {
  1185  		return x.Parent
  1186  	}
  1187  	return ""
  1188  }
  1189  
  1190  func (x *CreateReferenceImageRequest) GetReferenceImage() *ReferenceImage {
  1191  	if x != nil {
  1192  		return x.ReferenceImage
  1193  	}
  1194  	return nil
  1195  }
  1196  
  1197  func (x *CreateReferenceImageRequest) GetReferenceImageId() string {
  1198  	if x != nil {
  1199  		return x.ReferenceImageId
  1200  	}
  1201  	return ""
  1202  }
  1203  
  1204  // Request message for the `ListReferenceImages` method.
  1205  type ListReferenceImagesRequest struct {
  1206  	state         protoimpl.MessageState
  1207  	sizeCache     protoimpl.SizeCache
  1208  	unknownFields protoimpl.UnknownFields
  1209  
  1210  	// Required. Resource name of the product containing the reference images.
  1211  	//
  1212  	// Format is
  1213  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
  1214  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
  1215  	// The maximum number of items to return. Default 10, maximum 100.
  1216  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1217  	// A token identifying a page of results to be returned. This is the value
  1218  	// of `nextPageToken` returned in a previous reference image list request.
  1219  	//
  1220  	// Defaults to the first page if not specified.
  1221  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
  1222  }
  1223  
  1224  func (x *ListReferenceImagesRequest) Reset() {
  1225  	*x = ListReferenceImagesRequest{}
  1226  	if protoimpl.UnsafeEnabled {
  1227  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[16]
  1228  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1229  		ms.StoreMessageInfo(mi)
  1230  	}
  1231  }
  1232  
  1233  func (x *ListReferenceImagesRequest) String() string {
  1234  	return protoimpl.X.MessageStringOf(x)
  1235  }
  1236  
  1237  func (*ListReferenceImagesRequest) ProtoMessage() {}
  1238  
  1239  func (x *ListReferenceImagesRequest) ProtoReflect() protoreflect.Message {
  1240  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[16]
  1241  	if protoimpl.UnsafeEnabled && x != nil {
  1242  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1243  		if ms.LoadMessageInfo() == nil {
  1244  			ms.StoreMessageInfo(mi)
  1245  		}
  1246  		return ms
  1247  	}
  1248  	return mi.MessageOf(x)
  1249  }
  1250  
  1251  // Deprecated: Use ListReferenceImagesRequest.ProtoReflect.Descriptor instead.
  1252  func (*ListReferenceImagesRequest) Descriptor() ([]byte, []int) {
  1253  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{16}
  1254  }
  1255  
  1256  func (x *ListReferenceImagesRequest) GetParent() string {
  1257  	if x != nil {
  1258  		return x.Parent
  1259  	}
  1260  	return ""
  1261  }
  1262  
  1263  func (x *ListReferenceImagesRequest) GetPageSize() int32 {
  1264  	if x != nil {
  1265  		return x.PageSize
  1266  	}
  1267  	return 0
  1268  }
  1269  
  1270  func (x *ListReferenceImagesRequest) GetPageToken() string {
  1271  	if x != nil {
  1272  		return x.PageToken
  1273  	}
  1274  	return ""
  1275  }
  1276  
  1277  // Response message for the `ListReferenceImages` method.
  1278  type ListReferenceImagesResponse struct {
  1279  	state         protoimpl.MessageState
  1280  	sizeCache     protoimpl.SizeCache
  1281  	unknownFields protoimpl.UnknownFields
  1282  
  1283  	// The list of reference images.
  1284  	ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"`
  1285  	// The maximum number of items to return. Default 10, maximum 100.
  1286  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1287  	// The next_page_token returned from a previous List request, if any.
  1288  	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
  1289  }
  1290  
  1291  func (x *ListReferenceImagesResponse) Reset() {
  1292  	*x = ListReferenceImagesResponse{}
  1293  	if protoimpl.UnsafeEnabled {
  1294  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[17]
  1295  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1296  		ms.StoreMessageInfo(mi)
  1297  	}
  1298  }
  1299  
  1300  func (x *ListReferenceImagesResponse) String() string {
  1301  	return protoimpl.X.MessageStringOf(x)
  1302  }
  1303  
  1304  func (*ListReferenceImagesResponse) ProtoMessage() {}
  1305  
  1306  func (x *ListReferenceImagesResponse) ProtoReflect() protoreflect.Message {
  1307  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[17]
  1308  	if protoimpl.UnsafeEnabled && x != nil {
  1309  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1310  		if ms.LoadMessageInfo() == nil {
  1311  			ms.StoreMessageInfo(mi)
  1312  		}
  1313  		return ms
  1314  	}
  1315  	return mi.MessageOf(x)
  1316  }
  1317  
  1318  // Deprecated: Use ListReferenceImagesResponse.ProtoReflect.Descriptor instead.
  1319  func (*ListReferenceImagesResponse) Descriptor() ([]byte, []int) {
  1320  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{17}
  1321  }
  1322  
  1323  func (x *ListReferenceImagesResponse) GetReferenceImages() []*ReferenceImage {
  1324  	if x != nil {
  1325  		return x.ReferenceImages
  1326  	}
  1327  	return nil
  1328  }
  1329  
  1330  func (x *ListReferenceImagesResponse) GetPageSize() int32 {
  1331  	if x != nil {
  1332  		return x.PageSize
  1333  	}
  1334  	return 0
  1335  }
  1336  
  1337  func (x *ListReferenceImagesResponse) GetNextPageToken() string {
  1338  	if x != nil {
  1339  		return x.NextPageToken
  1340  	}
  1341  	return ""
  1342  }
  1343  
  1344  // Request message for the `GetReferenceImage` method.
  1345  type GetReferenceImageRequest struct {
  1346  	state         protoimpl.MessageState
  1347  	sizeCache     protoimpl.SizeCache
  1348  	unknownFields protoimpl.UnknownFields
  1349  
  1350  	// Required. The resource name of the ReferenceImage to get.
  1351  	//
  1352  	// Format is:
  1353  	//
  1354  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`.
  1355  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1356  }
  1357  
  1358  func (x *GetReferenceImageRequest) Reset() {
  1359  	*x = GetReferenceImageRequest{}
  1360  	if protoimpl.UnsafeEnabled {
  1361  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[18]
  1362  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1363  		ms.StoreMessageInfo(mi)
  1364  	}
  1365  }
  1366  
  1367  func (x *GetReferenceImageRequest) String() string {
  1368  	return protoimpl.X.MessageStringOf(x)
  1369  }
  1370  
  1371  func (*GetReferenceImageRequest) ProtoMessage() {}
  1372  
  1373  func (x *GetReferenceImageRequest) ProtoReflect() protoreflect.Message {
  1374  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[18]
  1375  	if protoimpl.UnsafeEnabled && x != nil {
  1376  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1377  		if ms.LoadMessageInfo() == nil {
  1378  			ms.StoreMessageInfo(mi)
  1379  		}
  1380  		return ms
  1381  	}
  1382  	return mi.MessageOf(x)
  1383  }
  1384  
  1385  // Deprecated: Use GetReferenceImageRequest.ProtoReflect.Descriptor instead.
  1386  func (*GetReferenceImageRequest) Descriptor() ([]byte, []int) {
  1387  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{18}
  1388  }
  1389  
  1390  func (x *GetReferenceImageRequest) GetName() string {
  1391  	if x != nil {
  1392  		return x.Name
  1393  	}
  1394  	return ""
  1395  }
  1396  
  1397  // Request message for the `DeleteReferenceImage` method.
  1398  type DeleteReferenceImageRequest struct {
  1399  	state         protoimpl.MessageState
  1400  	sizeCache     protoimpl.SizeCache
  1401  	unknownFields protoimpl.UnknownFields
  1402  
  1403  	// Required. The resource name of the reference image to delete.
  1404  	//
  1405  	// Format is:
  1406  	//
  1407  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`
  1408  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1409  }
  1410  
  1411  func (x *DeleteReferenceImageRequest) Reset() {
  1412  	*x = DeleteReferenceImageRequest{}
  1413  	if protoimpl.UnsafeEnabled {
  1414  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[19]
  1415  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1416  		ms.StoreMessageInfo(mi)
  1417  	}
  1418  }
  1419  
  1420  func (x *DeleteReferenceImageRequest) String() string {
  1421  	return protoimpl.X.MessageStringOf(x)
  1422  }
  1423  
  1424  func (*DeleteReferenceImageRequest) ProtoMessage() {}
  1425  
  1426  func (x *DeleteReferenceImageRequest) ProtoReflect() protoreflect.Message {
  1427  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[19]
  1428  	if protoimpl.UnsafeEnabled && x != nil {
  1429  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1430  		if ms.LoadMessageInfo() == nil {
  1431  			ms.StoreMessageInfo(mi)
  1432  		}
  1433  		return ms
  1434  	}
  1435  	return mi.MessageOf(x)
  1436  }
  1437  
  1438  // Deprecated: Use DeleteReferenceImageRequest.ProtoReflect.Descriptor instead.
  1439  func (*DeleteReferenceImageRequest) Descriptor() ([]byte, []int) {
  1440  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{19}
  1441  }
  1442  
  1443  func (x *DeleteReferenceImageRequest) GetName() string {
  1444  	if x != nil {
  1445  		return x.Name
  1446  	}
  1447  	return ""
  1448  }
  1449  
  1450  // Request message for the `AddProductToProductSet` method.
  1451  type AddProductToProductSetRequest struct {
  1452  	state         protoimpl.MessageState
  1453  	sizeCache     protoimpl.SizeCache
  1454  	unknownFields protoimpl.UnknownFields
  1455  
  1456  	// Required. The resource name for the ProductSet to modify.
  1457  	//
  1458  	// Format is:
  1459  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
  1460  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1461  	// Required. The resource name for the Product to be added to this ProductSet.
  1462  	//
  1463  	// Format is:
  1464  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
  1465  	Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
  1466  }
  1467  
  1468  func (x *AddProductToProductSetRequest) Reset() {
  1469  	*x = AddProductToProductSetRequest{}
  1470  	if protoimpl.UnsafeEnabled {
  1471  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[20]
  1472  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1473  		ms.StoreMessageInfo(mi)
  1474  	}
  1475  }
  1476  
  1477  func (x *AddProductToProductSetRequest) String() string {
  1478  	return protoimpl.X.MessageStringOf(x)
  1479  }
  1480  
  1481  func (*AddProductToProductSetRequest) ProtoMessage() {}
  1482  
  1483  func (x *AddProductToProductSetRequest) ProtoReflect() protoreflect.Message {
  1484  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[20]
  1485  	if protoimpl.UnsafeEnabled && x != nil {
  1486  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1487  		if ms.LoadMessageInfo() == nil {
  1488  			ms.StoreMessageInfo(mi)
  1489  		}
  1490  		return ms
  1491  	}
  1492  	return mi.MessageOf(x)
  1493  }
  1494  
  1495  // Deprecated: Use AddProductToProductSetRequest.ProtoReflect.Descriptor instead.
  1496  func (*AddProductToProductSetRequest) Descriptor() ([]byte, []int) {
  1497  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{20}
  1498  }
  1499  
  1500  func (x *AddProductToProductSetRequest) GetName() string {
  1501  	if x != nil {
  1502  		return x.Name
  1503  	}
  1504  	return ""
  1505  }
  1506  
  1507  func (x *AddProductToProductSetRequest) GetProduct() string {
  1508  	if x != nil {
  1509  		return x.Product
  1510  	}
  1511  	return ""
  1512  }
  1513  
  1514  // Request message for the `RemoveProductFromProductSet` method.
  1515  type RemoveProductFromProductSetRequest struct {
  1516  	state         protoimpl.MessageState
  1517  	sizeCache     protoimpl.SizeCache
  1518  	unknownFields protoimpl.UnknownFields
  1519  
  1520  	// Required. The resource name for the ProductSet to modify.
  1521  	//
  1522  	// Format is:
  1523  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
  1524  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1525  	// Required. The resource name for the Product to be removed from this
  1526  	// ProductSet.
  1527  	//
  1528  	// Format is:
  1529  	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
  1530  	Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
  1531  }
  1532  
  1533  func (x *RemoveProductFromProductSetRequest) Reset() {
  1534  	*x = RemoveProductFromProductSetRequest{}
  1535  	if protoimpl.UnsafeEnabled {
  1536  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[21]
  1537  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1538  		ms.StoreMessageInfo(mi)
  1539  	}
  1540  }
  1541  
  1542  func (x *RemoveProductFromProductSetRequest) String() string {
  1543  	return protoimpl.X.MessageStringOf(x)
  1544  }
  1545  
  1546  func (*RemoveProductFromProductSetRequest) ProtoMessage() {}
  1547  
  1548  func (x *RemoveProductFromProductSetRequest) ProtoReflect() protoreflect.Message {
  1549  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[21]
  1550  	if protoimpl.UnsafeEnabled && x != nil {
  1551  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1552  		if ms.LoadMessageInfo() == nil {
  1553  			ms.StoreMessageInfo(mi)
  1554  		}
  1555  		return ms
  1556  	}
  1557  	return mi.MessageOf(x)
  1558  }
  1559  
  1560  // Deprecated: Use RemoveProductFromProductSetRequest.ProtoReflect.Descriptor instead.
  1561  func (*RemoveProductFromProductSetRequest) Descriptor() ([]byte, []int) {
  1562  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{21}
  1563  }
  1564  
  1565  func (x *RemoveProductFromProductSetRequest) GetName() string {
  1566  	if x != nil {
  1567  		return x.Name
  1568  	}
  1569  	return ""
  1570  }
  1571  
  1572  func (x *RemoveProductFromProductSetRequest) GetProduct() string {
  1573  	if x != nil {
  1574  		return x.Product
  1575  	}
  1576  	return ""
  1577  }
  1578  
  1579  // Request message for the `ListProductsInProductSet` method.
  1580  type ListProductsInProductSetRequest struct {
  1581  	state         protoimpl.MessageState
  1582  	sizeCache     protoimpl.SizeCache
  1583  	unknownFields protoimpl.UnknownFields
  1584  
  1585  	// Required. The ProductSet resource for which to retrieve Products.
  1586  	//
  1587  	// Format is:
  1588  	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
  1589  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1590  	// The maximum number of items to return. Default 10, maximum 100.
  1591  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1592  	// The next_page_token returned from a previous List request, if any.
  1593  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
  1594  }
  1595  
  1596  func (x *ListProductsInProductSetRequest) Reset() {
  1597  	*x = ListProductsInProductSetRequest{}
  1598  	if protoimpl.UnsafeEnabled {
  1599  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[22]
  1600  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1601  		ms.StoreMessageInfo(mi)
  1602  	}
  1603  }
  1604  
  1605  func (x *ListProductsInProductSetRequest) String() string {
  1606  	return protoimpl.X.MessageStringOf(x)
  1607  }
  1608  
  1609  func (*ListProductsInProductSetRequest) ProtoMessage() {}
  1610  
  1611  func (x *ListProductsInProductSetRequest) ProtoReflect() protoreflect.Message {
  1612  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[22]
  1613  	if protoimpl.UnsafeEnabled && x != nil {
  1614  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1615  		if ms.LoadMessageInfo() == nil {
  1616  			ms.StoreMessageInfo(mi)
  1617  		}
  1618  		return ms
  1619  	}
  1620  	return mi.MessageOf(x)
  1621  }
  1622  
  1623  // Deprecated: Use ListProductsInProductSetRequest.ProtoReflect.Descriptor instead.
  1624  func (*ListProductsInProductSetRequest) Descriptor() ([]byte, []int) {
  1625  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{22}
  1626  }
  1627  
  1628  func (x *ListProductsInProductSetRequest) GetName() string {
  1629  	if x != nil {
  1630  		return x.Name
  1631  	}
  1632  	return ""
  1633  }
  1634  
  1635  func (x *ListProductsInProductSetRequest) GetPageSize() int32 {
  1636  	if x != nil {
  1637  		return x.PageSize
  1638  	}
  1639  	return 0
  1640  }
  1641  
  1642  func (x *ListProductsInProductSetRequest) GetPageToken() string {
  1643  	if x != nil {
  1644  		return x.PageToken
  1645  	}
  1646  	return ""
  1647  }
  1648  
  1649  // Response message for the `ListProductsInProductSet` method.
  1650  type ListProductsInProductSetResponse struct {
  1651  	state         protoimpl.MessageState
  1652  	sizeCache     protoimpl.SizeCache
  1653  	unknownFields protoimpl.UnknownFields
  1654  
  1655  	// The list of Products.
  1656  	Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"`
  1657  	// Token to retrieve the next page of results, or empty if there are no more
  1658  	// results in the list.
  1659  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
  1660  }
  1661  
  1662  func (x *ListProductsInProductSetResponse) Reset() {
  1663  	*x = ListProductsInProductSetResponse{}
  1664  	if protoimpl.UnsafeEnabled {
  1665  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[23]
  1666  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1667  		ms.StoreMessageInfo(mi)
  1668  	}
  1669  }
  1670  
  1671  func (x *ListProductsInProductSetResponse) String() string {
  1672  	return protoimpl.X.MessageStringOf(x)
  1673  }
  1674  
  1675  func (*ListProductsInProductSetResponse) ProtoMessage() {}
  1676  
  1677  func (x *ListProductsInProductSetResponse) ProtoReflect() protoreflect.Message {
  1678  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[23]
  1679  	if protoimpl.UnsafeEnabled && x != nil {
  1680  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1681  		if ms.LoadMessageInfo() == nil {
  1682  			ms.StoreMessageInfo(mi)
  1683  		}
  1684  		return ms
  1685  	}
  1686  	return mi.MessageOf(x)
  1687  }
  1688  
  1689  // Deprecated: Use ListProductsInProductSetResponse.ProtoReflect.Descriptor instead.
  1690  func (*ListProductsInProductSetResponse) Descriptor() ([]byte, []int) {
  1691  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{23}
  1692  }
  1693  
  1694  func (x *ListProductsInProductSetResponse) GetProducts() []*Product {
  1695  	if x != nil {
  1696  		return x.Products
  1697  	}
  1698  	return nil
  1699  }
  1700  
  1701  func (x *ListProductsInProductSetResponse) GetNextPageToken() string {
  1702  	if x != nil {
  1703  		return x.NextPageToken
  1704  	}
  1705  	return ""
  1706  }
  1707  
  1708  // The Google Cloud Storage location for a csv file which preserves a list of
  1709  // ImportProductSetRequests in each line.
  1710  type ImportProductSetsGcsSource struct {
  1711  	state         protoimpl.MessageState
  1712  	sizeCache     protoimpl.SizeCache
  1713  	unknownFields protoimpl.UnknownFields
  1714  
  1715  	// The Google Cloud Storage URI of the input csv file.
  1716  	//
  1717  	// The URI must start with `gs://`.
  1718  	//
  1719  	// The format of the input csv file should be one image per line.
  1720  	// In each line, there are 8 columns.
  1721  	//
  1722  	// 1.  image-uri
  1723  	// 2.  image-id
  1724  	// 3.  product-set-id
  1725  	// 4.  product-id
  1726  	// 5.  product-category
  1727  	// 6.  product-display-name
  1728  	// 7.  labels
  1729  	// 8.  bounding-poly
  1730  	//
  1731  	// The `image-uri`, `product-set-id`, `product-id`, and `product-category`
  1732  	// columns are required. All other columns are optional.
  1733  	//
  1734  	// If the `ProductSet` or `Product` specified by the `product-set-id` and
  1735  	// `product-id` values does not exist, then the system will create a new
  1736  	// `ProductSet` or `Product` for the image. In this case, the
  1737  	// `product-display-name` column refers to
  1738  	// [display_name][google.cloud.vision.v1p4beta1.Product.display_name], the
  1739  	// `product-category` column refers to
  1740  	// [product_category][google.cloud.vision.v1p4beta1.Product.product_category],
  1741  	// and the `labels` column refers to
  1742  	// [product_labels][google.cloud.vision.v1p4beta1.Product.product_labels].
  1743  	//
  1744  	// The `image-id` column is optional but must be unique if provided. If it is
  1745  	// empty, the system will automatically assign a unique id to the image.
  1746  	//
  1747  	// The `product-display-name` column is optional. If it is empty, the system
  1748  	// sets the [display_name][google.cloud.vision.v1p4beta1.Product.display_name]
  1749  	// field for the product to a space (" "). You can update the `display_name`
  1750  	// later by using the API.
  1751  	//
  1752  	// If a `Product` with the specified `product-id` already exists, then the
  1753  	// system ignores the `product-display-name`, `product-category`, and `labels`
  1754  	// columns.
  1755  	//
  1756  	// The `labels` column (optional) is a line containing a list of
  1757  	// comma-separated key-value pairs, in the following format:
  1758  	//
  1759  	//     "key_1=value_1,key_2=value_2,...,key_n=value_n"
  1760  	//
  1761  	// The `bounding-poly` column (optional) identifies one region of
  1762  	// interest from the image in the same manner as `CreateReferenceImage`. If
  1763  	// you do not specify the `bounding-poly` column, then the system will try to
  1764  	// detect regions of interest automatically.
  1765  	//
  1766  	// At most one `bounding-poly` column is allowed per line. If the image
  1767  	// contains multiple regions of interest, add a line to the CSV file that
  1768  	// includes the same product information, and the `bounding-poly` values for
  1769  	// each region of interest.
  1770  	//
  1771  	// The `bounding-poly` column must contain an even number of comma-separated
  1772  	// numbers, in the format "p1_x,p1_y,p2_x,p2_y,...,pn_x,pn_y". Use
  1773  	// non-negative integers for absolute bounding polygons, and float values
  1774  	// in [0, 1] for normalized bounding polygons.
  1775  	//
  1776  	// The system will resize the image if the image resolution is too
  1777  	// large to process (larger than 20MP).
  1778  	CsvFileUri string `protobuf:"bytes,1,opt,name=csv_file_uri,json=csvFileUri,proto3" json:"csv_file_uri,omitempty"`
  1779  }
  1780  
  1781  func (x *ImportProductSetsGcsSource) Reset() {
  1782  	*x = ImportProductSetsGcsSource{}
  1783  	if protoimpl.UnsafeEnabled {
  1784  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[24]
  1785  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1786  		ms.StoreMessageInfo(mi)
  1787  	}
  1788  }
  1789  
  1790  func (x *ImportProductSetsGcsSource) String() string {
  1791  	return protoimpl.X.MessageStringOf(x)
  1792  }
  1793  
  1794  func (*ImportProductSetsGcsSource) ProtoMessage() {}
  1795  
  1796  func (x *ImportProductSetsGcsSource) ProtoReflect() protoreflect.Message {
  1797  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[24]
  1798  	if protoimpl.UnsafeEnabled && x != nil {
  1799  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1800  		if ms.LoadMessageInfo() == nil {
  1801  			ms.StoreMessageInfo(mi)
  1802  		}
  1803  		return ms
  1804  	}
  1805  	return mi.MessageOf(x)
  1806  }
  1807  
  1808  // Deprecated: Use ImportProductSetsGcsSource.ProtoReflect.Descriptor instead.
  1809  func (*ImportProductSetsGcsSource) Descriptor() ([]byte, []int) {
  1810  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{24}
  1811  }
  1812  
  1813  func (x *ImportProductSetsGcsSource) GetCsvFileUri() string {
  1814  	if x != nil {
  1815  		return x.CsvFileUri
  1816  	}
  1817  	return ""
  1818  }
  1819  
  1820  // The input content for the `ImportProductSets` method.
  1821  type ImportProductSetsInputConfig struct {
  1822  	state         protoimpl.MessageState
  1823  	sizeCache     protoimpl.SizeCache
  1824  	unknownFields protoimpl.UnknownFields
  1825  
  1826  	// The source of the input.
  1827  	//
  1828  	// Types that are assignable to Source:
  1829  	//	*ImportProductSetsInputConfig_GcsSource
  1830  	Source isImportProductSetsInputConfig_Source `protobuf_oneof:"source"`
  1831  }
  1832  
  1833  func (x *ImportProductSetsInputConfig) Reset() {
  1834  	*x = ImportProductSetsInputConfig{}
  1835  	if protoimpl.UnsafeEnabled {
  1836  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[25]
  1837  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1838  		ms.StoreMessageInfo(mi)
  1839  	}
  1840  }
  1841  
  1842  func (x *ImportProductSetsInputConfig) String() string {
  1843  	return protoimpl.X.MessageStringOf(x)
  1844  }
  1845  
  1846  func (*ImportProductSetsInputConfig) ProtoMessage() {}
  1847  
  1848  func (x *ImportProductSetsInputConfig) ProtoReflect() protoreflect.Message {
  1849  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[25]
  1850  	if protoimpl.UnsafeEnabled && x != nil {
  1851  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1852  		if ms.LoadMessageInfo() == nil {
  1853  			ms.StoreMessageInfo(mi)
  1854  		}
  1855  		return ms
  1856  	}
  1857  	return mi.MessageOf(x)
  1858  }
  1859  
  1860  // Deprecated: Use ImportProductSetsInputConfig.ProtoReflect.Descriptor instead.
  1861  func (*ImportProductSetsInputConfig) Descriptor() ([]byte, []int) {
  1862  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{25}
  1863  }
  1864  
  1865  func (m *ImportProductSetsInputConfig) GetSource() isImportProductSetsInputConfig_Source {
  1866  	if m != nil {
  1867  		return m.Source
  1868  	}
  1869  	return nil
  1870  }
  1871  
  1872  func (x *ImportProductSetsInputConfig) GetGcsSource() *ImportProductSetsGcsSource {
  1873  	if x, ok := x.GetSource().(*ImportProductSetsInputConfig_GcsSource); ok {
  1874  		return x.GcsSource
  1875  	}
  1876  	return nil
  1877  }
  1878  
  1879  type isImportProductSetsInputConfig_Source interface {
  1880  	isImportProductSetsInputConfig_Source()
  1881  }
  1882  
  1883  type ImportProductSetsInputConfig_GcsSource struct {
  1884  	// The Google Cloud Storage location for a csv file which preserves a list
  1885  	// of ImportProductSetRequests in each line.
  1886  	GcsSource *ImportProductSetsGcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
  1887  }
  1888  
  1889  func (*ImportProductSetsInputConfig_GcsSource) isImportProductSetsInputConfig_Source() {}
  1890  
  1891  // Request message for the `ImportProductSets` method.
  1892  type ImportProductSetsRequest struct {
  1893  	state         protoimpl.MessageState
  1894  	sizeCache     protoimpl.SizeCache
  1895  	unknownFields protoimpl.UnknownFields
  1896  
  1897  	// Required. The project in which the ProductSets should be imported.
  1898  	//
  1899  	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
  1900  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
  1901  	// Required. The input content for the list of requests.
  1902  	InputConfig *ImportProductSetsInputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
  1903  }
  1904  
  1905  func (x *ImportProductSetsRequest) Reset() {
  1906  	*x = ImportProductSetsRequest{}
  1907  	if protoimpl.UnsafeEnabled {
  1908  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[26]
  1909  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1910  		ms.StoreMessageInfo(mi)
  1911  	}
  1912  }
  1913  
  1914  func (x *ImportProductSetsRequest) String() string {
  1915  	return protoimpl.X.MessageStringOf(x)
  1916  }
  1917  
  1918  func (*ImportProductSetsRequest) ProtoMessage() {}
  1919  
  1920  func (x *ImportProductSetsRequest) ProtoReflect() protoreflect.Message {
  1921  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[26]
  1922  	if protoimpl.UnsafeEnabled && x != nil {
  1923  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1924  		if ms.LoadMessageInfo() == nil {
  1925  			ms.StoreMessageInfo(mi)
  1926  		}
  1927  		return ms
  1928  	}
  1929  	return mi.MessageOf(x)
  1930  }
  1931  
  1932  // Deprecated: Use ImportProductSetsRequest.ProtoReflect.Descriptor instead.
  1933  func (*ImportProductSetsRequest) Descriptor() ([]byte, []int) {
  1934  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{26}
  1935  }
  1936  
  1937  func (x *ImportProductSetsRequest) GetParent() string {
  1938  	if x != nil {
  1939  		return x.Parent
  1940  	}
  1941  	return ""
  1942  }
  1943  
  1944  func (x *ImportProductSetsRequest) GetInputConfig() *ImportProductSetsInputConfig {
  1945  	if x != nil {
  1946  		return x.InputConfig
  1947  	}
  1948  	return nil
  1949  }
  1950  
  1951  // Response message for the `ImportProductSets` method.
  1952  //
  1953  // This message is returned by the
  1954  // [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation]
  1955  // method in the returned
  1956  // [google.longrunning.Operation.response][google.longrunning.Operation.response]
  1957  // field.
  1958  type ImportProductSetsResponse struct {
  1959  	state         protoimpl.MessageState
  1960  	sizeCache     protoimpl.SizeCache
  1961  	unknownFields protoimpl.UnknownFields
  1962  
  1963  	// The list of reference_images that are imported successfully.
  1964  	ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"`
  1965  	// The rpc status for each ImportProductSet request, including both successes
  1966  	// and errors.
  1967  	//
  1968  	// The number of statuses here matches the number of lines in the csv file,
  1969  	// and statuses[i] stores the success or failure status of processing the i-th
  1970  	// line of the csv, starting from line 0.
  1971  	Statuses []*status.Status `protobuf:"bytes,2,rep,name=statuses,proto3" json:"statuses,omitempty"`
  1972  }
  1973  
  1974  func (x *ImportProductSetsResponse) Reset() {
  1975  	*x = ImportProductSetsResponse{}
  1976  	if protoimpl.UnsafeEnabled {
  1977  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[27]
  1978  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1979  		ms.StoreMessageInfo(mi)
  1980  	}
  1981  }
  1982  
  1983  func (x *ImportProductSetsResponse) String() string {
  1984  	return protoimpl.X.MessageStringOf(x)
  1985  }
  1986  
  1987  func (*ImportProductSetsResponse) ProtoMessage() {}
  1988  
  1989  func (x *ImportProductSetsResponse) ProtoReflect() protoreflect.Message {
  1990  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[27]
  1991  	if protoimpl.UnsafeEnabled && x != nil {
  1992  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1993  		if ms.LoadMessageInfo() == nil {
  1994  			ms.StoreMessageInfo(mi)
  1995  		}
  1996  		return ms
  1997  	}
  1998  	return mi.MessageOf(x)
  1999  }
  2000  
  2001  // Deprecated: Use ImportProductSetsResponse.ProtoReflect.Descriptor instead.
  2002  func (*ImportProductSetsResponse) Descriptor() ([]byte, []int) {
  2003  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{27}
  2004  }
  2005  
  2006  func (x *ImportProductSetsResponse) GetReferenceImages() []*ReferenceImage {
  2007  	if x != nil {
  2008  		return x.ReferenceImages
  2009  	}
  2010  	return nil
  2011  }
  2012  
  2013  func (x *ImportProductSetsResponse) GetStatuses() []*status.Status {
  2014  	if x != nil {
  2015  		return x.Statuses
  2016  	}
  2017  	return nil
  2018  }
  2019  
  2020  // Metadata for the batch operations such as the current state.
  2021  //
  2022  // This is included in the `metadata` field of the `Operation` returned by the
  2023  // `GetOperation` call of the `google::longrunning::Operations` service.
  2024  type BatchOperationMetadata struct {
  2025  	state         protoimpl.MessageState
  2026  	sizeCache     protoimpl.SizeCache
  2027  	unknownFields protoimpl.UnknownFields
  2028  
  2029  	// The current state of the batch operation.
  2030  	State BatchOperationMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.vision.v1p4beta1.BatchOperationMetadata_State" json:"state,omitempty"`
  2031  	// The time when the batch request was submitted to the server.
  2032  	SubmitTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
  2033  	// The time when the batch request is finished and
  2034  	// [google.longrunning.Operation.done][google.longrunning.Operation.done] is
  2035  	// set to true.
  2036  	EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
  2037  }
  2038  
  2039  func (x *BatchOperationMetadata) Reset() {
  2040  	*x = BatchOperationMetadata{}
  2041  	if protoimpl.UnsafeEnabled {
  2042  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[28]
  2043  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2044  		ms.StoreMessageInfo(mi)
  2045  	}
  2046  }
  2047  
  2048  func (x *BatchOperationMetadata) String() string {
  2049  	return protoimpl.X.MessageStringOf(x)
  2050  }
  2051  
  2052  func (*BatchOperationMetadata) ProtoMessage() {}
  2053  
  2054  func (x *BatchOperationMetadata) ProtoReflect() protoreflect.Message {
  2055  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[28]
  2056  	if protoimpl.UnsafeEnabled && x != nil {
  2057  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2058  		if ms.LoadMessageInfo() == nil {
  2059  			ms.StoreMessageInfo(mi)
  2060  		}
  2061  		return ms
  2062  	}
  2063  	return mi.MessageOf(x)
  2064  }
  2065  
  2066  // Deprecated: Use BatchOperationMetadata.ProtoReflect.Descriptor instead.
  2067  func (*BatchOperationMetadata) Descriptor() ([]byte, []int) {
  2068  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{28}
  2069  }
  2070  
  2071  func (x *BatchOperationMetadata) GetState() BatchOperationMetadata_State {
  2072  	if x != nil {
  2073  		return x.State
  2074  	}
  2075  	return BatchOperationMetadata_STATE_UNSPECIFIED
  2076  }
  2077  
  2078  func (x *BatchOperationMetadata) GetSubmitTime() *timestamppb.Timestamp {
  2079  	if x != nil {
  2080  		return x.SubmitTime
  2081  	}
  2082  	return nil
  2083  }
  2084  
  2085  func (x *BatchOperationMetadata) GetEndTime() *timestamppb.Timestamp {
  2086  	if x != nil {
  2087  		return x.EndTime
  2088  	}
  2089  	return nil
  2090  }
  2091  
  2092  // Config to control which ProductSet contains the Products to be deleted.
  2093  type ProductSetPurgeConfig struct {
  2094  	state         protoimpl.MessageState
  2095  	sizeCache     protoimpl.SizeCache
  2096  	unknownFields protoimpl.UnknownFields
  2097  
  2098  	// The ProductSet that contains the Products to delete. If a Product is a
  2099  	// member of product_set_id in addition to other ProductSets, the Product will
  2100  	// still be deleted.
  2101  	ProductSetId string `protobuf:"bytes,1,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"`
  2102  }
  2103  
  2104  func (x *ProductSetPurgeConfig) Reset() {
  2105  	*x = ProductSetPurgeConfig{}
  2106  	if protoimpl.UnsafeEnabled {
  2107  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[29]
  2108  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2109  		ms.StoreMessageInfo(mi)
  2110  	}
  2111  }
  2112  
  2113  func (x *ProductSetPurgeConfig) String() string {
  2114  	return protoimpl.X.MessageStringOf(x)
  2115  }
  2116  
  2117  func (*ProductSetPurgeConfig) ProtoMessage() {}
  2118  
  2119  func (x *ProductSetPurgeConfig) ProtoReflect() protoreflect.Message {
  2120  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[29]
  2121  	if protoimpl.UnsafeEnabled && x != nil {
  2122  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2123  		if ms.LoadMessageInfo() == nil {
  2124  			ms.StoreMessageInfo(mi)
  2125  		}
  2126  		return ms
  2127  	}
  2128  	return mi.MessageOf(x)
  2129  }
  2130  
  2131  // Deprecated: Use ProductSetPurgeConfig.ProtoReflect.Descriptor instead.
  2132  func (*ProductSetPurgeConfig) Descriptor() ([]byte, []int) {
  2133  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{29}
  2134  }
  2135  
  2136  func (x *ProductSetPurgeConfig) GetProductSetId() string {
  2137  	if x != nil {
  2138  		return x.ProductSetId
  2139  	}
  2140  	return ""
  2141  }
  2142  
  2143  // Request message for the `PurgeProducts` method.
  2144  type PurgeProductsRequest struct {
  2145  	state         protoimpl.MessageState
  2146  	sizeCache     protoimpl.SizeCache
  2147  	unknownFields protoimpl.UnknownFields
  2148  
  2149  	// The Products to delete.
  2150  	//
  2151  	// Types that are assignable to Target:
  2152  	//	*PurgeProductsRequest_ProductSetPurgeConfig
  2153  	//	*PurgeProductsRequest_DeleteOrphanProducts
  2154  	Target isPurgeProductsRequest_Target `protobuf_oneof:"target"`
  2155  	// Required. The project and location in which the Products should be deleted.
  2156  	//
  2157  	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
  2158  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
  2159  	// The default value is false. Override this value to true to actually perform
  2160  	// the purge.
  2161  	Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
  2162  }
  2163  
  2164  func (x *PurgeProductsRequest) Reset() {
  2165  	*x = PurgeProductsRequest{}
  2166  	if protoimpl.UnsafeEnabled {
  2167  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[30]
  2168  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2169  		ms.StoreMessageInfo(mi)
  2170  	}
  2171  }
  2172  
  2173  func (x *PurgeProductsRequest) String() string {
  2174  	return protoimpl.X.MessageStringOf(x)
  2175  }
  2176  
  2177  func (*PurgeProductsRequest) ProtoMessage() {}
  2178  
  2179  func (x *PurgeProductsRequest) ProtoReflect() protoreflect.Message {
  2180  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[30]
  2181  	if protoimpl.UnsafeEnabled && x != nil {
  2182  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2183  		if ms.LoadMessageInfo() == nil {
  2184  			ms.StoreMessageInfo(mi)
  2185  		}
  2186  		return ms
  2187  	}
  2188  	return mi.MessageOf(x)
  2189  }
  2190  
  2191  // Deprecated: Use PurgeProductsRequest.ProtoReflect.Descriptor instead.
  2192  func (*PurgeProductsRequest) Descriptor() ([]byte, []int) {
  2193  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{30}
  2194  }
  2195  
  2196  func (m *PurgeProductsRequest) GetTarget() isPurgeProductsRequest_Target {
  2197  	if m != nil {
  2198  		return m.Target
  2199  	}
  2200  	return nil
  2201  }
  2202  
  2203  func (x *PurgeProductsRequest) GetProductSetPurgeConfig() *ProductSetPurgeConfig {
  2204  	if x, ok := x.GetTarget().(*PurgeProductsRequest_ProductSetPurgeConfig); ok {
  2205  		return x.ProductSetPurgeConfig
  2206  	}
  2207  	return nil
  2208  }
  2209  
  2210  func (x *PurgeProductsRequest) GetDeleteOrphanProducts() bool {
  2211  	if x, ok := x.GetTarget().(*PurgeProductsRequest_DeleteOrphanProducts); ok {
  2212  		return x.DeleteOrphanProducts
  2213  	}
  2214  	return false
  2215  }
  2216  
  2217  func (x *PurgeProductsRequest) GetParent() string {
  2218  	if x != nil {
  2219  		return x.Parent
  2220  	}
  2221  	return ""
  2222  }
  2223  
  2224  func (x *PurgeProductsRequest) GetForce() bool {
  2225  	if x != nil {
  2226  		return x.Force
  2227  	}
  2228  	return false
  2229  }
  2230  
  2231  type isPurgeProductsRequest_Target interface {
  2232  	isPurgeProductsRequest_Target()
  2233  }
  2234  
  2235  type PurgeProductsRequest_ProductSetPurgeConfig struct {
  2236  	// Specify which ProductSet contains the Products to be deleted.
  2237  	ProductSetPurgeConfig *ProductSetPurgeConfig `protobuf:"bytes,2,opt,name=product_set_purge_config,json=productSetPurgeConfig,proto3,oneof"`
  2238  }
  2239  
  2240  type PurgeProductsRequest_DeleteOrphanProducts struct {
  2241  	// If delete_orphan_products is true, all Products that are not in any
  2242  	// ProductSet will be deleted.
  2243  	DeleteOrphanProducts bool `protobuf:"varint,3,opt,name=delete_orphan_products,json=deleteOrphanProducts,proto3,oneof"`
  2244  }
  2245  
  2246  func (*PurgeProductsRequest_ProductSetPurgeConfig) isPurgeProductsRequest_Target() {}
  2247  
  2248  func (*PurgeProductsRequest_DeleteOrphanProducts) isPurgeProductsRequest_Target() {}
  2249  
  2250  // A product label represented as a key-value pair.
  2251  type Product_KeyValue struct {
  2252  	state         protoimpl.MessageState
  2253  	sizeCache     protoimpl.SizeCache
  2254  	unknownFields protoimpl.UnknownFields
  2255  
  2256  	// The key of the label attached to the product. Cannot be empty and cannot
  2257  	// exceed 128 bytes.
  2258  	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
  2259  	// The value of the label attached to the product. Cannot be empty and
  2260  	// cannot exceed 128 bytes.
  2261  	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
  2262  }
  2263  
  2264  func (x *Product_KeyValue) Reset() {
  2265  	*x = Product_KeyValue{}
  2266  	if protoimpl.UnsafeEnabled {
  2267  		mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[31]
  2268  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2269  		ms.StoreMessageInfo(mi)
  2270  	}
  2271  }
  2272  
  2273  func (x *Product_KeyValue) String() string {
  2274  	return protoimpl.X.MessageStringOf(x)
  2275  }
  2276  
  2277  func (*Product_KeyValue) ProtoMessage() {}
  2278  
  2279  func (x *Product_KeyValue) ProtoReflect() protoreflect.Message {
  2280  	mi := &file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[31]
  2281  	if protoimpl.UnsafeEnabled && x != nil {
  2282  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2283  		if ms.LoadMessageInfo() == nil {
  2284  			ms.StoreMessageInfo(mi)
  2285  		}
  2286  		return ms
  2287  	}
  2288  	return mi.MessageOf(x)
  2289  }
  2290  
  2291  // Deprecated: Use Product_KeyValue.ProtoReflect.Descriptor instead.
  2292  func (*Product_KeyValue) Descriptor() ([]byte, []int) {
  2293  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP(), []int{0, 0}
  2294  }
  2295  
  2296  func (x *Product_KeyValue) GetKey() string {
  2297  	if x != nil {
  2298  		return x.Key
  2299  	}
  2300  	return ""
  2301  }
  2302  
  2303  func (x *Product_KeyValue) GetValue() string {
  2304  	if x != nil {
  2305  		return x.Value
  2306  	}
  2307  	return ""
  2308  }
  2309  
  2310  var File_google_cloud_vision_v1p4beta1_product_search_service_proto protoreflect.FileDescriptor
  2311  
  2312  var file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDesc = []byte{
  2313  	0x0a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76,
  2314  	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
  2315  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73,
  2316  	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x6f,
  2317  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2318  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
  2319  	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
  2320  	0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2321  	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f,
  2322  	0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66,
  2323  	0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72,
  2324  	0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
  2325  	0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c,
  2326  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73,
  2327  	0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65,
  2328  	0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f,
  2329  	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
  2330  	0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  2331  	0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  2332  	0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20,
  2333  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
  2334  	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2335  	0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2336  	0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  2337  	0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74,
  2338  	0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x02, 0x0a, 0x07, 0x50,
  2339  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
  2340  	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69,
  2341  	0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  2342  	0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
  2343  	0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
  2344  	0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
  2345  	0x2e, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67,
  2346  	0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f,
  2347  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12,
  2348  	0x56, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c,
  2349  	0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2350  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
  2351  	0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e,
  2352  	0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2353  	0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61,
  2354  	0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2355  	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
  2356  	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x5e, 0xea, 0x41, 0x5b,
  2357  	0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2358  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12,
  2359  	0x3a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
  2360  	0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c,
  2361  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2362  	0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x7d, 0x22, 0xa7, 0x02, 0x0a, 0x0a,
  2363  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
  2364  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21,
  2365  	0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
  2366  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d,
  2367  	0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
  2368  	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  2369  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
  2370  	0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x69, 0x6d,
  2371  	0x65, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72,
  2372  	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2373  	0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
  2374  	0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x68, 0xea, 0x41, 0x65,
  2375  	0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2376  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2377  	0x65, 0x74, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72,
  2378  	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2379  	0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64,
  2380  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2381  	0x5f, 0x73, 0x65, 0x74, 0x7d, 0x22, 0x9f, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
  2382  	0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  2383  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03,
  2384  	0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03,
  2385  	0x75, 0x72, 0x69, 0x12, 0x57, 0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f,
  2386  	0x70, 0x6f, 0x6c, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f,
  2387  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2388  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6f, 0x75, 0x6e,
  2389  	0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x62,
  2390  	0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x73, 0x3a, 0x88, 0x01, 0xea,
  2391  	0x41, 0x84, 0x01, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2392  	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72,
  2393  	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x70, 0x72, 0x6f, 0x6a, 0x65,
  2394  	0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f,
  2395  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
  2396  	0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f,
  2397  	0x64, 0x75, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49,
  2398  	0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
  2399  	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x7d, 0x22, 0xbf, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61,
  2400  	0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2401  	0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2402  	0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
  2403  	0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
  2404  	0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72,
  2405  	0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02,
  2406  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2407  	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62,
  2408  	0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41,
  2409  	0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72,
  2410  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
  2411  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69,
  2412  	0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2413  	0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
  2414  	0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74,
  2415  	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
  2416  	0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61,
  2417  	0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
  2418  	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
  2419  	0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
  2420  	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
  2421  	0x22, 0x82, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2422  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f,
  2423  	0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f,
  2424  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2425  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64,
  2426  	0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a,
  2427  	0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
  2428  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
  2429  	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64,
  2430  	0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61,
  2431  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f,
  2432  	0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2433  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52,
  2434  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
  2435  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45,
  2436  	0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2437  	0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
  2438  	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
  2439  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72,
  2440  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
  2441  	0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
  2442  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
  2443  	0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61,
  2444  	0x73, 0x6b, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64,
  2445  	0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61,
  2446  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f,
  2447  	0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2448  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52,
  2449  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
  2450  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2451  	0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
  2452  	0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74,
  2453  	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
  2454  	0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61,
  2455  	0x72, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f,
  2456  	0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2457  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
  2458  	0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2459  	0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75,
  2460  	0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2461  	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70,
  2462  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x16,
  2463  	0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52,
  2464  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
  2465  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21,
  2466  	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2467  	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
  2468  	0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67,
  2469  	0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61,
  2470  	0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
  2471  	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
  2472  	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
  2473  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2474  	0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74,
  2475  	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2476  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
  2477  	0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2478  	0x65, 0x74, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12,
  2479  	0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
  2480  	0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61,
  2481  	0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x54, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72,
  2482  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  2483  	0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0,
  2484  	0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f,
  2485  	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f,
  2486  	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa7, 0x01,
  2487  	0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2488  	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x70, 0x72, 0x6f,
  2489  	0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29,
  2490  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2491  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,
  2492  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a,
  2493  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70,
  2494  	0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2495  	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2496  	0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64,
  2497  	0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x57, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74,
  2498  	0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
  2499  	0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2500  	0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
  2501  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
  2502  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  2503  	0x22, 0xe7, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
  2504  	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2505  	0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2506  	0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
  2507  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
  2508  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
  2509  	0x5b, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61,
  2510  	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2511  	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2512  	0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
  2513  	0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x72, 0x65,
  2514  	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12,
  2515  	0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f,
  2516  	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
  2517  	0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x1a, 0x4c,
  2518  	0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
  2519  	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72,
  2520  	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41,
  2521  	0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2522  	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2523  	0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65,
  2524  	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67,
  2525  	0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
  2526  	0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54,
  2527  	0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbc, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66,
  2528  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
  2529  	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
  2530  	0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d,
  2531  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2532  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52,
  2533  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72,
  2534  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b,
  2535  	0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
  2536  	0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
  2537  	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03,
  2538  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
  2539  	0x6b, 0x65, 0x6e, 0x22, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
  2540  	0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  2541  	0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0,
  2542  	0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f,
  2543  	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66,
  2544  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d,
  2545  	0x65, 0x22, 0x5f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
  2546  	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2547  	0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c,
  2548  	0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67,
  2549  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65,
  2550  	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61,
  2551  	0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2552  	0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
  2553  	0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
  2554  	0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69,
  2555  	0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
  2556  	0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61,
  2557  	0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20,
  2558  	0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73,
  2559  	0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
  2560  	0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64,
  2561  	0x75, 0x63, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72,
  2562  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2563  	0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61,
  2564  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22,
  2565  	0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
  2566  	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2567  	0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64,
  2568  	0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41,
  2569  	0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2570  	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2571  	0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x1f, 0x4c, 0x69,
  2572  	0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64,
  2573  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a,
  2574  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02,
  2575  	0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2576  	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2577  	0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70,
  2578  	0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
  2579  	0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65,
  2580  	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61,
  2581  	0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74,
  2582  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2583  	0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08,
  2584  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
  2585  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
  2586  	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,
  2587  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73,
  2588  	0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
  2589  	0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50,
  2590  	0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f,
  2591  	0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47, 0x63, 0x73,
  2592  	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x73, 0x76, 0x5f, 0x66, 0x69,
  2593  	0x6c, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x73,
  2594  	0x76, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x69, 0x22, 0x84, 0x01, 0x0a, 0x1c, 0x49, 0x6d, 0x70,
  2595  	0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e,
  2596  	0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0a, 0x67, 0x63, 0x73,
  2597  	0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e,
  2598  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
  2599  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d,
  2600  	0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47,
  2601  	0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53,
  2602  	0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22,
  2603  	0xc2, 0x01, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2604  	0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06,
  2605  	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41,
  2606  	0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
  2607  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c,
  2608  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
  2609  	0x63, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
  2610  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  2611  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34,
  2612  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64,
  2613  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66,
  2614  	0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f,
  2615  	0x6e, 0x66, 0x69, 0x67, 0x22, 0xa5, 0x01, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50,
  2616  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
  2617  	0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f,
  2618  	0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67,
  2619  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
  2620  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66,
  2621  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66,
  2622  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x08,
  2623  	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
  2624  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74,
  2625  	0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xba, 0x02, 0x0a,
  2626  	0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
  2627  	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x51, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
  2628  	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2629  	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70,
  2630  	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72,
  2631  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74,
  2632  	0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x75,
  2633  	0x62, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2634  	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  2635  	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x75, 0x62,
  2636  	0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
  2637  	0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2638  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
  2639  	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x59,
  2640  	0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45,
  2641  	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e,
  2642  	0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e,
  2643  	0x0a, 0x0a, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x02, 0x12, 0x0a,
  2644  	0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41,
  2645  	0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0x3d, 0x0a, 0x15, 0x50, 0x72, 0x6f,
  2646  	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x50, 0x75, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
  2647  	0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65,
  2648  	0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64,
  2649  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0xa2, 0x02, 0x0a, 0x14, 0x50, 0x75, 0x72,
  2650  	0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2651  	0x74, 0x12, 0x6f, 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74,
  2652  	0x5f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20,
  2653  	0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
  2654  	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65,
  2655  	0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x50, 0x75,
  2656  	0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x70, 0x72, 0x6f,
  2657  	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x50, 0x75, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
  2658  	0x69, 0x67, 0x12, 0x36, 0x0a, 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x70,
  2659  	0x68, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
  2660  	0x28, 0x08, 0x48, 0x00, 0x52, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x70, 0x68,
  2661  	0x61, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61,
  2662  	0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa,
  2663  	0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f,
  2664  	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63,
  2665  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a,
  2666  	0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f,
  2667  	0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x32, 0xd2, 0x20,
  2668  	0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12,
  2669  	0xe6, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2670  	0x74, 0x53, 0x65, 0x74, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2671  	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62,
  2672  	0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2673  	0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67,
  2674  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
  2675  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f,
  2676  	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x22,
  2677  	0x36, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72,
  2678  	0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
  2679  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64,
  2680  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2681  	0x5f, 0x73, 0x65, 0x74, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x72,
  2682  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2683  	0x74, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73,
  2684  	0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x67,
  2685  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
  2686  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73,
  2687  	0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
  2688  	0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
  2689  	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65,
  2690  	0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2691  	0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4,
  2692  	0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
  2693  	0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
  2694  	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
  2695  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61,
  2696  	0x72, 0x65, 0x6e, 0x74, 0x12, 0xb6, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64,
  2697  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2698  	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70,
  2699  	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2700  	0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f,
  2701  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2702  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64,
  2703  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36,
  2704  	0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
  2705  	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
  2706  	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2707  	0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe8, 0x01,
  2708  	0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2709  	0x65, 0x74, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2710  	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74,
  2711  	0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2712  	0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f,
  2713  	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
  2714  	0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2715  	0x63, 0x74, 0x53, 0x65, 0x74, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x32, 0x42, 0x2f,
  2716  	0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75,
  2717  	0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
  2718  	0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2719  	0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a,
  2720  	0x7d, 0x3a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0xda, 0x41,
  2721  	0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x75, 0x70, 0x64,
  2722  	0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c,
  2723  	0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x36, 0x2e,
  2724  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
  2725  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65,
  2726  	0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65,
  2727  	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  2728  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x45, 0x82,
  2729  	0xd3, 0xe4, 0x93, 0x02, 0x38, 0x2a, 0x36, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61,
  2730  	0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
  2731  	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70,
  2732  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04,
  2733  	0x6e, 0x61, 0x6d, 0x65, 0x12, 0xce, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50,
  2734  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2735  	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70,
  2736  	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f,
  2737  	0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f,
  2738  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
  2739  	0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64,
  2740  	0x75, 0x63, 0x74, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x33, 0x2f, 0x76, 0x31,
  2741  	0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
  2742  	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
  2743  	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73,
  2744  	0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65,
  2745  	0x6e, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75,
  2746  	0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xbd, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
  2747  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2748  	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70,
  2749  	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2750  	0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f,
  2751  	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
  2752  	0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50,
  2753  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
  2754  	0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65,
  2755  	0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
  2756  	0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2757  	0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70,
  2758  	0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xaa, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f,
  2759  	0x64, 0x75, 0x63, 0x74, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2760  	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62,
  2761  	0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52,
  2762  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2763  	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70,
  2764  	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x42,
  2765  	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74,
  2766  	0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
  2767  	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
  2768  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61,
  2769  	0x6d, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f,
  2770  	0x64, 0x75, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2771  	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62,
  2772  	0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2773  	0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2774  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
  2775  	0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2776  	0x74, 0x22, 0x62, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x70, 0x34,
  2777  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x6e,
  2778  	0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
  2779  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75,
  2780  	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda,
  2781  	0x41, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
  2782  	0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xa0, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
  2783  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2784  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
  2785  	0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72,
  2786  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
  2787  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
  2788  	0x6d, 0x70, 0x74, 0x79, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x2a, 0x33, 0x2f, 0x76,
  2789  	0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70,
  2790  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
  2791  	0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a,
  2792  	0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65,
  2793  	0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
  2794  	0x65, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
  2795  	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61,
  2796  	0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
  2797  	0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e,
  2798  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
  2799  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65,
  2800  	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x8a, 0x01, 0x82,
  2801  	0xd3, 0xe4, 0x93, 0x02, 0x58, 0x22, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61,
  2802  	0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  2803  	0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
  2804  	0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66,
  2805  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x0f, 0x72, 0x65,
  2806  	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0xda, 0x41, 0x29,
  2807  	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
  2808  	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
  2809  	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xc0, 0x01, 0x0a, 0x14, 0x44, 0x65,
  2810  	0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61,
  2811  	0x67, 0x65, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2812  	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74,
  2813  	0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
  2814  	0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
  2815  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  2816  	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45,
  2817  	0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
  2818  	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
  2819  	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73,
  2820  	0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
  2821  	0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe4, 0x01, 0x0a,
  2822  	0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d,
  2823  	0x61, 0x67, 0x65, 0x73, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2824  	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62,
  2825  	0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
  2826  	0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
  2827  	0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
  2828  	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
  2829  	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61,
  2830  	0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x82, 0xd3, 0xe4,
  2831  	0x93, 0x02, 0x47, 0x12, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
  2832  	0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
  2833  	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70,
  2834  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72,
  2835  	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72,
  2836  	0x65, 0x6e, 0x74, 0x12, 0xd1, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72,
  2837  	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2838  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
  2839  	0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66,
  2840  	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
  2841  	0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2842  	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74,
  2843  	0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
  2844  	0x65, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x34,
  2845  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
  2846  	0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2847  	0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65,
  2848  	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d,
  2849  	0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xcb, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50,
  2850  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2851  	0x65, 0x74, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
  2852  	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74,
  2853  	0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x50,
  2854  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2855  	0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  2856  	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46,
  2857  	0x22, 0x41, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61,
  2858  	0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
  2859  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2860  	0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64,
  2861  	0x75, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72,
  2862  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0xd8, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
  2863  	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2864  	0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  2865  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34,
  2866  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64,
  2867  	0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
  2868  	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2869  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
  2870  	0x22, 0x5e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62,
  2871  	0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
  2872  	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
  2873  	0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d,
  2874  	0x3a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 0x01,
  2875  	0x2a, 0xda, 0x41, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2876  	0x12, 0xeb, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2877  	0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3e, 0x2e,
  2878  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
  2879  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69,
  2880  	0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64,
  2881  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e,
  2882  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
  2883  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69,
  2884  	0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64,
  2885  	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e,
  2886  	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74,
  2887  	0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
  2888  	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
  2889  	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70,
  2890  	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x82,
  2891  	0x02, 0x0a, 0x11, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
  2892  	0x53, 0x65, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  2893  	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34, 0x62,
  2894  	0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2895  	0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
  2896  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69,
  2897  	0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x82,
  2898  	0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61,
  2899  	0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  2900  	0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
  2901  	0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x69, 0x6d,
  2902  	0x70, 0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
  2903  	0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xca, 0x41, 0x33,
  2904  	0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
  2905  	0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x42, 0x61, 0x74,
  2906  	0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
  2907  	0x61, 0x74, 0x61, 0x12, 0xe4, 0x01, 0x0a, 0x0d, 0x50, 0x75, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f,
  2908  	0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  2909  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x34,
  2910  	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75,
  2911  	0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,
  2912  	0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e,
  2913  	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02,
  2914  	0x3e, 0x22, 0x39, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70,
  2915  	0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
  2916  	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72,
  2917  	0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x3a, 0x70, 0x75, 0x72, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0xda,
  2918  	0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0xca, 0x41, 0x2f, 0x0a, 0x15, 0x67, 0x6f, 0x6f,
  2919  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
  2920  	0x74, 0x79, 0x12, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
  2921  	0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x76, 0xca, 0x41, 0x15, 0x76,
  2922  	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
  2923  	0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x5b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77,
  2924  	0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
  2925  	0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61,
  2926  	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
  2927  	0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
  2928  	0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x76, 0x69, 0x73, 0x69,
  2929  	0x6f, 0x6e, 0x42, 0x8f, 0x01, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2930  	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2931  	0x31, 0x70, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x19, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
  2932  	0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72,
  2933  	0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
  2934  	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74,
  2935  	0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f,
  2936  	0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x34, 0x62, 0x65,
  2937  	0x74, 0x61, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x04,
  2938  	0x47, 0x43, 0x56, 0x4e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  2939  }
  2940  
  2941  var (
  2942  	file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescOnce sync.Once
  2943  	file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescData = file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDesc
  2944  )
  2945  
  2946  func file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescGZIP() []byte {
  2947  	file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescOnce.Do(func() {
  2948  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescData)
  2949  	})
  2950  	return file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDescData
  2951  }
  2952  
  2953  var file_google_cloud_vision_v1p4beta1_product_search_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
  2954  var file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
  2955  var file_google_cloud_vision_v1p4beta1_product_search_service_proto_goTypes = []interface{}{
  2956  	(BatchOperationMetadata_State)(0),          // 0: google.cloud.vision.v1p4beta1.BatchOperationMetadata.State
  2957  	(*Product)(nil),                            // 1: google.cloud.vision.v1p4beta1.Product
  2958  	(*ProductSet)(nil),                         // 2: google.cloud.vision.v1p4beta1.ProductSet
  2959  	(*ReferenceImage)(nil),                     // 3: google.cloud.vision.v1p4beta1.ReferenceImage
  2960  	(*CreateProductRequest)(nil),               // 4: google.cloud.vision.v1p4beta1.CreateProductRequest
  2961  	(*ListProductsRequest)(nil),                // 5: google.cloud.vision.v1p4beta1.ListProductsRequest
  2962  	(*ListProductsResponse)(nil),               // 6: google.cloud.vision.v1p4beta1.ListProductsResponse
  2963  	(*GetProductRequest)(nil),                  // 7: google.cloud.vision.v1p4beta1.GetProductRequest
  2964  	(*UpdateProductRequest)(nil),               // 8: google.cloud.vision.v1p4beta1.UpdateProductRequest
  2965  	(*DeleteProductRequest)(nil),               // 9: google.cloud.vision.v1p4beta1.DeleteProductRequest
  2966  	(*CreateProductSetRequest)(nil),            // 10: google.cloud.vision.v1p4beta1.CreateProductSetRequest
  2967  	(*ListProductSetsRequest)(nil),             // 11: google.cloud.vision.v1p4beta1.ListProductSetsRequest
  2968  	(*ListProductSetsResponse)(nil),            // 12: google.cloud.vision.v1p4beta1.ListProductSetsResponse
  2969  	(*GetProductSetRequest)(nil),               // 13: google.cloud.vision.v1p4beta1.GetProductSetRequest
  2970  	(*UpdateProductSetRequest)(nil),            // 14: google.cloud.vision.v1p4beta1.UpdateProductSetRequest
  2971  	(*DeleteProductSetRequest)(nil),            // 15: google.cloud.vision.v1p4beta1.DeleteProductSetRequest
  2972  	(*CreateReferenceImageRequest)(nil),        // 16: google.cloud.vision.v1p4beta1.CreateReferenceImageRequest
  2973  	(*ListReferenceImagesRequest)(nil),         // 17: google.cloud.vision.v1p4beta1.ListReferenceImagesRequest
  2974  	(*ListReferenceImagesResponse)(nil),        // 18: google.cloud.vision.v1p4beta1.ListReferenceImagesResponse
  2975  	(*GetReferenceImageRequest)(nil),           // 19: google.cloud.vision.v1p4beta1.GetReferenceImageRequest
  2976  	(*DeleteReferenceImageRequest)(nil),        // 20: google.cloud.vision.v1p4beta1.DeleteReferenceImageRequest
  2977  	(*AddProductToProductSetRequest)(nil),      // 21: google.cloud.vision.v1p4beta1.AddProductToProductSetRequest
  2978  	(*RemoveProductFromProductSetRequest)(nil), // 22: google.cloud.vision.v1p4beta1.RemoveProductFromProductSetRequest
  2979  	(*ListProductsInProductSetRequest)(nil),    // 23: google.cloud.vision.v1p4beta1.ListProductsInProductSetRequest
  2980  	(*ListProductsInProductSetResponse)(nil),   // 24: google.cloud.vision.v1p4beta1.ListProductsInProductSetResponse
  2981  	(*ImportProductSetsGcsSource)(nil),         // 25: google.cloud.vision.v1p4beta1.ImportProductSetsGcsSource
  2982  	(*ImportProductSetsInputConfig)(nil),       // 26: google.cloud.vision.v1p4beta1.ImportProductSetsInputConfig
  2983  	(*ImportProductSetsRequest)(nil),           // 27: google.cloud.vision.v1p4beta1.ImportProductSetsRequest
  2984  	(*ImportProductSetsResponse)(nil),          // 28: google.cloud.vision.v1p4beta1.ImportProductSetsResponse
  2985  	(*BatchOperationMetadata)(nil),             // 29: google.cloud.vision.v1p4beta1.BatchOperationMetadata
  2986  	(*ProductSetPurgeConfig)(nil),              // 30: google.cloud.vision.v1p4beta1.ProductSetPurgeConfig
  2987  	(*PurgeProductsRequest)(nil),               // 31: google.cloud.vision.v1p4beta1.PurgeProductsRequest
  2988  	(*Product_KeyValue)(nil),                   // 32: google.cloud.vision.v1p4beta1.Product.KeyValue
  2989  	(*timestamppb.Timestamp)(nil),              // 33: google.protobuf.Timestamp
  2990  	(*status.Status)(nil),                      // 34: google.rpc.Status
  2991  	(*BoundingPoly)(nil),                       // 35: google.cloud.vision.v1p4beta1.BoundingPoly
  2992  	(*fieldmaskpb.FieldMask)(nil),              // 36: google.protobuf.FieldMask
  2993  	(*emptypb.Empty)(nil),                      // 37: google.protobuf.Empty
  2994  	(*longrunning.Operation)(nil),              // 38: google.longrunning.Operation
  2995  }
  2996  var file_google_cloud_vision_v1p4beta1_product_search_service_proto_depIdxs = []int32{
  2997  	32, // 0: google.cloud.vision.v1p4beta1.Product.product_labels:type_name -> google.cloud.vision.v1p4beta1.Product.KeyValue
  2998  	33, // 1: google.cloud.vision.v1p4beta1.ProductSet.index_time:type_name -> google.protobuf.Timestamp
  2999  	34, // 2: google.cloud.vision.v1p4beta1.ProductSet.index_error:type_name -> google.rpc.Status
  3000  	35, // 3: google.cloud.vision.v1p4beta1.ReferenceImage.bounding_polys:type_name -> google.cloud.vision.v1p4beta1.BoundingPoly
  3001  	1,  // 4: google.cloud.vision.v1p4beta1.CreateProductRequest.product:type_name -> google.cloud.vision.v1p4beta1.Product
  3002  	1,  // 5: google.cloud.vision.v1p4beta1.ListProductsResponse.products:type_name -> google.cloud.vision.v1p4beta1.Product
  3003  	1,  // 6: google.cloud.vision.v1p4beta1.UpdateProductRequest.product:type_name -> google.cloud.vision.v1p4beta1.Product
  3004  	36, // 7: google.cloud.vision.v1p4beta1.UpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask
  3005  	2,  // 8: google.cloud.vision.v1p4beta1.CreateProductSetRequest.product_set:type_name -> google.cloud.vision.v1p4beta1.ProductSet
  3006  	2,  // 9: google.cloud.vision.v1p4beta1.ListProductSetsResponse.product_sets:type_name -> google.cloud.vision.v1p4beta1.ProductSet
  3007  	2,  // 10: google.cloud.vision.v1p4beta1.UpdateProductSetRequest.product_set:type_name -> google.cloud.vision.v1p4beta1.ProductSet
  3008  	36, // 11: google.cloud.vision.v1p4beta1.UpdateProductSetRequest.update_mask:type_name -> google.protobuf.FieldMask
  3009  	3,  // 12: google.cloud.vision.v1p4beta1.CreateReferenceImageRequest.reference_image:type_name -> google.cloud.vision.v1p4beta1.ReferenceImage
  3010  	3,  // 13: google.cloud.vision.v1p4beta1.ListReferenceImagesResponse.reference_images:type_name -> google.cloud.vision.v1p4beta1.ReferenceImage
  3011  	1,  // 14: google.cloud.vision.v1p4beta1.ListProductsInProductSetResponse.products:type_name -> google.cloud.vision.v1p4beta1.Product
  3012  	25, // 15: google.cloud.vision.v1p4beta1.ImportProductSetsInputConfig.gcs_source:type_name -> google.cloud.vision.v1p4beta1.ImportProductSetsGcsSource
  3013  	26, // 16: google.cloud.vision.v1p4beta1.ImportProductSetsRequest.input_config:type_name -> google.cloud.vision.v1p4beta1.ImportProductSetsInputConfig
  3014  	3,  // 17: google.cloud.vision.v1p4beta1.ImportProductSetsResponse.reference_images:type_name -> google.cloud.vision.v1p4beta1.ReferenceImage
  3015  	34, // 18: google.cloud.vision.v1p4beta1.ImportProductSetsResponse.statuses:type_name -> google.rpc.Status
  3016  	0,  // 19: google.cloud.vision.v1p4beta1.BatchOperationMetadata.state:type_name -> google.cloud.vision.v1p4beta1.BatchOperationMetadata.State
  3017  	33, // 20: google.cloud.vision.v1p4beta1.BatchOperationMetadata.submit_time:type_name -> google.protobuf.Timestamp
  3018  	33, // 21: google.cloud.vision.v1p4beta1.BatchOperationMetadata.end_time:type_name -> google.protobuf.Timestamp
  3019  	30, // 22: google.cloud.vision.v1p4beta1.PurgeProductsRequest.product_set_purge_config:type_name -> google.cloud.vision.v1p4beta1.ProductSetPurgeConfig
  3020  	10, // 23: google.cloud.vision.v1p4beta1.ProductSearch.CreateProductSet:input_type -> google.cloud.vision.v1p4beta1.CreateProductSetRequest
  3021  	11, // 24: google.cloud.vision.v1p4beta1.ProductSearch.ListProductSets:input_type -> google.cloud.vision.v1p4beta1.ListProductSetsRequest
  3022  	13, // 25: google.cloud.vision.v1p4beta1.ProductSearch.GetProductSet:input_type -> google.cloud.vision.v1p4beta1.GetProductSetRequest
  3023  	14, // 26: google.cloud.vision.v1p4beta1.ProductSearch.UpdateProductSet:input_type -> google.cloud.vision.v1p4beta1.UpdateProductSetRequest
  3024  	15, // 27: google.cloud.vision.v1p4beta1.ProductSearch.DeleteProductSet:input_type -> google.cloud.vision.v1p4beta1.DeleteProductSetRequest
  3025  	4,  // 28: google.cloud.vision.v1p4beta1.ProductSearch.CreateProduct:input_type -> google.cloud.vision.v1p4beta1.CreateProductRequest
  3026  	5,  // 29: google.cloud.vision.v1p4beta1.ProductSearch.ListProducts:input_type -> google.cloud.vision.v1p4beta1.ListProductsRequest
  3027  	7,  // 30: google.cloud.vision.v1p4beta1.ProductSearch.GetProduct:input_type -> google.cloud.vision.v1p4beta1.GetProductRequest
  3028  	8,  // 31: google.cloud.vision.v1p4beta1.ProductSearch.UpdateProduct:input_type -> google.cloud.vision.v1p4beta1.UpdateProductRequest
  3029  	9,  // 32: google.cloud.vision.v1p4beta1.ProductSearch.DeleteProduct:input_type -> google.cloud.vision.v1p4beta1.DeleteProductRequest
  3030  	16, // 33: google.cloud.vision.v1p4beta1.ProductSearch.CreateReferenceImage:input_type -> google.cloud.vision.v1p4beta1.CreateReferenceImageRequest
  3031  	20, // 34: google.cloud.vision.v1p4beta1.ProductSearch.DeleteReferenceImage:input_type -> google.cloud.vision.v1p4beta1.DeleteReferenceImageRequest
  3032  	17, // 35: google.cloud.vision.v1p4beta1.ProductSearch.ListReferenceImages:input_type -> google.cloud.vision.v1p4beta1.ListReferenceImagesRequest
  3033  	19, // 36: google.cloud.vision.v1p4beta1.ProductSearch.GetReferenceImage:input_type -> google.cloud.vision.v1p4beta1.GetReferenceImageRequest
  3034  	21, // 37: google.cloud.vision.v1p4beta1.ProductSearch.AddProductToProductSet:input_type -> google.cloud.vision.v1p4beta1.AddProductToProductSetRequest
  3035  	22, // 38: google.cloud.vision.v1p4beta1.ProductSearch.RemoveProductFromProductSet:input_type -> google.cloud.vision.v1p4beta1.RemoveProductFromProductSetRequest
  3036  	23, // 39: google.cloud.vision.v1p4beta1.ProductSearch.ListProductsInProductSet:input_type -> google.cloud.vision.v1p4beta1.ListProductsInProductSetRequest
  3037  	27, // 40: google.cloud.vision.v1p4beta1.ProductSearch.ImportProductSets:input_type -> google.cloud.vision.v1p4beta1.ImportProductSetsRequest
  3038  	31, // 41: google.cloud.vision.v1p4beta1.ProductSearch.PurgeProducts:input_type -> google.cloud.vision.v1p4beta1.PurgeProductsRequest
  3039  	2,  // 42: google.cloud.vision.v1p4beta1.ProductSearch.CreateProductSet:output_type -> google.cloud.vision.v1p4beta1.ProductSet
  3040  	12, // 43: google.cloud.vision.v1p4beta1.ProductSearch.ListProductSets:output_type -> google.cloud.vision.v1p4beta1.ListProductSetsResponse
  3041  	2,  // 44: google.cloud.vision.v1p4beta1.ProductSearch.GetProductSet:output_type -> google.cloud.vision.v1p4beta1.ProductSet
  3042  	2,  // 45: google.cloud.vision.v1p4beta1.ProductSearch.UpdateProductSet:output_type -> google.cloud.vision.v1p4beta1.ProductSet
  3043  	37, // 46: google.cloud.vision.v1p4beta1.ProductSearch.DeleteProductSet:output_type -> google.protobuf.Empty
  3044  	1,  // 47: google.cloud.vision.v1p4beta1.ProductSearch.CreateProduct:output_type -> google.cloud.vision.v1p4beta1.Product
  3045  	6,  // 48: google.cloud.vision.v1p4beta1.ProductSearch.ListProducts:output_type -> google.cloud.vision.v1p4beta1.ListProductsResponse
  3046  	1,  // 49: google.cloud.vision.v1p4beta1.ProductSearch.GetProduct:output_type -> google.cloud.vision.v1p4beta1.Product
  3047  	1,  // 50: google.cloud.vision.v1p4beta1.ProductSearch.UpdateProduct:output_type -> google.cloud.vision.v1p4beta1.Product
  3048  	37, // 51: google.cloud.vision.v1p4beta1.ProductSearch.DeleteProduct:output_type -> google.protobuf.Empty
  3049  	3,  // 52: google.cloud.vision.v1p4beta1.ProductSearch.CreateReferenceImage:output_type -> google.cloud.vision.v1p4beta1.ReferenceImage
  3050  	37, // 53: google.cloud.vision.v1p4beta1.ProductSearch.DeleteReferenceImage:output_type -> google.protobuf.Empty
  3051  	18, // 54: google.cloud.vision.v1p4beta1.ProductSearch.ListReferenceImages:output_type -> google.cloud.vision.v1p4beta1.ListReferenceImagesResponse
  3052  	3,  // 55: google.cloud.vision.v1p4beta1.ProductSearch.GetReferenceImage:output_type -> google.cloud.vision.v1p4beta1.ReferenceImage
  3053  	37, // 56: google.cloud.vision.v1p4beta1.ProductSearch.AddProductToProductSet:output_type -> google.protobuf.Empty
  3054  	37, // 57: google.cloud.vision.v1p4beta1.ProductSearch.RemoveProductFromProductSet:output_type -> google.protobuf.Empty
  3055  	24, // 58: google.cloud.vision.v1p4beta1.ProductSearch.ListProductsInProductSet:output_type -> google.cloud.vision.v1p4beta1.ListProductsInProductSetResponse
  3056  	38, // 59: google.cloud.vision.v1p4beta1.ProductSearch.ImportProductSets:output_type -> google.longrunning.Operation
  3057  	38, // 60: google.cloud.vision.v1p4beta1.ProductSearch.PurgeProducts:output_type -> google.longrunning.Operation
  3058  	42, // [42:61] is the sub-list for method output_type
  3059  	23, // [23:42] is the sub-list for method input_type
  3060  	23, // [23:23] is the sub-list for extension type_name
  3061  	23, // [23:23] is the sub-list for extension extendee
  3062  	0,  // [0:23] is the sub-list for field type_name
  3063  }
  3064  
  3065  func init() { file_google_cloud_vision_v1p4beta1_product_search_service_proto_init() }
  3066  func file_google_cloud_vision_v1p4beta1_product_search_service_proto_init() {
  3067  	if File_google_cloud_vision_v1p4beta1_product_search_service_proto != nil {
  3068  		return
  3069  	}
  3070  	file_google_cloud_vision_v1p4beta1_geometry_proto_init()
  3071  	if !protoimpl.UnsafeEnabled {
  3072  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  3073  			switch v := v.(*Product); i {
  3074  			case 0:
  3075  				return &v.state
  3076  			case 1:
  3077  				return &v.sizeCache
  3078  			case 2:
  3079  				return &v.unknownFields
  3080  			default:
  3081  				return nil
  3082  			}
  3083  		}
  3084  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  3085  			switch v := v.(*ProductSet); i {
  3086  			case 0:
  3087  				return &v.state
  3088  			case 1:
  3089  				return &v.sizeCache
  3090  			case 2:
  3091  				return &v.unknownFields
  3092  			default:
  3093  				return nil
  3094  			}
  3095  		}
  3096  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  3097  			switch v := v.(*ReferenceImage); i {
  3098  			case 0:
  3099  				return &v.state
  3100  			case 1:
  3101  				return &v.sizeCache
  3102  			case 2:
  3103  				return &v.unknownFields
  3104  			default:
  3105  				return nil
  3106  			}
  3107  		}
  3108  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  3109  			switch v := v.(*CreateProductRequest); i {
  3110  			case 0:
  3111  				return &v.state
  3112  			case 1:
  3113  				return &v.sizeCache
  3114  			case 2:
  3115  				return &v.unknownFields
  3116  			default:
  3117  				return nil
  3118  			}
  3119  		}
  3120  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  3121  			switch v := v.(*ListProductsRequest); i {
  3122  			case 0:
  3123  				return &v.state
  3124  			case 1:
  3125  				return &v.sizeCache
  3126  			case 2:
  3127  				return &v.unknownFields
  3128  			default:
  3129  				return nil
  3130  			}
  3131  		}
  3132  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  3133  			switch v := v.(*ListProductsResponse); i {
  3134  			case 0:
  3135  				return &v.state
  3136  			case 1:
  3137  				return &v.sizeCache
  3138  			case 2:
  3139  				return &v.unknownFields
  3140  			default:
  3141  				return nil
  3142  			}
  3143  		}
  3144  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  3145  			switch v := v.(*GetProductRequest); i {
  3146  			case 0:
  3147  				return &v.state
  3148  			case 1:
  3149  				return &v.sizeCache
  3150  			case 2:
  3151  				return &v.unknownFields
  3152  			default:
  3153  				return nil
  3154  			}
  3155  		}
  3156  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  3157  			switch v := v.(*UpdateProductRequest); i {
  3158  			case 0:
  3159  				return &v.state
  3160  			case 1:
  3161  				return &v.sizeCache
  3162  			case 2:
  3163  				return &v.unknownFields
  3164  			default:
  3165  				return nil
  3166  			}
  3167  		}
  3168  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  3169  			switch v := v.(*DeleteProductRequest); i {
  3170  			case 0:
  3171  				return &v.state
  3172  			case 1:
  3173  				return &v.sizeCache
  3174  			case 2:
  3175  				return &v.unknownFields
  3176  			default:
  3177  				return nil
  3178  			}
  3179  		}
  3180  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  3181  			switch v := v.(*CreateProductSetRequest); i {
  3182  			case 0:
  3183  				return &v.state
  3184  			case 1:
  3185  				return &v.sizeCache
  3186  			case 2:
  3187  				return &v.unknownFields
  3188  			default:
  3189  				return nil
  3190  			}
  3191  		}
  3192  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  3193  			switch v := v.(*ListProductSetsRequest); i {
  3194  			case 0:
  3195  				return &v.state
  3196  			case 1:
  3197  				return &v.sizeCache
  3198  			case 2:
  3199  				return &v.unknownFields
  3200  			default:
  3201  				return nil
  3202  			}
  3203  		}
  3204  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  3205  			switch v := v.(*ListProductSetsResponse); i {
  3206  			case 0:
  3207  				return &v.state
  3208  			case 1:
  3209  				return &v.sizeCache
  3210  			case 2:
  3211  				return &v.unknownFields
  3212  			default:
  3213  				return nil
  3214  			}
  3215  		}
  3216  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  3217  			switch v := v.(*GetProductSetRequest); i {
  3218  			case 0:
  3219  				return &v.state
  3220  			case 1:
  3221  				return &v.sizeCache
  3222  			case 2:
  3223  				return &v.unknownFields
  3224  			default:
  3225  				return nil
  3226  			}
  3227  		}
  3228  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  3229  			switch v := v.(*UpdateProductSetRequest); i {
  3230  			case 0:
  3231  				return &v.state
  3232  			case 1:
  3233  				return &v.sizeCache
  3234  			case 2:
  3235  				return &v.unknownFields
  3236  			default:
  3237  				return nil
  3238  			}
  3239  		}
  3240  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  3241  			switch v := v.(*DeleteProductSetRequest); i {
  3242  			case 0:
  3243  				return &v.state
  3244  			case 1:
  3245  				return &v.sizeCache
  3246  			case 2:
  3247  				return &v.unknownFields
  3248  			default:
  3249  				return nil
  3250  			}
  3251  		}
  3252  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  3253  			switch v := v.(*CreateReferenceImageRequest); i {
  3254  			case 0:
  3255  				return &v.state
  3256  			case 1:
  3257  				return &v.sizeCache
  3258  			case 2:
  3259  				return &v.unknownFields
  3260  			default:
  3261  				return nil
  3262  			}
  3263  		}
  3264  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  3265  			switch v := v.(*ListReferenceImagesRequest); i {
  3266  			case 0:
  3267  				return &v.state
  3268  			case 1:
  3269  				return &v.sizeCache
  3270  			case 2:
  3271  				return &v.unknownFields
  3272  			default:
  3273  				return nil
  3274  			}
  3275  		}
  3276  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  3277  			switch v := v.(*ListReferenceImagesResponse); i {
  3278  			case 0:
  3279  				return &v.state
  3280  			case 1:
  3281  				return &v.sizeCache
  3282  			case 2:
  3283  				return &v.unknownFields
  3284  			default:
  3285  				return nil
  3286  			}
  3287  		}
  3288  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  3289  			switch v := v.(*GetReferenceImageRequest); i {
  3290  			case 0:
  3291  				return &v.state
  3292  			case 1:
  3293  				return &v.sizeCache
  3294  			case 2:
  3295  				return &v.unknownFields
  3296  			default:
  3297  				return nil
  3298  			}
  3299  		}
  3300  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  3301  			switch v := v.(*DeleteReferenceImageRequest); i {
  3302  			case 0:
  3303  				return &v.state
  3304  			case 1:
  3305  				return &v.sizeCache
  3306  			case 2:
  3307  				return &v.unknownFields
  3308  			default:
  3309  				return nil
  3310  			}
  3311  		}
  3312  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  3313  			switch v := v.(*AddProductToProductSetRequest); i {
  3314  			case 0:
  3315  				return &v.state
  3316  			case 1:
  3317  				return &v.sizeCache
  3318  			case 2:
  3319  				return &v.unknownFields
  3320  			default:
  3321  				return nil
  3322  			}
  3323  		}
  3324  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  3325  			switch v := v.(*RemoveProductFromProductSetRequest); i {
  3326  			case 0:
  3327  				return &v.state
  3328  			case 1:
  3329  				return &v.sizeCache
  3330  			case 2:
  3331  				return &v.unknownFields
  3332  			default:
  3333  				return nil
  3334  			}
  3335  		}
  3336  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
  3337  			switch v := v.(*ListProductsInProductSetRequest); i {
  3338  			case 0:
  3339  				return &v.state
  3340  			case 1:
  3341  				return &v.sizeCache
  3342  			case 2:
  3343  				return &v.unknownFields
  3344  			default:
  3345  				return nil
  3346  			}
  3347  		}
  3348  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
  3349  			switch v := v.(*ListProductsInProductSetResponse); i {
  3350  			case 0:
  3351  				return &v.state
  3352  			case 1:
  3353  				return &v.sizeCache
  3354  			case 2:
  3355  				return &v.unknownFields
  3356  			default:
  3357  				return nil
  3358  			}
  3359  		}
  3360  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
  3361  			switch v := v.(*ImportProductSetsGcsSource); i {
  3362  			case 0:
  3363  				return &v.state
  3364  			case 1:
  3365  				return &v.sizeCache
  3366  			case 2:
  3367  				return &v.unknownFields
  3368  			default:
  3369  				return nil
  3370  			}
  3371  		}
  3372  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
  3373  			switch v := v.(*ImportProductSetsInputConfig); i {
  3374  			case 0:
  3375  				return &v.state
  3376  			case 1:
  3377  				return &v.sizeCache
  3378  			case 2:
  3379  				return &v.unknownFields
  3380  			default:
  3381  				return nil
  3382  			}
  3383  		}
  3384  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
  3385  			switch v := v.(*ImportProductSetsRequest); i {
  3386  			case 0:
  3387  				return &v.state
  3388  			case 1:
  3389  				return &v.sizeCache
  3390  			case 2:
  3391  				return &v.unknownFields
  3392  			default:
  3393  				return nil
  3394  			}
  3395  		}
  3396  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
  3397  			switch v := v.(*ImportProductSetsResponse); i {
  3398  			case 0:
  3399  				return &v.state
  3400  			case 1:
  3401  				return &v.sizeCache
  3402  			case 2:
  3403  				return &v.unknownFields
  3404  			default:
  3405  				return nil
  3406  			}
  3407  		}
  3408  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
  3409  			switch v := v.(*BatchOperationMetadata); i {
  3410  			case 0:
  3411  				return &v.state
  3412  			case 1:
  3413  				return &v.sizeCache
  3414  			case 2:
  3415  				return &v.unknownFields
  3416  			default:
  3417  				return nil
  3418  			}
  3419  		}
  3420  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
  3421  			switch v := v.(*ProductSetPurgeConfig); i {
  3422  			case 0:
  3423  				return &v.state
  3424  			case 1:
  3425  				return &v.sizeCache
  3426  			case 2:
  3427  				return &v.unknownFields
  3428  			default:
  3429  				return nil
  3430  			}
  3431  		}
  3432  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
  3433  			switch v := v.(*PurgeProductsRequest); i {
  3434  			case 0:
  3435  				return &v.state
  3436  			case 1:
  3437  				return &v.sizeCache
  3438  			case 2:
  3439  				return &v.unknownFields
  3440  			default:
  3441  				return nil
  3442  			}
  3443  		}
  3444  		file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
  3445  			switch v := v.(*Product_KeyValue); i {
  3446  			case 0:
  3447  				return &v.state
  3448  			case 1:
  3449  				return &v.sizeCache
  3450  			case 2:
  3451  				return &v.unknownFields
  3452  			default:
  3453  				return nil
  3454  			}
  3455  		}
  3456  	}
  3457  	file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[25].OneofWrappers = []interface{}{
  3458  		(*ImportProductSetsInputConfig_GcsSource)(nil),
  3459  	}
  3460  	file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes[30].OneofWrappers = []interface{}{
  3461  		(*PurgeProductsRequest_ProductSetPurgeConfig)(nil),
  3462  		(*PurgeProductsRequest_DeleteOrphanProducts)(nil),
  3463  	}
  3464  	type x struct{}
  3465  	out := protoimpl.TypeBuilder{
  3466  		File: protoimpl.DescBuilder{
  3467  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  3468  			RawDescriptor: file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDesc,
  3469  			NumEnums:      1,
  3470  			NumMessages:   32,
  3471  			NumExtensions: 0,
  3472  			NumServices:   1,
  3473  		},
  3474  		GoTypes:           file_google_cloud_vision_v1p4beta1_product_search_service_proto_goTypes,
  3475  		DependencyIndexes: file_google_cloud_vision_v1p4beta1_product_search_service_proto_depIdxs,
  3476  		EnumInfos:         file_google_cloud_vision_v1p4beta1_product_search_service_proto_enumTypes,
  3477  		MessageInfos:      file_google_cloud_vision_v1p4beta1_product_search_service_proto_msgTypes,
  3478  	}.Build()
  3479  	File_google_cloud_vision_v1p4beta1_product_search_service_proto = out.File
  3480  	file_google_cloud_vision_v1p4beta1_product_search_service_proto_rawDesc = nil
  3481  	file_google_cloud_vision_v1p4beta1_product_search_service_proto_goTypes = nil
  3482  	file_google_cloud_vision_v1p4beta1_product_search_service_proto_depIdxs = nil
  3483  }
  3484  
  3485  // Reference imports to suppress errors if they are not otherwise used.
  3486  var _ context.Context
  3487  var _ grpc.ClientConnInterface
  3488  
  3489  // This is a compile-time assertion to ensure that this generated file
  3490  // is compatible with the grpc package it is being compiled against.
  3491  const _ = grpc.SupportPackageIsVersion6
  3492  
  3493  // ProductSearchClient is the client API for ProductSearch service.
  3494  //
  3495  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  3496  type ProductSearchClient interface {
  3497  	// Creates and returns a new ProductSet resource.
  3498  	//
  3499  	// Possible errors:
  3500  	//
  3501  	// * Returns INVALID_ARGUMENT if display_name is missing, or is longer than
  3502  	//   4096 characters.
  3503  	CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
  3504  	// Lists ProductSets in an unspecified order.
  3505  	//
  3506  	// Possible errors:
  3507  	//
  3508  	// * Returns INVALID_ARGUMENT if page_size is greater than 100, or less
  3509  	//   than 1.
  3510  	ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error)
  3511  	// Gets information associated with a ProductSet.
  3512  	//
  3513  	// Possible errors:
  3514  	//
  3515  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3516  	GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
  3517  	// Makes changes to a ProductSet resource.
  3518  	// Only display_name can be updated currently.
  3519  	//
  3520  	// Possible errors:
  3521  	//
  3522  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3523  	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but
  3524  	//   missing from the request or longer than 4096 characters.
  3525  	UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
  3526  	// Permanently deletes a ProductSet. Products and ReferenceImages in the
  3527  	// ProductSet are not deleted.
  3528  	//
  3529  	// The actual image files are not deleted from Google Cloud Storage.
  3530  	DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3531  	// Creates and returns a new product resource.
  3532  	//
  3533  	// Possible errors:
  3534  	//
  3535  	// * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096
  3536  	//   characters.
  3537  	// * Returns INVALID_ARGUMENT if description is longer than 4096 characters.
  3538  	// * Returns INVALID_ARGUMENT if product_category is missing or invalid.
  3539  	CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error)
  3540  	// Lists products in an unspecified order.
  3541  	//
  3542  	// Possible errors:
  3543  	//
  3544  	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
  3545  	ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error)
  3546  	// Gets information associated with a Product.
  3547  	//
  3548  	// Possible errors:
  3549  	//
  3550  	// * Returns NOT_FOUND if the Product does not exist.
  3551  	GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error)
  3552  	// Makes changes to a Product resource.
  3553  	// Only the `display_name`, `description`, and `labels` fields can be updated
  3554  	// right now.
  3555  	//
  3556  	// If labels are updated, the change will not be reflected in queries until
  3557  	// the next index time.
  3558  	//
  3559  	// Possible errors:
  3560  	//
  3561  	// * Returns NOT_FOUND if the Product does not exist.
  3562  	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but is
  3563  	//   missing from the request or longer than 4096 characters.
  3564  	// * Returns INVALID_ARGUMENT if description is present in update_mask but is
  3565  	//   longer than 4096 characters.
  3566  	// * Returns INVALID_ARGUMENT if product_category is present in update_mask.
  3567  	UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error)
  3568  	// Permanently deletes a product and its reference images.
  3569  	//
  3570  	// Metadata of the product and all its images will be deleted right away, but
  3571  	// search queries against ProductSets containing the product may still work
  3572  	// until all related caches are refreshed.
  3573  	DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3574  	// Creates and returns a new ReferenceImage resource.
  3575  	//
  3576  	// The `bounding_poly` field is optional. If `bounding_poly` is not specified,
  3577  	// the system will try to detect regions of interest in the image that are
  3578  	// compatible with the product_category on the parent product. If it is
  3579  	// specified, detection is ALWAYS skipped. The system converts polygons into
  3580  	// non-rotated rectangles.
  3581  	//
  3582  	// Note that the pipeline will resize the image if the image resolution is too
  3583  	// large to process (above 50MP).
  3584  	//
  3585  	// Possible errors:
  3586  	//
  3587  	// * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096
  3588  	//   characters.
  3589  	// * Returns INVALID_ARGUMENT if the product does not exist.
  3590  	// * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing
  3591  	//   compatible with the parent product's product_category is detected.
  3592  	// * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons.
  3593  	CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error)
  3594  	// Permanently deletes a reference image.
  3595  	//
  3596  	// The image metadata will be deleted right away, but search queries
  3597  	// against ProductSets containing the image may still work until all related
  3598  	// caches are refreshed.
  3599  	//
  3600  	// The actual image files are not deleted from Google Cloud Storage.
  3601  	DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3602  	// Lists reference images.
  3603  	//
  3604  	// Possible errors:
  3605  	//
  3606  	// * Returns NOT_FOUND if the parent product does not exist.
  3607  	// * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less
  3608  	//   than 1.
  3609  	ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error)
  3610  	// Gets information associated with a ReferenceImage.
  3611  	//
  3612  	// Possible errors:
  3613  	//
  3614  	// * Returns NOT_FOUND if the specified image does not exist.
  3615  	GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error)
  3616  	// Adds a Product to the specified ProductSet. If the Product is already
  3617  	// present, no change is made.
  3618  	//
  3619  	// One Product can be added to at most 100 ProductSets.
  3620  	//
  3621  	// Possible errors:
  3622  	//
  3623  	// * Returns NOT_FOUND if the Product or the ProductSet doesn't exist.
  3624  	AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3625  	// Removes a Product from the specified ProductSet.
  3626  	RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  3627  	// Lists the Products in a ProductSet, in an unspecified order. If the
  3628  	// ProductSet does not exist, the products field of the response will be
  3629  	// empty.
  3630  	//
  3631  	// Possible errors:
  3632  	//
  3633  	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
  3634  	ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error)
  3635  	// Asynchronous API that imports a list of reference images to specified
  3636  	// product sets based on a list of image information.
  3637  	//
  3638  	// The [google.longrunning.Operation][google.longrunning.Operation] API can be
  3639  	// used to keep track of the progress and results of the request.
  3640  	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
  3641  	// `Operation.response` contains `ImportProductSetsResponse`. (results)
  3642  	//
  3643  	// The input source of this method is a csv file on Google Cloud Storage.
  3644  	// For the format of the csv file please see
  3645  	// [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1p4beta1.ImportProductSetsGcsSource.csv_file_uri].
  3646  	ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
  3647  	// Asynchronous API to delete all Products in a ProductSet or all Products
  3648  	// that are in no ProductSet.
  3649  	//
  3650  	// If a Product is a member of the specified ProductSet in addition to other
  3651  	// ProductSets, the Product will still be deleted.
  3652  	//
  3653  	// It is recommended to not delete the specified ProductSet until after this
  3654  	// operation has completed. It is also recommended to not add any of the
  3655  	// Products involved in the batch delete to a new ProductSet while this
  3656  	// operation is running because those Products may still end up deleted.
  3657  	//
  3658  	// It's not possible to undo the PurgeProducts operation. Therefore, it is
  3659  	// recommended to keep the csv files used in ImportProductSets (if that was
  3660  	// how you originally built the Product Set) before starting PurgeProducts, in
  3661  	// case you need to re-import the data after deletion.
  3662  	//
  3663  	// If the plan is to purge all of the Products from a ProductSet and then
  3664  	// re-use the empty ProductSet to re-import new Products into the empty
  3665  	// ProductSet, you must wait until the PurgeProducts operation has finished
  3666  	// for that ProductSet.
  3667  	//
  3668  	// The [google.longrunning.Operation][google.longrunning.Operation] API can be
  3669  	// used to keep track of the progress and results of the request.
  3670  	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
  3671  	PurgeProducts(ctx context.Context, in *PurgeProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
  3672  }
  3673  
  3674  type productSearchClient struct {
  3675  	cc grpc.ClientConnInterface
  3676  }
  3677  
  3678  func NewProductSearchClient(cc grpc.ClientConnInterface) ProductSearchClient {
  3679  	return &productSearchClient{cc}
  3680  }
  3681  
  3682  func (c *productSearchClient) CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
  3683  	out := new(ProductSet)
  3684  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/CreateProductSet", in, out, opts...)
  3685  	if err != nil {
  3686  		return nil, err
  3687  	}
  3688  	return out, nil
  3689  }
  3690  
  3691  func (c *productSearchClient) ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) {
  3692  	out := new(ListProductSetsResponse)
  3693  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/ListProductSets", in, out, opts...)
  3694  	if err != nil {
  3695  		return nil, err
  3696  	}
  3697  	return out, nil
  3698  }
  3699  
  3700  func (c *productSearchClient) GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
  3701  	out := new(ProductSet)
  3702  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/GetProductSet", in, out, opts...)
  3703  	if err != nil {
  3704  		return nil, err
  3705  	}
  3706  	return out, nil
  3707  }
  3708  
  3709  func (c *productSearchClient) UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
  3710  	out := new(ProductSet)
  3711  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/UpdateProductSet", in, out, opts...)
  3712  	if err != nil {
  3713  		return nil, err
  3714  	}
  3715  	return out, nil
  3716  }
  3717  
  3718  func (c *productSearchClient) DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3719  	out := new(emptypb.Empty)
  3720  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/DeleteProductSet", in, out, opts...)
  3721  	if err != nil {
  3722  		return nil, err
  3723  	}
  3724  	return out, nil
  3725  }
  3726  
  3727  func (c *productSearchClient) CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) {
  3728  	out := new(Product)
  3729  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/CreateProduct", in, out, opts...)
  3730  	if err != nil {
  3731  		return nil, err
  3732  	}
  3733  	return out, nil
  3734  }
  3735  
  3736  func (c *productSearchClient) ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) {
  3737  	out := new(ListProductsResponse)
  3738  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/ListProducts", in, out, opts...)
  3739  	if err != nil {
  3740  		return nil, err
  3741  	}
  3742  	return out, nil
  3743  }
  3744  
  3745  func (c *productSearchClient) GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) {
  3746  	out := new(Product)
  3747  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/GetProduct", in, out, opts...)
  3748  	if err != nil {
  3749  		return nil, err
  3750  	}
  3751  	return out, nil
  3752  }
  3753  
  3754  func (c *productSearchClient) UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) {
  3755  	out := new(Product)
  3756  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/UpdateProduct", in, out, opts...)
  3757  	if err != nil {
  3758  		return nil, err
  3759  	}
  3760  	return out, nil
  3761  }
  3762  
  3763  func (c *productSearchClient) DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3764  	out := new(emptypb.Empty)
  3765  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/DeleteProduct", in, out, opts...)
  3766  	if err != nil {
  3767  		return nil, err
  3768  	}
  3769  	return out, nil
  3770  }
  3771  
  3772  func (c *productSearchClient) CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) {
  3773  	out := new(ReferenceImage)
  3774  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/CreateReferenceImage", in, out, opts...)
  3775  	if err != nil {
  3776  		return nil, err
  3777  	}
  3778  	return out, nil
  3779  }
  3780  
  3781  func (c *productSearchClient) DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3782  	out := new(emptypb.Empty)
  3783  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/DeleteReferenceImage", in, out, opts...)
  3784  	if err != nil {
  3785  		return nil, err
  3786  	}
  3787  	return out, nil
  3788  }
  3789  
  3790  func (c *productSearchClient) ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) {
  3791  	out := new(ListReferenceImagesResponse)
  3792  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/ListReferenceImages", in, out, opts...)
  3793  	if err != nil {
  3794  		return nil, err
  3795  	}
  3796  	return out, nil
  3797  }
  3798  
  3799  func (c *productSearchClient) GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) {
  3800  	out := new(ReferenceImage)
  3801  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/GetReferenceImage", in, out, opts...)
  3802  	if err != nil {
  3803  		return nil, err
  3804  	}
  3805  	return out, nil
  3806  }
  3807  
  3808  func (c *productSearchClient) AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3809  	out := new(emptypb.Empty)
  3810  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/AddProductToProductSet", in, out, opts...)
  3811  	if err != nil {
  3812  		return nil, err
  3813  	}
  3814  	return out, nil
  3815  }
  3816  
  3817  func (c *productSearchClient) RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  3818  	out := new(emptypb.Empty)
  3819  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/RemoveProductFromProductSet", in, out, opts...)
  3820  	if err != nil {
  3821  		return nil, err
  3822  	}
  3823  	return out, nil
  3824  }
  3825  
  3826  func (c *productSearchClient) ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) {
  3827  	out := new(ListProductsInProductSetResponse)
  3828  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/ListProductsInProductSet", in, out, opts...)
  3829  	if err != nil {
  3830  		return nil, err
  3831  	}
  3832  	return out, nil
  3833  }
  3834  
  3835  func (c *productSearchClient) ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
  3836  	out := new(longrunning.Operation)
  3837  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/ImportProductSets", in, out, opts...)
  3838  	if err != nil {
  3839  		return nil, err
  3840  	}
  3841  	return out, nil
  3842  }
  3843  
  3844  func (c *productSearchClient) PurgeProducts(ctx context.Context, in *PurgeProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
  3845  	out := new(longrunning.Operation)
  3846  	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p4beta1.ProductSearch/PurgeProducts", in, out, opts...)
  3847  	if err != nil {
  3848  		return nil, err
  3849  	}
  3850  	return out, nil
  3851  }
  3852  
  3853  // ProductSearchServer is the server API for ProductSearch service.
  3854  type ProductSearchServer interface {
  3855  	// Creates and returns a new ProductSet resource.
  3856  	//
  3857  	// Possible errors:
  3858  	//
  3859  	// * Returns INVALID_ARGUMENT if display_name is missing, or is longer than
  3860  	//   4096 characters.
  3861  	CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error)
  3862  	// Lists ProductSets in an unspecified order.
  3863  	//
  3864  	// Possible errors:
  3865  	//
  3866  	// * Returns INVALID_ARGUMENT if page_size is greater than 100, or less
  3867  	//   than 1.
  3868  	ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error)
  3869  	// Gets information associated with a ProductSet.
  3870  	//
  3871  	// Possible errors:
  3872  	//
  3873  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3874  	GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error)
  3875  	// Makes changes to a ProductSet resource.
  3876  	// Only display_name can be updated currently.
  3877  	//
  3878  	// Possible errors:
  3879  	//
  3880  	// * Returns NOT_FOUND if the ProductSet does not exist.
  3881  	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but
  3882  	//   missing from the request or longer than 4096 characters.
  3883  	UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error)
  3884  	// Permanently deletes a ProductSet. Products and ReferenceImages in the
  3885  	// ProductSet are not deleted.
  3886  	//
  3887  	// The actual image files are not deleted from Google Cloud Storage.
  3888  	DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error)
  3889  	// Creates and returns a new product resource.
  3890  	//
  3891  	// Possible errors:
  3892  	//
  3893  	// * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096
  3894  	//   characters.
  3895  	// * Returns INVALID_ARGUMENT if description is longer than 4096 characters.
  3896  	// * Returns INVALID_ARGUMENT if product_category is missing or invalid.
  3897  	CreateProduct(context.Context, *CreateProductRequest) (*Product, error)
  3898  	// Lists products in an unspecified order.
  3899  	//
  3900  	// Possible errors:
  3901  	//
  3902  	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
  3903  	ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error)
  3904  	// Gets information associated with a Product.
  3905  	//
  3906  	// Possible errors:
  3907  	//
  3908  	// * Returns NOT_FOUND if the Product does not exist.
  3909  	GetProduct(context.Context, *GetProductRequest) (*Product, error)
  3910  	// Makes changes to a Product resource.
  3911  	// Only the `display_name`, `description`, and `labels` fields can be updated
  3912  	// right now.
  3913  	//
  3914  	// If labels are updated, the change will not be reflected in queries until
  3915  	// the next index time.
  3916  	//
  3917  	// Possible errors:
  3918  	//
  3919  	// * Returns NOT_FOUND if the Product does not exist.
  3920  	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but is
  3921  	//   missing from the request or longer than 4096 characters.
  3922  	// * Returns INVALID_ARGUMENT if description is present in update_mask but is
  3923  	//   longer than 4096 characters.
  3924  	// * Returns INVALID_ARGUMENT if product_category is present in update_mask.
  3925  	UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error)
  3926  	// Permanently deletes a product and its reference images.
  3927  	//
  3928  	// Metadata of the product and all its images will be deleted right away, but
  3929  	// search queries against ProductSets containing the product may still work
  3930  	// until all related caches are refreshed.
  3931  	DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error)
  3932  	// Creates and returns a new ReferenceImage resource.
  3933  	//
  3934  	// The `bounding_poly` field is optional. If `bounding_poly` is not specified,
  3935  	// the system will try to detect regions of interest in the image that are
  3936  	// compatible with the product_category on the parent product. If it is
  3937  	// specified, detection is ALWAYS skipped. The system converts polygons into
  3938  	// non-rotated rectangles.
  3939  	//
  3940  	// Note that the pipeline will resize the image if the image resolution is too
  3941  	// large to process (above 50MP).
  3942  	//
  3943  	// Possible errors:
  3944  	//
  3945  	// * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096
  3946  	//   characters.
  3947  	// * Returns INVALID_ARGUMENT if the product does not exist.
  3948  	// * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing
  3949  	//   compatible with the parent product's product_category is detected.
  3950  	// * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons.
  3951  	CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error)
  3952  	// Permanently deletes a reference image.
  3953  	//
  3954  	// The image metadata will be deleted right away, but search queries
  3955  	// against ProductSets containing the image may still work until all related
  3956  	// caches are refreshed.
  3957  	//
  3958  	// The actual image files are not deleted from Google Cloud Storage.
  3959  	DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error)
  3960  	// Lists reference images.
  3961  	//
  3962  	// Possible errors:
  3963  	//
  3964  	// * Returns NOT_FOUND if the parent product does not exist.
  3965  	// * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less
  3966  	//   than 1.
  3967  	ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error)
  3968  	// Gets information associated with a ReferenceImage.
  3969  	//
  3970  	// Possible errors:
  3971  	//
  3972  	// * Returns NOT_FOUND if the specified image does not exist.
  3973  	GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error)
  3974  	// Adds a Product to the specified ProductSet. If the Product is already
  3975  	// present, no change is made.
  3976  	//
  3977  	// One Product can be added to at most 100 ProductSets.
  3978  	//
  3979  	// Possible errors:
  3980  	//
  3981  	// * Returns NOT_FOUND if the Product or the ProductSet doesn't exist.
  3982  	AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error)
  3983  	// Removes a Product from the specified ProductSet.
  3984  	RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error)
  3985  	// Lists the Products in a ProductSet, in an unspecified order. If the
  3986  	// ProductSet does not exist, the products field of the response will be
  3987  	// empty.
  3988  	//
  3989  	// Possible errors:
  3990  	//
  3991  	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
  3992  	ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error)
  3993  	// Asynchronous API that imports a list of reference images to specified
  3994  	// product sets based on a list of image information.
  3995  	//
  3996  	// The [google.longrunning.Operation][google.longrunning.Operation] API can be
  3997  	// used to keep track of the progress and results of the request.
  3998  	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
  3999  	// `Operation.response` contains `ImportProductSetsResponse`. (results)
  4000  	//
  4001  	// The input source of this method is a csv file on Google Cloud Storage.
  4002  	// For the format of the csv file please see
  4003  	// [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1p4beta1.ImportProductSetsGcsSource.csv_file_uri].
  4004  	ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error)
  4005  	// Asynchronous API to delete all Products in a ProductSet or all Products
  4006  	// that are in no ProductSet.
  4007  	//
  4008  	// If a Product is a member of the specified ProductSet in addition to other
  4009  	// ProductSets, the Product will still be deleted.
  4010  	//
  4011  	// It is recommended to not delete the specified ProductSet until after this
  4012  	// operation has completed. It is also recommended to not add any of the
  4013  	// Products involved in the batch delete to a new ProductSet while this
  4014  	// operation is running because those Products may still end up deleted.
  4015  	//
  4016  	// It's not possible to undo the PurgeProducts operation. Therefore, it is
  4017  	// recommended to keep the csv files used in ImportProductSets (if that was
  4018  	// how you originally built the Product Set) before starting PurgeProducts, in
  4019  	// case you need to re-import the data after deletion.
  4020  	//
  4021  	// If the plan is to purge all of the Products from a ProductSet and then
  4022  	// re-use the empty ProductSet to re-import new Products into the empty
  4023  	// ProductSet, you must wait until the PurgeProducts operation has finished
  4024  	// for that ProductSet.
  4025  	//
  4026  	// The [google.longrunning.Operation][google.longrunning.Operation] API can be
  4027  	// used to keep track of the progress and results of the request.
  4028  	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
  4029  	PurgeProducts(context.Context, *PurgeProductsRequest) (*longrunning.Operation, error)
  4030  }
  4031  
  4032  // UnimplementedProductSearchServer can be embedded to have forward compatible implementations.
  4033  type UnimplementedProductSearchServer struct {
  4034  }
  4035  
  4036  func (*UnimplementedProductSearchServer) CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) {
  4037  	return nil, status1.Errorf(codes.Unimplemented, "method CreateProductSet not implemented")
  4038  }
  4039  func (*UnimplementedProductSearchServer) ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) {
  4040  	return nil, status1.Errorf(codes.Unimplemented, "method ListProductSets not implemented")
  4041  }
  4042  func (*UnimplementedProductSearchServer) GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) {
  4043  	return nil, status1.Errorf(codes.Unimplemented, "method GetProductSet not implemented")
  4044  }
  4045  func (*UnimplementedProductSearchServer) UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) {
  4046  	return nil, status1.Errorf(codes.Unimplemented, "method UpdateProductSet not implemented")
  4047  }
  4048  func (*UnimplementedProductSearchServer) DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error) {
  4049  	return nil, status1.Errorf(codes.Unimplemented, "method DeleteProductSet not implemented")
  4050  }
  4051  func (*UnimplementedProductSearchServer) CreateProduct(context.Context, *CreateProductRequest) (*Product, error) {
  4052  	return nil, status1.Errorf(codes.Unimplemented, "method CreateProduct not implemented")
  4053  }
  4054  func (*UnimplementedProductSearchServer) ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) {
  4055  	return nil, status1.Errorf(codes.Unimplemented, "method ListProducts not implemented")
  4056  }
  4057  func (*UnimplementedProductSearchServer) GetProduct(context.Context, *GetProductRequest) (*Product, error) {
  4058  	return nil, status1.Errorf(codes.Unimplemented, "method GetProduct not implemented")
  4059  }
  4060  func (*UnimplementedProductSearchServer) UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) {
  4061  	return nil, status1.Errorf(codes.Unimplemented, "method UpdateProduct not implemented")
  4062  }
  4063  func (*UnimplementedProductSearchServer) DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error) {
  4064  	return nil, status1.Errorf(codes.Unimplemented, "method DeleteProduct not implemented")
  4065  }
  4066  func (*UnimplementedProductSearchServer) CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) {
  4067  	return nil, status1.Errorf(codes.Unimplemented, "method CreateReferenceImage not implemented")
  4068  }
  4069  func (*UnimplementedProductSearchServer) DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error) {
  4070  	return nil, status1.Errorf(codes.Unimplemented, "method DeleteReferenceImage not implemented")
  4071  }
  4072  func (*UnimplementedProductSearchServer) ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) {
  4073  	return nil, status1.Errorf(codes.Unimplemented, "method ListReferenceImages not implemented")
  4074  }
  4075  func (*UnimplementedProductSearchServer) GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) {
  4076  	return nil, status1.Errorf(codes.Unimplemented, "method GetReferenceImage not implemented")
  4077  }
  4078  func (*UnimplementedProductSearchServer) AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error) {
  4079  	return nil, status1.Errorf(codes.Unimplemented, "method AddProductToProductSet not implemented")
  4080  }
  4081  func (*UnimplementedProductSearchServer) RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error) {
  4082  	return nil, status1.Errorf(codes.Unimplemented, "method RemoveProductFromProductSet not implemented")
  4083  }
  4084  func (*UnimplementedProductSearchServer) ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) {
  4085  	return nil, status1.Errorf(codes.Unimplemented, "method ListProductsInProductSet not implemented")
  4086  }
  4087  func (*UnimplementedProductSearchServer) ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) {
  4088  	return nil, status1.Errorf(codes.Unimplemented, "method ImportProductSets not implemented")
  4089  }
  4090  func (*UnimplementedProductSearchServer) PurgeProducts(context.Context, *PurgeProductsRequest) (*longrunning.Operation, error) {
  4091  	return nil, status1.Errorf(codes.Unimplemented, "method PurgeProducts not implemented")
  4092  }
  4093  
  4094  func RegisterProductSearchServer(s *grpc.Server, srv ProductSearchServer) {
  4095  	s.RegisterService(&_ProductSearch_serviceDesc, srv)
  4096  }
  4097  
  4098  func _ProductSearch_CreateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4099  	in := new(CreateProductSetRequest)
  4100  	if err := dec(in); err != nil {
  4101  		return nil, err
  4102  	}
  4103  	if interceptor == nil {
  4104  		return srv.(ProductSearchServer).CreateProductSet(ctx, in)
  4105  	}
  4106  	info := &grpc.UnaryServerInfo{
  4107  		Server:     srv,
  4108  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/CreateProductSet",
  4109  	}
  4110  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4111  		return srv.(ProductSearchServer).CreateProductSet(ctx, req.(*CreateProductSetRequest))
  4112  	}
  4113  	return interceptor(ctx, in, info, handler)
  4114  }
  4115  
  4116  func _ProductSearch_ListProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4117  	in := new(ListProductSetsRequest)
  4118  	if err := dec(in); err != nil {
  4119  		return nil, err
  4120  	}
  4121  	if interceptor == nil {
  4122  		return srv.(ProductSearchServer).ListProductSets(ctx, in)
  4123  	}
  4124  	info := &grpc.UnaryServerInfo{
  4125  		Server:     srv,
  4126  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/ListProductSets",
  4127  	}
  4128  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4129  		return srv.(ProductSearchServer).ListProductSets(ctx, req.(*ListProductSetsRequest))
  4130  	}
  4131  	return interceptor(ctx, in, info, handler)
  4132  }
  4133  
  4134  func _ProductSearch_GetProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4135  	in := new(GetProductSetRequest)
  4136  	if err := dec(in); err != nil {
  4137  		return nil, err
  4138  	}
  4139  	if interceptor == nil {
  4140  		return srv.(ProductSearchServer).GetProductSet(ctx, in)
  4141  	}
  4142  	info := &grpc.UnaryServerInfo{
  4143  		Server:     srv,
  4144  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/GetProductSet",
  4145  	}
  4146  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4147  		return srv.(ProductSearchServer).GetProductSet(ctx, req.(*GetProductSetRequest))
  4148  	}
  4149  	return interceptor(ctx, in, info, handler)
  4150  }
  4151  
  4152  func _ProductSearch_UpdateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4153  	in := new(UpdateProductSetRequest)
  4154  	if err := dec(in); err != nil {
  4155  		return nil, err
  4156  	}
  4157  	if interceptor == nil {
  4158  		return srv.(ProductSearchServer).UpdateProductSet(ctx, in)
  4159  	}
  4160  	info := &grpc.UnaryServerInfo{
  4161  		Server:     srv,
  4162  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/UpdateProductSet",
  4163  	}
  4164  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4165  		return srv.(ProductSearchServer).UpdateProductSet(ctx, req.(*UpdateProductSetRequest))
  4166  	}
  4167  	return interceptor(ctx, in, info, handler)
  4168  }
  4169  
  4170  func _ProductSearch_DeleteProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4171  	in := new(DeleteProductSetRequest)
  4172  	if err := dec(in); err != nil {
  4173  		return nil, err
  4174  	}
  4175  	if interceptor == nil {
  4176  		return srv.(ProductSearchServer).DeleteProductSet(ctx, in)
  4177  	}
  4178  	info := &grpc.UnaryServerInfo{
  4179  		Server:     srv,
  4180  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/DeleteProductSet",
  4181  	}
  4182  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4183  		return srv.(ProductSearchServer).DeleteProductSet(ctx, req.(*DeleteProductSetRequest))
  4184  	}
  4185  	return interceptor(ctx, in, info, handler)
  4186  }
  4187  
  4188  func _ProductSearch_CreateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4189  	in := new(CreateProductRequest)
  4190  	if err := dec(in); err != nil {
  4191  		return nil, err
  4192  	}
  4193  	if interceptor == nil {
  4194  		return srv.(ProductSearchServer).CreateProduct(ctx, in)
  4195  	}
  4196  	info := &grpc.UnaryServerInfo{
  4197  		Server:     srv,
  4198  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/CreateProduct",
  4199  	}
  4200  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4201  		return srv.(ProductSearchServer).CreateProduct(ctx, req.(*CreateProductRequest))
  4202  	}
  4203  	return interceptor(ctx, in, info, handler)
  4204  }
  4205  
  4206  func _ProductSearch_ListProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4207  	in := new(ListProductsRequest)
  4208  	if err := dec(in); err != nil {
  4209  		return nil, err
  4210  	}
  4211  	if interceptor == nil {
  4212  		return srv.(ProductSearchServer).ListProducts(ctx, in)
  4213  	}
  4214  	info := &grpc.UnaryServerInfo{
  4215  		Server:     srv,
  4216  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/ListProducts",
  4217  	}
  4218  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4219  		return srv.(ProductSearchServer).ListProducts(ctx, req.(*ListProductsRequest))
  4220  	}
  4221  	return interceptor(ctx, in, info, handler)
  4222  }
  4223  
  4224  func _ProductSearch_GetProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4225  	in := new(GetProductRequest)
  4226  	if err := dec(in); err != nil {
  4227  		return nil, err
  4228  	}
  4229  	if interceptor == nil {
  4230  		return srv.(ProductSearchServer).GetProduct(ctx, in)
  4231  	}
  4232  	info := &grpc.UnaryServerInfo{
  4233  		Server:     srv,
  4234  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/GetProduct",
  4235  	}
  4236  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4237  		return srv.(ProductSearchServer).GetProduct(ctx, req.(*GetProductRequest))
  4238  	}
  4239  	return interceptor(ctx, in, info, handler)
  4240  }
  4241  
  4242  func _ProductSearch_UpdateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4243  	in := new(UpdateProductRequest)
  4244  	if err := dec(in); err != nil {
  4245  		return nil, err
  4246  	}
  4247  	if interceptor == nil {
  4248  		return srv.(ProductSearchServer).UpdateProduct(ctx, in)
  4249  	}
  4250  	info := &grpc.UnaryServerInfo{
  4251  		Server:     srv,
  4252  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/UpdateProduct",
  4253  	}
  4254  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4255  		return srv.(ProductSearchServer).UpdateProduct(ctx, req.(*UpdateProductRequest))
  4256  	}
  4257  	return interceptor(ctx, in, info, handler)
  4258  }
  4259  
  4260  func _ProductSearch_DeleteProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4261  	in := new(DeleteProductRequest)
  4262  	if err := dec(in); err != nil {
  4263  		return nil, err
  4264  	}
  4265  	if interceptor == nil {
  4266  		return srv.(ProductSearchServer).DeleteProduct(ctx, in)
  4267  	}
  4268  	info := &grpc.UnaryServerInfo{
  4269  		Server:     srv,
  4270  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/DeleteProduct",
  4271  	}
  4272  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4273  		return srv.(ProductSearchServer).DeleteProduct(ctx, req.(*DeleteProductRequest))
  4274  	}
  4275  	return interceptor(ctx, in, info, handler)
  4276  }
  4277  
  4278  func _ProductSearch_CreateReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4279  	in := new(CreateReferenceImageRequest)
  4280  	if err := dec(in); err != nil {
  4281  		return nil, err
  4282  	}
  4283  	if interceptor == nil {
  4284  		return srv.(ProductSearchServer).CreateReferenceImage(ctx, in)
  4285  	}
  4286  	info := &grpc.UnaryServerInfo{
  4287  		Server:     srv,
  4288  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/CreateReferenceImage",
  4289  	}
  4290  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4291  		return srv.(ProductSearchServer).CreateReferenceImage(ctx, req.(*CreateReferenceImageRequest))
  4292  	}
  4293  	return interceptor(ctx, in, info, handler)
  4294  }
  4295  
  4296  func _ProductSearch_DeleteReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4297  	in := new(DeleteReferenceImageRequest)
  4298  	if err := dec(in); err != nil {
  4299  		return nil, err
  4300  	}
  4301  	if interceptor == nil {
  4302  		return srv.(ProductSearchServer).DeleteReferenceImage(ctx, in)
  4303  	}
  4304  	info := &grpc.UnaryServerInfo{
  4305  		Server:     srv,
  4306  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/DeleteReferenceImage",
  4307  	}
  4308  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4309  		return srv.(ProductSearchServer).DeleteReferenceImage(ctx, req.(*DeleteReferenceImageRequest))
  4310  	}
  4311  	return interceptor(ctx, in, info, handler)
  4312  }
  4313  
  4314  func _ProductSearch_ListReferenceImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4315  	in := new(ListReferenceImagesRequest)
  4316  	if err := dec(in); err != nil {
  4317  		return nil, err
  4318  	}
  4319  	if interceptor == nil {
  4320  		return srv.(ProductSearchServer).ListReferenceImages(ctx, in)
  4321  	}
  4322  	info := &grpc.UnaryServerInfo{
  4323  		Server:     srv,
  4324  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/ListReferenceImages",
  4325  	}
  4326  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4327  		return srv.(ProductSearchServer).ListReferenceImages(ctx, req.(*ListReferenceImagesRequest))
  4328  	}
  4329  	return interceptor(ctx, in, info, handler)
  4330  }
  4331  
  4332  func _ProductSearch_GetReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4333  	in := new(GetReferenceImageRequest)
  4334  	if err := dec(in); err != nil {
  4335  		return nil, err
  4336  	}
  4337  	if interceptor == nil {
  4338  		return srv.(ProductSearchServer).GetReferenceImage(ctx, in)
  4339  	}
  4340  	info := &grpc.UnaryServerInfo{
  4341  		Server:     srv,
  4342  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/GetReferenceImage",
  4343  	}
  4344  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4345  		return srv.(ProductSearchServer).GetReferenceImage(ctx, req.(*GetReferenceImageRequest))
  4346  	}
  4347  	return interceptor(ctx, in, info, handler)
  4348  }
  4349  
  4350  func _ProductSearch_AddProductToProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4351  	in := new(AddProductToProductSetRequest)
  4352  	if err := dec(in); err != nil {
  4353  		return nil, err
  4354  	}
  4355  	if interceptor == nil {
  4356  		return srv.(ProductSearchServer).AddProductToProductSet(ctx, in)
  4357  	}
  4358  	info := &grpc.UnaryServerInfo{
  4359  		Server:     srv,
  4360  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/AddProductToProductSet",
  4361  	}
  4362  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4363  		return srv.(ProductSearchServer).AddProductToProductSet(ctx, req.(*AddProductToProductSetRequest))
  4364  	}
  4365  	return interceptor(ctx, in, info, handler)
  4366  }
  4367  
  4368  func _ProductSearch_RemoveProductFromProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4369  	in := new(RemoveProductFromProductSetRequest)
  4370  	if err := dec(in); err != nil {
  4371  		return nil, err
  4372  	}
  4373  	if interceptor == nil {
  4374  		return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, in)
  4375  	}
  4376  	info := &grpc.UnaryServerInfo{
  4377  		Server:     srv,
  4378  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/RemoveProductFromProductSet",
  4379  	}
  4380  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4381  		return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, req.(*RemoveProductFromProductSetRequest))
  4382  	}
  4383  	return interceptor(ctx, in, info, handler)
  4384  }
  4385  
  4386  func _ProductSearch_ListProductsInProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4387  	in := new(ListProductsInProductSetRequest)
  4388  	if err := dec(in); err != nil {
  4389  		return nil, err
  4390  	}
  4391  	if interceptor == nil {
  4392  		return srv.(ProductSearchServer).ListProductsInProductSet(ctx, in)
  4393  	}
  4394  	info := &grpc.UnaryServerInfo{
  4395  		Server:     srv,
  4396  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/ListProductsInProductSet",
  4397  	}
  4398  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4399  		return srv.(ProductSearchServer).ListProductsInProductSet(ctx, req.(*ListProductsInProductSetRequest))
  4400  	}
  4401  	return interceptor(ctx, in, info, handler)
  4402  }
  4403  
  4404  func _ProductSearch_ImportProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4405  	in := new(ImportProductSetsRequest)
  4406  	if err := dec(in); err != nil {
  4407  		return nil, err
  4408  	}
  4409  	if interceptor == nil {
  4410  		return srv.(ProductSearchServer).ImportProductSets(ctx, in)
  4411  	}
  4412  	info := &grpc.UnaryServerInfo{
  4413  		Server:     srv,
  4414  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/ImportProductSets",
  4415  	}
  4416  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4417  		return srv.(ProductSearchServer).ImportProductSets(ctx, req.(*ImportProductSetsRequest))
  4418  	}
  4419  	return interceptor(ctx, in, info, handler)
  4420  }
  4421  
  4422  func _ProductSearch_PurgeProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  4423  	in := new(PurgeProductsRequest)
  4424  	if err := dec(in); err != nil {
  4425  		return nil, err
  4426  	}
  4427  	if interceptor == nil {
  4428  		return srv.(ProductSearchServer).PurgeProducts(ctx, in)
  4429  	}
  4430  	info := &grpc.UnaryServerInfo{
  4431  		Server:     srv,
  4432  		FullMethod: "/google.cloud.vision.v1p4beta1.ProductSearch/PurgeProducts",
  4433  	}
  4434  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  4435  		return srv.(ProductSearchServer).PurgeProducts(ctx, req.(*PurgeProductsRequest))
  4436  	}
  4437  	return interceptor(ctx, in, info, handler)
  4438  }
  4439  
  4440  var _ProductSearch_serviceDesc = grpc.ServiceDesc{
  4441  	ServiceName: "google.cloud.vision.v1p4beta1.ProductSearch",
  4442  	HandlerType: (*ProductSearchServer)(nil),
  4443  	Methods: []grpc.MethodDesc{
  4444  		{
  4445  			MethodName: "CreateProductSet",
  4446  			Handler:    _ProductSearch_CreateProductSet_Handler,
  4447  		},
  4448  		{
  4449  			MethodName: "ListProductSets",
  4450  			Handler:    _ProductSearch_ListProductSets_Handler,
  4451  		},
  4452  		{
  4453  			MethodName: "GetProductSet",
  4454  			Handler:    _ProductSearch_GetProductSet_Handler,
  4455  		},
  4456  		{
  4457  			MethodName: "UpdateProductSet",
  4458  			Handler:    _ProductSearch_UpdateProductSet_Handler,
  4459  		},
  4460  		{
  4461  			MethodName: "DeleteProductSet",
  4462  			Handler:    _ProductSearch_DeleteProductSet_Handler,
  4463  		},
  4464  		{
  4465  			MethodName: "CreateProduct",
  4466  			Handler:    _ProductSearch_CreateProduct_Handler,
  4467  		},
  4468  		{
  4469  			MethodName: "ListProducts",
  4470  			Handler:    _ProductSearch_ListProducts_Handler,
  4471  		},
  4472  		{
  4473  			MethodName: "GetProduct",
  4474  			Handler:    _ProductSearch_GetProduct_Handler,
  4475  		},
  4476  		{
  4477  			MethodName: "UpdateProduct",
  4478  			Handler:    _ProductSearch_UpdateProduct_Handler,
  4479  		},
  4480  		{
  4481  			MethodName: "DeleteProduct",
  4482  			Handler:    _ProductSearch_DeleteProduct_Handler,
  4483  		},
  4484  		{
  4485  			MethodName: "CreateReferenceImage",
  4486  			Handler:    _ProductSearch_CreateReferenceImage_Handler,
  4487  		},
  4488  		{
  4489  			MethodName: "DeleteReferenceImage",
  4490  			Handler:    _ProductSearch_DeleteReferenceImage_Handler,
  4491  		},
  4492  		{
  4493  			MethodName: "ListReferenceImages",
  4494  			Handler:    _ProductSearch_ListReferenceImages_Handler,
  4495  		},
  4496  		{
  4497  			MethodName: "GetReferenceImage",
  4498  			Handler:    _ProductSearch_GetReferenceImage_Handler,
  4499  		},
  4500  		{
  4501  			MethodName: "AddProductToProductSet",
  4502  			Handler:    _ProductSearch_AddProductToProductSet_Handler,
  4503  		},
  4504  		{
  4505  			MethodName: "RemoveProductFromProductSet",
  4506  			Handler:    _ProductSearch_RemoveProductFromProductSet_Handler,
  4507  		},
  4508  		{
  4509  			MethodName: "ListProductsInProductSet",
  4510  			Handler:    _ProductSearch_ListProductsInProductSet_Handler,
  4511  		},
  4512  		{
  4513  			MethodName: "ImportProductSets",
  4514  			Handler:    _ProductSearch_ImportProductSets_Handler,
  4515  		},
  4516  		{
  4517  			MethodName: "PurgeProducts",
  4518  			Handler:    _ProductSearch_PurgeProducts_Handler,
  4519  		},
  4520  	},
  4521  	Streams:  []grpc.StreamDesc{},
  4522  	Metadata: "google/cloud/vision/v1p4beta1/product_search_service.proto",
  4523  }
  4524  

View as plain text