go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/resultdb/proto/v1/recorder.pb.go (about)

     1  // Copyright 2019 The LUCI Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by protoc-gen-go. DO NOT EDIT.
    16  // versions:
    17  // 	protoc-gen-go v1.31.0
    18  // 	protoc        v3.21.7
    19  // source: go.chromium.org/luci/resultdb/proto/v1/recorder.proto
    20  
    21  package resultpb
    22  
    23  import prpc "go.chromium.org/luci/grpc/prpc"
    24  
    25  import (
    26  	context "context"
    27  	_ "google.golang.org/genproto/googleapis/api/annotations"
    28  	grpc "google.golang.org/grpc"
    29  	codes "google.golang.org/grpc/codes"
    30  	status "google.golang.org/grpc/status"
    31  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    32  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    33  	emptypb "google.golang.org/protobuf/types/known/emptypb"
    34  	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    35  	reflect "reflect"
    36  	sync "sync"
    37  )
    38  
    39  const (
    40  	// Verify that this generated code is sufficiently up-to-date.
    41  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    42  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    43  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    44  )
    45  
    46  // A request message for CreateInvocation.
    47  type CreateInvocationRequest struct {
    48  	state         protoimpl.MessageState
    49  	sizeCache     protoimpl.SizeCache
    50  	unknownFields protoimpl.UnknownFields
    51  
    52  	// Invocation identifier, becomes a part of the invocation.name.
    53  	// LUCI systems MAY create invocations with nicely formatted IDs, such as
    54  	// "build-1234567890". All other clients MUST use GUIDs.
    55  	//
    56  	// Regex: ^[a-z][a-z0-9_\-]*$.
    57  	InvocationId string `protobuf:"bytes,1,opt,name=invocation_id,json=invocationId,proto3" json:"invocation_id,omitempty"`
    58  	// Invocation data to insert.
    59  	Invocation *Invocation `protobuf:"bytes,2,opt,name=invocation,proto3" json:"invocation,omitempty"`
    60  	// A unique identifier for this request. Restricted to 36 ASCII characters.
    61  	// A random UUID is recommended.
    62  	// This request is only idempotent if a `request_id` is provided.
    63  	RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
    64  }
    65  
    66  func (x *CreateInvocationRequest) Reset() {
    67  	*x = CreateInvocationRequest{}
    68  	if protoimpl.UnsafeEnabled {
    69  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[0]
    70  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    71  		ms.StoreMessageInfo(mi)
    72  	}
    73  }
    74  
    75  func (x *CreateInvocationRequest) String() string {
    76  	return protoimpl.X.MessageStringOf(x)
    77  }
    78  
    79  func (*CreateInvocationRequest) ProtoMessage() {}
    80  
    81  func (x *CreateInvocationRequest) ProtoReflect() protoreflect.Message {
    82  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[0]
    83  	if protoimpl.UnsafeEnabled && x != nil {
    84  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    85  		if ms.LoadMessageInfo() == nil {
    86  			ms.StoreMessageInfo(mi)
    87  		}
    88  		return ms
    89  	}
    90  	return mi.MessageOf(x)
    91  }
    92  
    93  // Deprecated: Use CreateInvocationRequest.ProtoReflect.Descriptor instead.
    94  func (*CreateInvocationRequest) Descriptor() ([]byte, []int) {
    95  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{0}
    96  }
    97  
    98  func (x *CreateInvocationRequest) GetInvocationId() string {
    99  	if x != nil {
   100  		return x.InvocationId
   101  	}
   102  	return ""
   103  }
   104  
   105  func (x *CreateInvocationRequest) GetInvocation() *Invocation {
   106  	if x != nil {
   107  		return x.Invocation
   108  	}
   109  	return nil
   110  }
   111  
   112  func (x *CreateInvocationRequest) GetRequestId() string {
   113  	if x != nil {
   114  		return x.RequestId
   115  	}
   116  	return ""
   117  }
   118  
   119  // A request message for BatchCreateInvocations
   120  type BatchCreateInvocationsRequest struct {
   121  	state         protoimpl.MessageState
   122  	sizeCache     protoimpl.SizeCache
   123  	unknownFields protoimpl.UnknownFields
   124  
   125  	// requests[i].request_id MUST be either empty or equal to request_id in
   126  	// this message.
   127  	//
   128  	// Up to 500 requests.
   129  	Requests []*CreateInvocationRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"`
   130  	// A unique identifier for this request. Restricted to 36 ASCII characters.
   131  	// A random UUID is recommended.
   132  	// This request is only idempotent if a `request_id` is provided, so it is
   133  	// strongly recommended to populate this field.
   134  	RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
   135  }
   136  
   137  func (x *BatchCreateInvocationsRequest) Reset() {
   138  	*x = BatchCreateInvocationsRequest{}
   139  	if protoimpl.UnsafeEnabled {
   140  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[1]
   141  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   142  		ms.StoreMessageInfo(mi)
   143  	}
   144  }
   145  
   146  func (x *BatchCreateInvocationsRequest) String() string {
   147  	return protoimpl.X.MessageStringOf(x)
   148  }
   149  
   150  func (*BatchCreateInvocationsRequest) ProtoMessage() {}
   151  
   152  func (x *BatchCreateInvocationsRequest) ProtoReflect() protoreflect.Message {
   153  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[1]
   154  	if protoimpl.UnsafeEnabled && x != nil {
   155  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   156  		if ms.LoadMessageInfo() == nil {
   157  			ms.StoreMessageInfo(mi)
   158  		}
   159  		return ms
   160  	}
   161  	return mi.MessageOf(x)
   162  }
   163  
   164  // Deprecated: Use BatchCreateInvocationsRequest.ProtoReflect.Descriptor instead.
   165  func (*BatchCreateInvocationsRequest) Descriptor() ([]byte, []int) {
   166  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{1}
   167  }
   168  
   169  func (x *BatchCreateInvocationsRequest) GetRequests() []*CreateInvocationRequest {
   170  	if x != nil {
   171  		return x.Requests
   172  	}
   173  	return nil
   174  }
   175  
   176  func (x *BatchCreateInvocationsRequest) GetRequestId() string {
   177  	if x != nil {
   178  		return x.RequestId
   179  	}
   180  	return ""
   181  }
   182  
   183  // A response message for BatchCreateInvocations RPC.
   184  type BatchCreateInvocationsResponse struct {
   185  	state         protoimpl.MessageState
   186  	sizeCache     protoimpl.SizeCache
   187  	unknownFields protoimpl.UnknownFields
   188  
   189  	// Invocations created.
   190  	Invocations []*Invocation `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
   191  	// One token per each created invocation.
   192  	// These are passed in the response instead of as metadata, because large
   193  	// batches increase the size of the response headers beyond allowed limits and
   194  	// cause failures like crbug.com/1064496
   195  	// update_tokens[i] corresponds to invocations[i].
   196  	// *Do not log these values*.
   197  	UpdateTokens []string `protobuf:"bytes,2,rep,name=update_tokens,json=updateTokens,proto3" json:"update_tokens,omitempty"`
   198  }
   199  
   200  func (x *BatchCreateInvocationsResponse) Reset() {
   201  	*x = BatchCreateInvocationsResponse{}
   202  	if protoimpl.UnsafeEnabled {
   203  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[2]
   204  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   205  		ms.StoreMessageInfo(mi)
   206  	}
   207  }
   208  
   209  func (x *BatchCreateInvocationsResponse) String() string {
   210  	return protoimpl.X.MessageStringOf(x)
   211  }
   212  
   213  func (*BatchCreateInvocationsResponse) ProtoMessage() {}
   214  
   215  func (x *BatchCreateInvocationsResponse) ProtoReflect() protoreflect.Message {
   216  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[2]
   217  	if protoimpl.UnsafeEnabled && x != nil {
   218  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   219  		if ms.LoadMessageInfo() == nil {
   220  			ms.StoreMessageInfo(mi)
   221  		}
   222  		return ms
   223  	}
   224  	return mi.MessageOf(x)
   225  }
   226  
   227  // Deprecated: Use BatchCreateInvocationsResponse.ProtoReflect.Descriptor instead.
   228  func (*BatchCreateInvocationsResponse) Descriptor() ([]byte, []int) {
   229  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{2}
   230  }
   231  
   232  func (x *BatchCreateInvocationsResponse) GetInvocations() []*Invocation {
   233  	if x != nil {
   234  		return x.Invocations
   235  	}
   236  	return nil
   237  }
   238  
   239  func (x *BatchCreateInvocationsResponse) GetUpdateTokens() []string {
   240  	if x != nil {
   241  		return x.UpdateTokens
   242  	}
   243  	return nil
   244  }
   245  
   246  // A request message for UpdateInvocation RPC.
   247  type UpdateInvocationRequest struct {
   248  	state         protoimpl.MessageState
   249  	sizeCache     protoimpl.SizeCache
   250  	unknownFields protoimpl.UnknownFields
   251  
   252  	// Invocation to update.
   253  	Invocation *Invocation `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
   254  	// The list of fields to be updated.
   255  	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
   256  }
   257  
   258  func (x *UpdateInvocationRequest) Reset() {
   259  	*x = UpdateInvocationRequest{}
   260  	if protoimpl.UnsafeEnabled {
   261  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[3]
   262  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   263  		ms.StoreMessageInfo(mi)
   264  	}
   265  }
   266  
   267  func (x *UpdateInvocationRequest) String() string {
   268  	return protoimpl.X.MessageStringOf(x)
   269  }
   270  
   271  func (*UpdateInvocationRequest) ProtoMessage() {}
   272  
   273  func (x *UpdateInvocationRequest) ProtoReflect() protoreflect.Message {
   274  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[3]
   275  	if protoimpl.UnsafeEnabled && x != nil {
   276  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   277  		if ms.LoadMessageInfo() == nil {
   278  			ms.StoreMessageInfo(mi)
   279  		}
   280  		return ms
   281  	}
   282  	return mi.MessageOf(x)
   283  }
   284  
   285  // Deprecated: Use UpdateInvocationRequest.ProtoReflect.Descriptor instead.
   286  func (*UpdateInvocationRequest) Descriptor() ([]byte, []int) {
   287  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{3}
   288  }
   289  
   290  func (x *UpdateInvocationRequest) GetInvocation() *Invocation {
   291  	if x != nil {
   292  		return x.Invocation
   293  	}
   294  	return nil
   295  }
   296  
   297  func (x *UpdateInvocationRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
   298  	if x != nil {
   299  		return x.UpdateMask
   300  	}
   301  	return nil
   302  }
   303  
   304  // A request message for FinalizeInvocation RPC.
   305  type FinalizeInvocationRequest struct {
   306  	state         protoimpl.MessageState
   307  	sizeCache     protoimpl.SizeCache
   308  	unknownFields protoimpl.UnknownFields
   309  
   310  	// Name of the invocation to finalize.
   311  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   312  }
   313  
   314  func (x *FinalizeInvocationRequest) Reset() {
   315  	*x = FinalizeInvocationRequest{}
   316  	if protoimpl.UnsafeEnabled {
   317  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[4]
   318  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   319  		ms.StoreMessageInfo(mi)
   320  	}
   321  }
   322  
   323  func (x *FinalizeInvocationRequest) String() string {
   324  	return protoimpl.X.MessageStringOf(x)
   325  }
   326  
   327  func (*FinalizeInvocationRequest) ProtoMessage() {}
   328  
   329  func (x *FinalizeInvocationRequest) ProtoReflect() protoreflect.Message {
   330  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[4]
   331  	if protoimpl.UnsafeEnabled && x != nil {
   332  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   333  		if ms.LoadMessageInfo() == nil {
   334  			ms.StoreMessageInfo(mi)
   335  		}
   336  		return ms
   337  	}
   338  	return mi.MessageOf(x)
   339  }
   340  
   341  // Deprecated: Use FinalizeInvocationRequest.ProtoReflect.Descriptor instead.
   342  func (*FinalizeInvocationRequest) Descriptor() ([]byte, []int) {
   343  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{4}
   344  }
   345  
   346  func (x *FinalizeInvocationRequest) GetName() string {
   347  	if x != nil {
   348  		return x.Name
   349  	}
   350  	return ""
   351  }
   352  
   353  // A request message for UpdateIncludedInvocations RPC.
   354  type UpdateIncludedInvocationsRequest struct {
   355  	state         protoimpl.MessageState
   356  	sizeCache     protoimpl.SizeCache
   357  	unknownFields protoimpl.UnknownFields
   358  
   359  	// Name of the invocation to add/remove inclusions to/from,
   360  	// see Invocation.name.
   361  	// For example, name of the buildbucket build invocation that should include
   362  	// a swarming task invocation.
   363  	IncludingInvocation string `protobuf:"bytes,1,opt,name=including_invocation,json=includingInvocation,proto3" json:"including_invocation,omitempty"`
   364  	// Names of the invocations to include, see Invocation.name.
   365  	// If any of these invocations are already included, they will be silently
   366  	// ignored for idempotency.
   367  	AddInvocations []string `protobuf:"bytes,2,rep,name=add_invocations,json=addInvocations,proto3" json:"add_invocations,omitempty"`
   368  	// Names of the previously included invocations to remove, see
   369  	// Invocation.name.
   370  	// If any of these invocations are not included already, they will be silently
   371  	// ignored for idempotency.
   372  	RemoveInvocations []string `protobuf:"bytes,3,rep,name=remove_invocations,json=removeInvocations,proto3" json:"remove_invocations,omitempty"`
   373  }
   374  
   375  func (x *UpdateIncludedInvocationsRequest) Reset() {
   376  	*x = UpdateIncludedInvocationsRequest{}
   377  	if protoimpl.UnsafeEnabled {
   378  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[5]
   379  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   380  		ms.StoreMessageInfo(mi)
   381  	}
   382  }
   383  
   384  func (x *UpdateIncludedInvocationsRequest) String() string {
   385  	return protoimpl.X.MessageStringOf(x)
   386  }
   387  
   388  func (*UpdateIncludedInvocationsRequest) ProtoMessage() {}
   389  
   390  func (x *UpdateIncludedInvocationsRequest) ProtoReflect() protoreflect.Message {
   391  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[5]
   392  	if protoimpl.UnsafeEnabled && x != nil {
   393  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   394  		if ms.LoadMessageInfo() == nil {
   395  			ms.StoreMessageInfo(mi)
   396  		}
   397  		return ms
   398  	}
   399  	return mi.MessageOf(x)
   400  }
   401  
   402  // Deprecated: Use UpdateIncludedInvocationsRequest.ProtoReflect.Descriptor instead.
   403  func (*UpdateIncludedInvocationsRequest) Descriptor() ([]byte, []int) {
   404  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{5}
   405  }
   406  
   407  func (x *UpdateIncludedInvocationsRequest) GetIncludingInvocation() string {
   408  	if x != nil {
   409  		return x.IncludingInvocation
   410  	}
   411  	return ""
   412  }
   413  
   414  func (x *UpdateIncludedInvocationsRequest) GetAddInvocations() []string {
   415  	if x != nil {
   416  		return x.AddInvocations
   417  	}
   418  	return nil
   419  }
   420  
   421  func (x *UpdateIncludedInvocationsRequest) GetRemoveInvocations() []string {
   422  	if x != nil {
   423  		return x.RemoveInvocations
   424  	}
   425  	return nil
   426  }
   427  
   428  // A request message for MarkInvocationSubmitted RPC.
   429  // To use this RPC, callers need:
   430  //   - resultdb.invocations.setSubmitted in the realm the <project>:@project, where
   431  //     project is the project of the nominated invocation.
   432  type MarkInvocationSubmittedRequest struct {
   433  	state         protoimpl.MessageState
   434  	sizeCache     protoimpl.SizeCache
   435  	unknownFields protoimpl.UnknownFields
   436  
   437  	// Name of the invocation, e.g. "invocations/{id}".
   438  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
   439  }
   440  
   441  func (x *MarkInvocationSubmittedRequest) Reset() {
   442  	*x = MarkInvocationSubmittedRequest{}
   443  	if protoimpl.UnsafeEnabled {
   444  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[6]
   445  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   446  		ms.StoreMessageInfo(mi)
   447  	}
   448  }
   449  
   450  func (x *MarkInvocationSubmittedRequest) String() string {
   451  	return protoimpl.X.MessageStringOf(x)
   452  }
   453  
   454  func (*MarkInvocationSubmittedRequest) ProtoMessage() {}
   455  
   456  func (x *MarkInvocationSubmittedRequest) ProtoReflect() protoreflect.Message {
   457  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[6]
   458  	if protoimpl.UnsafeEnabled && x != nil {
   459  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   460  		if ms.LoadMessageInfo() == nil {
   461  			ms.StoreMessageInfo(mi)
   462  		}
   463  		return ms
   464  	}
   465  	return mi.MessageOf(x)
   466  }
   467  
   468  // Deprecated: Use MarkInvocationSubmittedRequest.ProtoReflect.Descriptor instead.
   469  func (*MarkInvocationSubmittedRequest) Descriptor() ([]byte, []int) {
   470  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{6}
   471  }
   472  
   473  func (x *MarkInvocationSubmittedRequest) GetInvocation() string {
   474  	if x != nil {
   475  		return x.Invocation
   476  	}
   477  	return ""
   478  }
   479  
   480  // A request message for CreateTestResult RPC.
   481  type CreateTestResultRequest struct {
   482  	state         protoimpl.MessageState
   483  	sizeCache     protoimpl.SizeCache
   484  	unknownFields protoimpl.UnknownFields
   485  
   486  	// Name of the parent invocation, see Invocation.name.
   487  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
   488  	// The test result to create.
   489  	// Test id and result id are used to dedupe requests, i.e.
   490  	// if a test result with the same test id and result id already exists in
   491  	// the invocation, then the requests succeeds as opposed to returns with
   492  	// ALREADY_EXISTS error.
   493  	TestResult *TestResult `protobuf:"bytes,2,opt,name=test_result,json=testResult,proto3" json:"test_result,omitempty"`
   494  	// A unique identifier for this request. Restricted to 36 ASCII characters.
   495  	// A random UUID is recommended.
   496  	// This request is only idempotent if a `request_id` is provided, so it is
   497  	// strongly recommended to populate this field.
   498  	//
   499  	// Impl note: this field is used to compute the spanner-level result id, which
   500  	// will encode tuple (request_id, index_of_request)", where
   501  	//   - request_id is a random GUID if not provided by the user
   502  	//   - index_of_request is 0 in CreateTestResult RPC, or index of the request
   503  	//     in BatchCreateTestResultsRequest in the batch RPC.
   504  	//
   505  	// TODO(jchinlee): remove this impl note when it is converted into code.
   506  	RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
   507  }
   508  
   509  func (x *CreateTestResultRequest) Reset() {
   510  	*x = CreateTestResultRequest{}
   511  	if protoimpl.UnsafeEnabled {
   512  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[7]
   513  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   514  		ms.StoreMessageInfo(mi)
   515  	}
   516  }
   517  
   518  func (x *CreateTestResultRequest) String() string {
   519  	return protoimpl.X.MessageStringOf(x)
   520  }
   521  
   522  func (*CreateTestResultRequest) ProtoMessage() {}
   523  
   524  func (x *CreateTestResultRequest) ProtoReflect() protoreflect.Message {
   525  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[7]
   526  	if protoimpl.UnsafeEnabled && x != nil {
   527  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   528  		if ms.LoadMessageInfo() == nil {
   529  			ms.StoreMessageInfo(mi)
   530  		}
   531  		return ms
   532  	}
   533  	return mi.MessageOf(x)
   534  }
   535  
   536  // Deprecated: Use CreateTestResultRequest.ProtoReflect.Descriptor instead.
   537  func (*CreateTestResultRequest) Descriptor() ([]byte, []int) {
   538  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{7}
   539  }
   540  
   541  func (x *CreateTestResultRequest) GetInvocation() string {
   542  	if x != nil {
   543  		return x.Invocation
   544  	}
   545  	return ""
   546  }
   547  
   548  func (x *CreateTestResultRequest) GetTestResult() *TestResult {
   549  	if x != nil {
   550  		return x.TestResult
   551  	}
   552  	return nil
   553  }
   554  
   555  func (x *CreateTestResultRequest) GetRequestId() string {
   556  	if x != nil {
   557  		return x.RequestId
   558  	}
   559  	return ""
   560  }
   561  
   562  // A request message for BatchCreateTestResults RPC.
   563  type BatchCreateTestResultsRequest struct {
   564  	state         protoimpl.MessageState
   565  	sizeCache     protoimpl.SizeCache
   566  	unknownFields protoimpl.UnknownFields
   567  
   568  	// Name of the parent invocation, see Invocation.name.
   569  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
   570  	// Requests to create test results.
   571  	// requests[i].invocation MUST be either empty or equal to invocation in this
   572  	// message.
   573  	// requests[i].request_id MUST be either empty or equal to request_id in
   574  	// this message.
   575  	//
   576  	// Up to 500 requests.
   577  	Requests []*CreateTestResultRequest `protobuf:"bytes,2,rep,name=requests,proto3" json:"requests,omitempty"`
   578  	// A unique identifier for this request. Restricted to 36 ASCII characters.
   579  	// A random UUID is recommended.
   580  	// This request is only idempotent if a `request_id` is provided, so it is
   581  	// strongly recommended to populate this field.
   582  	RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
   583  }
   584  
   585  func (x *BatchCreateTestResultsRequest) Reset() {
   586  	*x = BatchCreateTestResultsRequest{}
   587  	if protoimpl.UnsafeEnabled {
   588  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[8]
   589  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   590  		ms.StoreMessageInfo(mi)
   591  	}
   592  }
   593  
   594  func (x *BatchCreateTestResultsRequest) String() string {
   595  	return protoimpl.X.MessageStringOf(x)
   596  }
   597  
   598  func (*BatchCreateTestResultsRequest) ProtoMessage() {}
   599  
   600  func (x *BatchCreateTestResultsRequest) ProtoReflect() protoreflect.Message {
   601  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[8]
   602  	if protoimpl.UnsafeEnabled && x != nil {
   603  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   604  		if ms.LoadMessageInfo() == nil {
   605  			ms.StoreMessageInfo(mi)
   606  		}
   607  		return ms
   608  	}
   609  	return mi.MessageOf(x)
   610  }
   611  
   612  // Deprecated: Use BatchCreateTestResultsRequest.ProtoReflect.Descriptor instead.
   613  func (*BatchCreateTestResultsRequest) Descriptor() ([]byte, []int) {
   614  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{8}
   615  }
   616  
   617  func (x *BatchCreateTestResultsRequest) GetInvocation() string {
   618  	if x != nil {
   619  		return x.Invocation
   620  	}
   621  	return ""
   622  }
   623  
   624  func (x *BatchCreateTestResultsRequest) GetRequests() []*CreateTestResultRequest {
   625  	if x != nil {
   626  		return x.Requests
   627  	}
   628  	return nil
   629  }
   630  
   631  func (x *BatchCreateTestResultsRequest) GetRequestId() string {
   632  	if x != nil {
   633  		return x.RequestId
   634  	}
   635  	return ""
   636  }
   637  
   638  // A response message for BatchCreateTestResults RPC.
   639  type BatchCreateTestResultsResponse struct {
   640  	state         protoimpl.MessageState
   641  	sizeCache     protoimpl.SizeCache
   642  	unknownFields protoimpl.UnknownFields
   643  
   644  	// Test results created.
   645  	TestResults []*TestResult `protobuf:"bytes,1,rep,name=test_results,json=testResults,proto3" json:"test_results,omitempty"`
   646  }
   647  
   648  func (x *BatchCreateTestResultsResponse) Reset() {
   649  	*x = BatchCreateTestResultsResponse{}
   650  	if protoimpl.UnsafeEnabled {
   651  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[9]
   652  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   653  		ms.StoreMessageInfo(mi)
   654  	}
   655  }
   656  
   657  func (x *BatchCreateTestResultsResponse) String() string {
   658  	return protoimpl.X.MessageStringOf(x)
   659  }
   660  
   661  func (*BatchCreateTestResultsResponse) ProtoMessage() {}
   662  
   663  func (x *BatchCreateTestResultsResponse) ProtoReflect() protoreflect.Message {
   664  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[9]
   665  	if protoimpl.UnsafeEnabled && x != nil {
   666  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   667  		if ms.LoadMessageInfo() == nil {
   668  			ms.StoreMessageInfo(mi)
   669  		}
   670  		return ms
   671  	}
   672  	return mi.MessageOf(x)
   673  }
   674  
   675  // Deprecated: Use BatchCreateTestResultsResponse.ProtoReflect.Descriptor instead.
   676  func (*BatchCreateTestResultsResponse) Descriptor() ([]byte, []int) {
   677  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{9}
   678  }
   679  
   680  func (x *BatchCreateTestResultsResponse) GetTestResults() []*TestResult {
   681  	if x != nil {
   682  		return x.TestResults
   683  	}
   684  	return nil
   685  }
   686  
   687  // A request message for CreateTestExoneration RPC.
   688  type CreateTestExonerationRequest struct {
   689  	state         protoimpl.MessageState
   690  	sizeCache     protoimpl.SizeCache
   691  	unknownFields protoimpl.UnknownFields
   692  
   693  	// Name of the parent invocation, see Invocation.name.
   694  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
   695  	// The TestExoneration to create.
   696  	TestExoneration *TestExoneration `protobuf:"bytes,2,opt,name=test_exoneration,json=testExoneration,proto3" json:"test_exoneration,omitempty"`
   697  	// A unique identifier for this request. Restricted to 36 ASCII characters.
   698  	// A random UUID is recommended.
   699  	// This request is only idempotent if a `request_id` is provided.
   700  	RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
   701  }
   702  
   703  func (x *CreateTestExonerationRequest) Reset() {
   704  	*x = CreateTestExonerationRequest{}
   705  	if protoimpl.UnsafeEnabled {
   706  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[10]
   707  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   708  		ms.StoreMessageInfo(mi)
   709  	}
   710  }
   711  
   712  func (x *CreateTestExonerationRequest) String() string {
   713  	return protoimpl.X.MessageStringOf(x)
   714  }
   715  
   716  func (*CreateTestExonerationRequest) ProtoMessage() {}
   717  
   718  func (x *CreateTestExonerationRequest) ProtoReflect() protoreflect.Message {
   719  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[10]
   720  	if protoimpl.UnsafeEnabled && x != nil {
   721  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   722  		if ms.LoadMessageInfo() == nil {
   723  			ms.StoreMessageInfo(mi)
   724  		}
   725  		return ms
   726  	}
   727  	return mi.MessageOf(x)
   728  }
   729  
   730  // Deprecated: Use CreateTestExonerationRequest.ProtoReflect.Descriptor instead.
   731  func (*CreateTestExonerationRequest) Descriptor() ([]byte, []int) {
   732  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{10}
   733  }
   734  
   735  func (x *CreateTestExonerationRequest) GetInvocation() string {
   736  	if x != nil {
   737  		return x.Invocation
   738  	}
   739  	return ""
   740  }
   741  
   742  func (x *CreateTestExonerationRequest) GetTestExoneration() *TestExoneration {
   743  	if x != nil {
   744  		return x.TestExoneration
   745  	}
   746  	return nil
   747  }
   748  
   749  func (x *CreateTestExonerationRequest) GetRequestId() string {
   750  	if x != nil {
   751  		return x.RequestId
   752  	}
   753  	return ""
   754  }
   755  
   756  // A request message for BatchCreateTestExonerations RPC.
   757  type BatchCreateTestExonerationsRequest struct {
   758  	state         protoimpl.MessageState
   759  	sizeCache     protoimpl.SizeCache
   760  	unknownFields protoimpl.UnknownFields
   761  
   762  	// Name of the parent invocation, see Invocation.name.
   763  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
   764  	// Requests to create TestExonerations.
   765  	// requests[i].invocation MUST be either empty or equal to invocation in this
   766  	// message.
   767  	// requests[i].request_id MUST be either empty or equal to request_id in
   768  	// this message.
   769  	//
   770  	// Up to 500 requests.
   771  	Requests []*CreateTestExonerationRequest `protobuf:"bytes,2,rep,name=requests,proto3" json:"requests,omitempty"`
   772  	// A unique identifier for this request. Restricted to 36 ASCII characters.
   773  	// A random UUID is recommended.
   774  	// This request is only idempotent if a `request_id` is provided, so it is
   775  	// strongly recommended to populate this field.
   776  	RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
   777  }
   778  
   779  func (x *BatchCreateTestExonerationsRequest) Reset() {
   780  	*x = BatchCreateTestExonerationsRequest{}
   781  	if protoimpl.UnsafeEnabled {
   782  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[11]
   783  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   784  		ms.StoreMessageInfo(mi)
   785  	}
   786  }
   787  
   788  func (x *BatchCreateTestExonerationsRequest) String() string {
   789  	return protoimpl.X.MessageStringOf(x)
   790  }
   791  
   792  func (*BatchCreateTestExonerationsRequest) ProtoMessage() {}
   793  
   794  func (x *BatchCreateTestExonerationsRequest) ProtoReflect() protoreflect.Message {
   795  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[11]
   796  	if protoimpl.UnsafeEnabled && x != nil {
   797  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   798  		if ms.LoadMessageInfo() == nil {
   799  			ms.StoreMessageInfo(mi)
   800  		}
   801  		return ms
   802  	}
   803  	return mi.MessageOf(x)
   804  }
   805  
   806  // Deprecated: Use BatchCreateTestExonerationsRequest.ProtoReflect.Descriptor instead.
   807  func (*BatchCreateTestExonerationsRequest) Descriptor() ([]byte, []int) {
   808  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{11}
   809  }
   810  
   811  func (x *BatchCreateTestExonerationsRequest) GetInvocation() string {
   812  	if x != nil {
   813  		return x.Invocation
   814  	}
   815  	return ""
   816  }
   817  
   818  func (x *BatchCreateTestExonerationsRequest) GetRequests() []*CreateTestExonerationRequest {
   819  	if x != nil {
   820  		return x.Requests
   821  	}
   822  	return nil
   823  }
   824  
   825  func (x *BatchCreateTestExonerationsRequest) GetRequestId() string {
   826  	if x != nil {
   827  		return x.RequestId
   828  	}
   829  	return ""
   830  }
   831  
   832  // A response message for BatchCreateTestExonerations RPC.
   833  type BatchCreateTestExonerationsResponse struct {
   834  	state         protoimpl.MessageState
   835  	sizeCache     protoimpl.SizeCache
   836  	unknownFields protoimpl.UnknownFields
   837  
   838  	// Test exonerations created.
   839  	TestExonerations []*TestExoneration `protobuf:"bytes,1,rep,name=test_exonerations,json=testExonerations,proto3" json:"test_exonerations,omitempty"`
   840  }
   841  
   842  func (x *BatchCreateTestExonerationsResponse) Reset() {
   843  	*x = BatchCreateTestExonerationsResponse{}
   844  	if protoimpl.UnsafeEnabled {
   845  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[12]
   846  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   847  		ms.StoreMessageInfo(mi)
   848  	}
   849  }
   850  
   851  func (x *BatchCreateTestExonerationsResponse) String() string {
   852  	return protoimpl.X.MessageStringOf(x)
   853  }
   854  
   855  func (*BatchCreateTestExonerationsResponse) ProtoMessage() {}
   856  
   857  func (x *BatchCreateTestExonerationsResponse) ProtoReflect() protoreflect.Message {
   858  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[12]
   859  	if protoimpl.UnsafeEnabled && x != nil {
   860  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   861  		if ms.LoadMessageInfo() == nil {
   862  			ms.StoreMessageInfo(mi)
   863  		}
   864  		return ms
   865  	}
   866  	return mi.MessageOf(x)
   867  }
   868  
   869  // Deprecated: Use BatchCreateTestExonerationsResponse.ProtoReflect.Descriptor instead.
   870  func (*BatchCreateTestExonerationsResponse) Descriptor() ([]byte, []int) {
   871  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{12}
   872  }
   873  
   874  func (x *BatchCreateTestExonerationsResponse) GetTestExonerations() []*TestExoneration {
   875  	if x != nil {
   876  		return x.TestExonerations
   877  	}
   878  	return nil
   879  }
   880  
   881  // A request message for CreateArtifactRequest.
   882  type CreateArtifactRequest struct {
   883  	state         protoimpl.MessageState
   884  	sizeCache     protoimpl.SizeCache
   885  	unknownFields protoimpl.UnknownFields
   886  
   887  	// Name of the parent resource where the artifact will be created.
   888  	//
   889  	// For invocation-level artifacts, it is the invocation name.
   890  	// For test-result-level artifacts, it is the TestResult name.
   891  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   892  	// Artifact to upload.
   893  	// The length of the artifact contents MUST be <= 512KiB.
   894  	// artifact.artifact_id MUST be set.
   895  	// artifact.name will be ignored.
   896  	Artifact *Artifact `protobuf:"bytes,2,opt,name=artifact,proto3" json:"artifact,omitempty"`
   897  }
   898  
   899  func (x *CreateArtifactRequest) Reset() {
   900  	*x = CreateArtifactRequest{}
   901  	if protoimpl.UnsafeEnabled {
   902  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[13]
   903  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   904  		ms.StoreMessageInfo(mi)
   905  	}
   906  }
   907  
   908  func (x *CreateArtifactRequest) String() string {
   909  	return protoimpl.X.MessageStringOf(x)
   910  }
   911  
   912  func (*CreateArtifactRequest) ProtoMessage() {}
   913  
   914  func (x *CreateArtifactRequest) ProtoReflect() protoreflect.Message {
   915  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[13]
   916  	if protoimpl.UnsafeEnabled && x != nil {
   917  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   918  		if ms.LoadMessageInfo() == nil {
   919  			ms.StoreMessageInfo(mi)
   920  		}
   921  		return ms
   922  	}
   923  	return mi.MessageOf(x)
   924  }
   925  
   926  // Deprecated: Use CreateArtifactRequest.ProtoReflect.Descriptor instead.
   927  func (*CreateArtifactRequest) Descriptor() ([]byte, []int) {
   928  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{13}
   929  }
   930  
   931  func (x *CreateArtifactRequest) GetParent() string {
   932  	if x != nil {
   933  		return x.Parent
   934  	}
   935  	return ""
   936  }
   937  
   938  func (x *CreateArtifactRequest) GetArtifact() *Artifact {
   939  	if x != nil {
   940  		return x.Artifact
   941  	}
   942  	return nil
   943  }
   944  
   945  // A request message for BatchCreateArtifactsRequest.
   946  type BatchCreateArtifactsRequest struct {
   947  	state         protoimpl.MessageState
   948  	sizeCache     protoimpl.SizeCache
   949  	unknownFields protoimpl.UnknownFields
   950  
   951  	// Requests to create Artifacts.
   952  	// The sum of the content lengths MUST be <= 10MiB.
   953  	// The parents of all the requests must be derived from the same invocation.
   954  	//
   955  	// Up to 500 requests.
   956  	Requests []*CreateArtifactRequest `protobuf:"bytes,2,rep,name=requests,proto3" json:"requests,omitempty"`
   957  }
   958  
   959  func (x *BatchCreateArtifactsRequest) Reset() {
   960  	*x = BatchCreateArtifactsRequest{}
   961  	if protoimpl.UnsafeEnabled {
   962  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[14]
   963  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   964  		ms.StoreMessageInfo(mi)
   965  	}
   966  }
   967  
   968  func (x *BatchCreateArtifactsRequest) String() string {
   969  	return protoimpl.X.MessageStringOf(x)
   970  }
   971  
   972  func (*BatchCreateArtifactsRequest) ProtoMessage() {}
   973  
   974  func (x *BatchCreateArtifactsRequest) ProtoReflect() protoreflect.Message {
   975  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[14]
   976  	if protoimpl.UnsafeEnabled && x != nil {
   977  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   978  		if ms.LoadMessageInfo() == nil {
   979  			ms.StoreMessageInfo(mi)
   980  		}
   981  		return ms
   982  	}
   983  	return mi.MessageOf(x)
   984  }
   985  
   986  // Deprecated: Use BatchCreateArtifactsRequest.ProtoReflect.Descriptor instead.
   987  func (*BatchCreateArtifactsRequest) Descriptor() ([]byte, []int) {
   988  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{14}
   989  }
   990  
   991  func (x *BatchCreateArtifactsRequest) GetRequests() []*CreateArtifactRequest {
   992  	if x != nil {
   993  		return x.Requests
   994  	}
   995  	return nil
   996  }
   997  
   998  type BatchCreateArtifactsResponse struct {
   999  	state         protoimpl.MessageState
  1000  	sizeCache     protoimpl.SizeCache
  1001  	unknownFields protoimpl.UnknownFields
  1002  
  1003  	// Artifacts created.
  1004  	Artifacts []*Artifact `protobuf:"bytes,1,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
  1005  }
  1006  
  1007  func (x *BatchCreateArtifactsResponse) Reset() {
  1008  	*x = BatchCreateArtifactsResponse{}
  1009  	if protoimpl.UnsafeEnabled {
  1010  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[15]
  1011  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1012  		ms.StoreMessageInfo(mi)
  1013  	}
  1014  }
  1015  
  1016  func (x *BatchCreateArtifactsResponse) String() string {
  1017  	return protoimpl.X.MessageStringOf(x)
  1018  }
  1019  
  1020  func (*BatchCreateArtifactsResponse) ProtoMessage() {}
  1021  
  1022  func (x *BatchCreateArtifactsResponse) ProtoReflect() protoreflect.Message {
  1023  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[15]
  1024  	if protoimpl.UnsafeEnabled && x != nil {
  1025  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1026  		if ms.LoadMessageInfo() == nil {
  1027  			ms.StoreMessageInfo(mi)
  1028  		}
  1029  		return ms
  1030  	}
  1031  	return mi.MessageOf(x)
  1032  }
  1033  
  1034  // Deprecated: Use BatchCreateArtifactsResponse.ProtoReflect.Descriptor instead.
  1035  func (*BatchCreateArtifactsResponse) Descriptor() ([]byte, []int) {
  1036  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP(), []int{15}
  1037  }
  1038  
  1039  func (x *BatchCreateArtifactsResponse) GetArtifacts() []*Artifact {
  1040  	if x != nil {
  1041  		return x.Artifacts
  1042  	}
  1043  	return nil
  1044  }
  1045  
  1046  var File_go_chromium_org_luci_resultdb_proto_v1_recorder_proto protoreflect.FileDescriptor
  1047  
  1048  var file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDesc = []byte{
  1049  	0x0a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  1050  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f,
  1051  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65,
  1052  	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  1053  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  1054  	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61,
  1055  	0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67,
  1056  	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74,
  1057  	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
  1058  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d,
  1059  	0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68,
  1060  	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
  1061  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76,
  1062  	0x31, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  1063  	0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  1064  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f,
  1065  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74,
  1066  	0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x38, 0x67, 0x6f, 0x2e, 0x63, 0x68,
  1067  	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
  1068  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76,
  1069  	0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72,
  1070  	0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e,
  1071  	0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  1072  	0x28, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
  1073  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x69, 0x6e, 0x76,
  1074  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x0a, 0x69, 0x6e, 0x76,
  1075  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
  1076  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31,
  1077  	0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x76,
  1078  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65,
  1079  	0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71,
  1080  	0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x85, 0x01, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68,
  1081  	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  1082  	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75,
  1083  	0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x75, 0x63,
  1084  	0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
  1085  	0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
  1086  	0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12,
  1087  	0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
  1088  	0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x85,
  1089  	0x01, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e,
  1090  	0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  1091  	0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  1092  	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  1093  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61,
  1094  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  1095  	0x73, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
  1096  	0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
  1097  	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74,
  1098  	0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
  1099  	0x73, 0x74, 0x12, 0x41, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  1100  	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  1101  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61,
  1102  	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63,
  1103  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
  1104  	0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
  1105  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
  1106  	0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61,
  1107  	0x73, 0x6b, 0x22, 0x34, 0x0a, 0x19, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x49, 0x6e,
  1108  	0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  1109  	0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
  1110  	0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64,
  1111  	0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x76, 0x6f, 0x63,
  1112  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a,
  1113  	0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63,
  1114  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
  1115  	0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x6f, 0x63,
  1116  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x5f, 0x69, 0x6e, 0x76,
  1117  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
  1118  	0x61, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d,
  1119  	0x0a, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74,
  1120  	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x6f,
  1121  	0x76, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x45, 0x0a,
  1122  	0x1e, 0x4d, 0x61, 0x72, 0x6b, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
  1123  	0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  1124  	0x23, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
  1125  	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61,
  1126  	0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa1, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
  1127  	0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  1128  	0x12, 0x23, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
  1129  	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63,
  1130  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65,
  1131  	0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63,
  1132  	0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65,
  1133  	0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x74,
  1134  	0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71,
  1135  	0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72,
  1136  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x1d, 0x42, 0x61, 0x74,
  1137  	0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
  1138  	0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69, 0x6e,
  1139  	0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
  1140  	0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
  1141  	0x45, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
  1142  	0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
  1143  	0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x52,
  1144  	0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65,
  1145  	0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
  1146  	0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75,
  1147  	0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72,
  1148  	0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52,
  1149  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x5f,
  1150  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
  1151  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31,
  1152  	0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x74, 0x65, 0x73,
  1153  	0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65,
  1154  	0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
  1155  	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69, 0x6e, 0x76,
  1156  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
  1157  	0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51,
  1158  	0x0a, 0x10, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
  1159  	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  1160  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74,
  1161  	0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02,
  1162  	0x52, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
  1163  	0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18,
  1164  	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64,
  1165  	0x22, 0xb4, 0x01, 0x0a, 0x22, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
  1166  	0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  1167  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63,
  1168  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
  1169  	0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x08,
  1170  	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
  1171  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
  1172  	0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e,
  1173  	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08,
  1174  	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75,
  1175  	0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65,
  1176  	0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x23, 0x42, 0x61, 0x74, 0x63, 0x68,
  1177  	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72,
  1178  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e,
  1179  	0x0a, 0x11, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
  1180  	0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  1181  	0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73,
  1182  	0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x65,
  1183  	0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x71,
  1184  	0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
  1185  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
  1186  	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61,
  1187  	0x72, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
  1188  	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  1189  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
  1190  	0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63,
  1191  	0x74, 0x22, 0x62, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
  1192  	0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  1193  	0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03,
  1194  	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  1195  	0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69,
  1196  	0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71,
  1197  	0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x58, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72,
  1198  	0x65, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73,
  1199  	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63,
  1200  	0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  1201  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69,
  1202  	0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x32,
  1203  	0xd0, 0x09, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x5d, 0x0a, 0x10,
  1204  	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  1205  	0x12, 0x29, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
  1206  	0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61,
  1207  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75,
  1208  	0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49,
  1209  	0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x7d, 0x0a, 0x16, 0x42,
  1210  	0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61,
  1211  	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
  1212  	0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72,
  1213  	0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
  1214  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  1215  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43,
  1216  	0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  1217  	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x70,
  1218  	0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29,
  1219  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
  1220  	0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69,
  1221  	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  1222  	0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76,
  1223  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x46, 0x69, 0x6e,
  1224  	0x61, 0x6c, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
  1225  	0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e,
  1226  	0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x63,
  1227  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c,
  1228  	0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e,
  1229  	0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x19,
  1230  	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x49, 0x6e,
  1231  	0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  1232  	0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
  1233  	0x61, 0x74, 0x65, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x76, 0x6f, 0x63,
  1234  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
  1235  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  1236  	0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x17, 0x4d, 0x61, 0x72, 0x6b, 0x49,
  1237  	0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74,
  1238  	0x65, 0x64, 0x12, 0x30, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  1239  	0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61,
  1240  	0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71,
  1241  	0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  1242  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5d,
  1243  	0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
  1244  	0x6c, 0x74, 0x12, 0x29, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  1245  	0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74,
  1246  	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
  1247  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31,
  1248  	0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x7d, 0x0a,
  1249  	0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74,
  1250  	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72,
  1251  	0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68,
  1252  	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
  1253  	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  1254  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63,
  1255  	0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c,
  1256  	0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15,
  1257  	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72,
  1258  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
  1259  	0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
  1260  	0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
  1261  	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
  1262  	0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f,
  1263  	0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x8c, 0x01, 0x0a, 0x1b, 0x42,
  1264  	0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78,
  1265  	0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x6c, 0x75, 0x63,
  1266  	0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61,
  1267  	0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f,
  1268  	0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  1269  	0x1a, 0x35, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
  1270  	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
  1271  	0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
  1272  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x14, 0x42, 0x61, 0x74,
  1273  	0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
  1274  	0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
  1275  	0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
  1276  	0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  1277  	0x1a, 0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
  1278  	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41,
  1279  	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
  1280  	0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
  1281  	0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c,
  1282  	0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x73,
  1283  	0x75, 0x6c, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  1284  }
  1285  
  1286  var (
  1287  	file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescOnce sync.Once
  1288  	file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescData = file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDesc
  1289  )
  1290  
  1291  func file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescGZIP() []byte {
  1292  	file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescOnce.Do(func() {
  1293  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescData)
  1294  	})
  1295  	return file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDescData
  1296  }
  1297  
  1298  var file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
  1299  var file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_goTypes = []interface{}{
  1300  	(*CreateInvocationRequest)(nil),             // 0: luci.resultdb.v1.CreateInvocationRequest
  1301  	(*BatchCreateInvocationsRequest)(nil),       // 1: luci.resultdb.v1.BatchCreateInvocationsRequest
  1302  	(*BatchCreateInvocationsResponse)(nil),      // 2: luci.resultdb.v1.BatchCreateInvocationsResponse
  1303  	(*UpdateInvocationRequest)(nil),             // 3: luci.resultdb.v1.UpdateInvocationRequest
  1304  	(*FinalizeInvocationRequest)(nil),           // 4: luci.resultdb.v1.FinalizeInvocationRequest
  1305  	(*UpdateIncludedInvocationsRequest)(nil),    // 5: luci.resultdb.v1.UpdateIncludedInvocationsRequest
  1306  	(*MarkInvocationSubmittedRequest)(nil),      // 6: luci.resultdb.v1.MarkInvocationSubmittedRequest
  1307  	(*CreateTestResultRequest)(nil),             // 7: luci.resultdb.v1.CreateTestResultRequest
  1308  	(*BatchCreateTestResultsRequest)(nil),       // 8: luci.resultdb.v1.BatchCreateTestResultsRequest
  1309  	(*BatchCreateTestResultsResponse)(nil),      // 9: luci.resultdb.v1.BatchCreateTestResultsResponse
  1310  	(*CreateTestExonerationRequest)(nil),        // 10: luci.resultdb.v1.CreateTestExonerationRequest
  1311  	(*BatchCreateTestExonerationsRequest)(nil),  // 11: luci.resultdb.v1.BatchCreateTestExonerationsRequest
  1312  	(*BatchCreateTestExonerationsResponse)(nil), // 12: luci.resultdb.v1.BatchCreateTestExonerationsResponse
  1313  	(*CreateArtifactRequest)(nil),               // 13: luci.resultdb.v1.CreateArtifactRequest
  1314  	(*BatchCreateArtifactsRequest)(nil),         // 14: luci.resultdb.v1.BatchCreateArtifactsRequest
  1315  	(*BatchCreateArtifactsResponse)(nil),        // 15: luci.resultdb.v1.BatchCreateArtifactsResponse
  1316  	(*Invocation)(nil),                          // 16: luci.resultdb.v1.Invocation
  1317  	(*fieldmaskpb.FieldMask)(nil),               // 17: google.protobuf.FieldMask
  1318  	(*TestResult)(nil),                          // 18: luci.resultdb.v1.TestResult
  1319  	(*TestExoneration)(nil),                     // 19: luci.resultdb.v1.TestExoneration
  1320  	(*Artifact)(nil),                            // 20: luci.resultdb.v1.Artifact
  1321  	(*emptypb.Empty)(nil),                       // 21: google.protobuf.Empty
  1322  }
  1323  var file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_depIdxs = []int32{
  1324  	16, // 0: luci.resultdb.v1.CreateInvocationRequest.invocation:type_name -> luci.resultdb.v1.Invocation
  1325  	0,  // 1: luci.resultdb.v1.BatchCreateInvocationsRequest.requests:type_name -> luci.resultdb.v1.CreateInvocationRequest
  1326  	16, // 2: luci.resultdb.v1.BatchCreateInvocationsResponse.invocations:type_name -> luci.resultdb.v1.Invocation
  1327  	16, // 3: luci.resultdb.v1.UpdateInvocationRequest.invocation:type_name -> luci.resultdb.v1.Invocation
  1328  	17, // 4: luci.resultdb.v1.UpdateInvocationRequest.update_mask:type_name -> google.protobuf.FieldMask
  1329  	18, // 5: luci.resultdb.v1.CreateTestResultRequest.test_result:type_name -> luci.resultdb.v1.TestResult
  1330  	7,  // 6: luci.resultdb.v1.BatchCreateTestResultsRequest.requests:type_name -> luci.resultdb.v1.CreateTestResultRequest
  1331  	18, // 7: luci.resultdb.v1.BatchCreateTestResultsResponse.test_results:type_name -> luci.resultdb.v1.TestResult
  1332  	19, // 8: luci.resultdb.v1.CreateTestExonerationRequest.test_exoneration:type_name -> luci.resultdb.v1.TestExoneration
  1333  	10, // 9: luci.resultdb.v1.BatchCreateTestExonerationsRequest.requests:type_name -> luci.resultdb.v1.CreateTestExonerationRequest
  1334  	19, // 10: luci.resultdb.v1.BatchCreateTestExonerationsResponse.test_exonerations:type_name -> luci.resultdb.v1.TestExoneration
  1335  	20, // 11: luci.resultdb.v1.CreateArtifactRequest.artifact:type_name -> luci.resultdb.v1.Artifact
  1336  	13, // 12: luci.resultdb.v1.BatchCreateArtifactsRequest.requests:type_name -> luci.resultdb.v1.CreateArtifactRequest
  1337  	20, // 13: luci.resultdb.v1.BatchCreateArtifactsResponse.artifacts:type_name -> luci.resultdb.v1.Artifact
  1338  	0,  // 14: luci.resultdb.v1.Recorder.CreateInvocation:input_type -> luci.resultdb.v1.CreateInvocationRequest
  1339  	1,  // 15: luci.resultdb.v1.Recorder.BatchCreateInvocations:input_type -> luci.resultdb.v1.BatchCreateInvocationsRequest
  1340  	3,  // 16: luci.resultdb.v1.Recorder.UpdateInvocation:input_type -> luci.resultdb.v1.UpdateInvocationRequest
  1341  	4,  // 17: luci.resultdb.v1.Recorder.FinalizeInvocation:input_type -> luci.resultdb.v1.FinalizeInvocationRequest
  1342  	5,  // 18: luci.resultdb.v1.Recorder.UpdateIncludedInvocations:input_type -> luci.resultdb.v1.UpdateIncludedInvocationsRequest
  1343  	6,  // 19: luci.resultdb.v1.Recorder.MarkInvocationSubmitted:input_type -> luci.resultdb.v1.MarkInvocationSubmittedRequest
  1344  	7,  // 20: luci.resultdb.v1.Recorder.CreateTestResult:input_type -> luci.resultdb.v1.CreateTestResultRequest
  1345  	8,  // 21: luci.resultdb.v1.Recorder.BatchCreateTestResults:input_type -> luci.resultdb.v1.BatchCreateTestResultsRequest
  1346  	10, // 22: luci.resultdb.v1.Recorder.CreateTestExoneration:input_type -> luci.resultdb.v1.CreateTestExonerationRequest
  1347  	11, // 23: luci.resultdb.v1.Recorder.BatchCreateTestExonerations:input_type -> luci.resultdb.v1.BatchCreateTestExonerationsRequest
  1348  	14, // 24: luci.resultdb.v1.Recorder.BatchCreateArtifacts:input_type -> luci.resultdb.v1.BatchCreateArtifactsRequest
  1349  	16, // 25: luci.resultdb.v1.Recorder.CreateInvocation:output_type -> luci.resultdb.v1.Invocation
  1350  	2,  // 26: luci.resultdb.v1.Recorder.BatchCreateInvocations:output_type -> luci.resultdb.v1.BatchCreateInvocationsResponse
  1351  	16, // 27: luci.resultdb.v1.Recorder.UpdateInvocation:output_type -> luci.resultdb.v1.Invocation
  1352  	16, // 28: luci.resultdb.v1.Recorder.FinalizeInvocation:output_type -> luci.resultdb.v1.Invocation
  1353  	21, // 29: luci.resultdb.v1.Recorder.UpdateIncludedInvocations:output_type -> google.protobuf.Empty
  1354  	21, // 30: luci.resultdb.v1.Recorder.MarkInvocationSubmitted:output_type -> google.protobuf.Empty
  1355  	18, // 31: luci.resultdb.v1.Recorder.CreateTestResult:output_type -> luci.resultdb.v1.TestResult
  1356  	9,  // 32: luci.resultdb.v1.Recorder.BatchCreateTestResults:output_type -> luci.resultdb.v1.BatchCreateTestResultsResponse
  1357  	19, // 33: luci.resultdb.v1.Recorder.CreateTestExoneration:output_type -> luci.resultdb.v1.TestExoneration
  1358  	12, // 34: luci.resultdb.v1.Recorder.BatchCreateTestExonerations:output_type -> luci.resultdb.v1.BatchCreateTestExonerationsResponse
  1359  	15, // 35: luci.resultdb.v1.Recorder.BatchCreateArtifacts:output_type -> luci.resultdb.v1.BatchCreateArtifactsResponse
  1360  	25, // [25:36] is the sub-list for method output_type
  1361  	14, // [14:25] is the sub-list for method input_type
  1362  	14, // [14:14] is the sub-list for extension type_name
  1363  	14, // [14:14] is the sub-list for extension extendee
  1364  	0,  // [0:14] is the sub-list for field type_name
  1365  }
  1366  
  1367  func init() { file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_init() }
  1368  func file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_init() {
  1369  	if File_go_chromium_org_luci_resultdb_proto_v1_recorder_proto != nil {
  1370  		return
  1371  	}
  1372  	file_go_chromium_org_luci_resultdb_proto_v1_artifact_proto_init()
  1373  	file_go_chromium_org_luci_resultdb_proto_v1_invocation_proto_init()
  1374  	file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_init()
  1375  	if !protoimpl.UnsafeEnabled {
  1376  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  1377  			switch v := v.(*CreateInvocationRequest); i {
  1378  			case 0:
  1379  				return &v.state
  1380  			case 1:
  1381  				return &v.sizeCache
  1382  			case 2:
  1383  				return &v.unknownFields
  1384  			default:
  1385  				return nil
  1386  			}
  1387  		}
  1388  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  1389  			switch v := v.(*BatchCreateInvocationsRequest); i {
  1390  			case 0:
  1391  				return &v.state
  1392  			case 1:
  1393  				return &v.sizeCache
  1394  			case 2:
  1395  				return &v.unknownFields
  1396  			default:
  1397  				return nil
  1398  			}
  1399  		}
  1400  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  1401  			switch v := v.(*BatchCreateInvocationsResponse); i {
  1402  			case 0:
  1403  				return &v.state
  1404  			case 1:
  1405  				return &v.sizeCache
  1406  			case 2:
  1407  				return &v.unknownFields
  1408  			default:
  1409  				return nil
  1410  			}
  1411  		}
  1412  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  1413  			switch v := v.(*UpdateInvocationRequest); i {
  1414  			case 0:
  1415  				return &v.state
  1416  			case 1:
  1417  				return &v.sizeCache
  1418  			case 2:
  1419  				return &v.unknownFields
  1420  			default:
  1421  				return nil
  1422  			}
  1423  		}
  1424  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  1425  			switch v := v.(*FinalizeInvocationRequest); i {
  1426  			case 0:
  1427  				return &v.state
  1428  			case 1:
  1429  				return &v.sizeCache
  1430  			case 2:
  1431  				return &v.unknownFields
  1432  			default:
  1433  				return nil
  1434  			}
  1435  		}
  1436  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  1437  			switch v := v.(*UpdateIncludedInvocationsRequest); i {
  1438  			case 0:
  1439  				return &v.state
  1440  			case 1:
  1441  				return &v.sizeCache
  1442  			case 2:
  1443  				return &v.unknownFields
  1444  			default:
  1445  				return nil
  1446  			}
  1447  		}
  1448  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  1449  			switch v := v.(*MarkInvocationSubmittedRequest); i {
  1450  			case 0:
  1451  				return &v.state
  1452  			case 1:
  1453  				return &v.sizeCache
  1454  			case 2:
  1455  				return &v.unknownFields
  1456  			default:
  1457  				return nil
  1458  			}
  1459  		}
  1460  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  1461  			switch v := v.(*CreateTestResultRequest); i {
  1462  			case 0:
  1463  				return &v.state
  1464  			case 1:
  1465  				return &v.sizeCache
  1466  			case 2:
  1467  				return &v.unknownFields
  1468  			default:
  1469  				return nil
  1470  			}
  1471  		}
  1472  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  1473  			switch v := v.(*BatchCreateTestResultsRequest); i {
  1474  			case 0:
  1475  				return &v.state
  1476  			case 1:
  1477  				return &v.sizeCache
  1478  			case 2:
  1479  				return &v.unknownFields
  1480  			default:
  1481  				return nil
  1482  			}
  1483  		}
  1484  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  1485  			switch v := v.(*BatchCreateTestResultsResponse); i {
  1486  			case 0:
  1487  				return &v.state
  1488  			case 1:
  1489  				return &v.sizeCache
  1490  			case 2:
  1491  				return &v.unknownFields
  1492  			default:
  1493  				return nil
  1494  			}
  1495  		}
  1496  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  1497  			switch v := v.(*CreateTestExonerationRequest); i {
  1498  			case 0:
  1499  				return &v.state
  1500  			case 1:
  1501  				return &v.sizeCache
  1502  			case 2:
  1503  				return &v.unknownFields
  1504  			default:
  1505  				return nil
  1506  			}
  1507  		}
  1508  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  1509  			switch v := v.(*BatchCreateTestExonerationsRequest); i {
  1510  			case 0:
  1511  				return &v.state
  1512  			case 1:
  1513  				return &v.sizeCache
  1514  			case 2:
  1515  				return &v.unknownFields
  1516  			default:
  1517  				return nil
  1518  			}
  1519  		}
  1520  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  1521  			switch v := v.(*BatchCreateTestExonerationsResponse); i {
  1522  			case 0:
  1523  				return &v.state
  1524  			case 1:
  1525  				return &v.sizeCache
  1526  			case 2:
  1527  				return &v.unknownFields
  1528  			default:
  1529  				return nil
  1530  			}
  1531  		}
  1532  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  1533  			switch v := v.(*CreateArtifactRequest); i {
  1534  			case 0:
  1535  				return &v.state
  1536  			case 1:
  1537  				return &v.sizeCache
  1538  			case 2:
  1539  				return &v.unknownFields
  1540  			default:
  1541  				return nil
  1542  			}
  1543  		}
  1544  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  1545  			switch v := v.(*BatchCreateArtifactsRequest); i {
  1546  			case 0:
  1547  				return &v.state
  1548  			case 1:
  1549  				return &v.sizeCache
  1550  			case 2:
  1551  				return &v.unknownFields
  1552  			default:
  1553  				return nil
  1554  			}
  1555  		}
  1556  		file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  1557  			switch v := v.(*BatchCreateArtifactsResponse); i {
  1558  			case 0:
  1559  				return &v.state
  1560  			case 1:
  1561  				return &v.sizeCache
  1562  			case 2:
  1563  				return &v.unknownFields
  1564  			default:
  1565  				return nil
  1566  			}
  1567  		}
  1568  	}
  1569  	type x struct{}
  1570  	out := protoimpl.TypeBuilder{
  1571  		File: protoimpl.DescBuilder{
  1572  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  1573  			RawDescriptor: file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDesc,
  1574  			NumEnums:      0,
  1575  			NumMessages:   16,
  1576  			NumExtensions: 0,
  1577  			NumServices:   1,
  1578  		},
  1579  		GoTypes:           file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_goTypes,
  1580  		DependencyIndexes: file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_depIdxs,
  1581  		MessageInfos:      file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_msgTypes,
  1582  	}.Build()
  1583  	File_go_chromium_org_luci_resultdb_proto_v1_recorder_proto = out.File
  1584  	file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_rawDesc = nil
  1585  	file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_goTypes = nil
  1586  	file_go_chromium_org_luci_resultdb_proto_v1_recorder_proto_depIdxs = nil
  1587  }
  1588  
  1589  // Reference imports to suppress errors if they are not otherwise used.
  1590  var _ context.Context
  1591  var _ grpc.ClientConnInterface
  1592  
  1593  // This is a compile-time assertion to ensure that this generated file
  1594  // is compatible with the grpc package it is being compiled against.
  1595  const _ = grpc.SupportPackageIsVersion6
  1596  
  1597  // RecorderClient is the client API for Recorder service.
  1598  //
  1599  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  1600  type RecorderClient interface {
  1601  	// Creates a new invocation.
  1602  	// The request specifies the invocation id and its contents.
  1603  	//
  1604  	// The response header metadata contains "update-token" required for future
  1605  	// updates, including finalization.
  1606  	//
  1607  	// If invocation with the given ID already exists, returns ALREADY_EXISTS
  1608  	// error code.
  1609  	CreateInvocation(ctx context.Context, in *CreateInvocationRequest, opts ...grpc.CallOption) (*Invocation, error)
  1610  	// Creates multiple invocations in a single rpc.
  1611  	//
  1612  	// The response header metadata contains a multi-valued "update-token"
  1613  	// required for future updates, including finalization. The tokens will be
  1614  	// given in the same order as BatchCreateInvocationRequest.requests.
  1615  	BatchCreateInvocations(ctx context.Context, in *BatchCreateInvocationsRequest, opts ...grpc.CallOption) (*BatchCreateInvocationsResponse, error)
  1616  	// Updates an existing non-finalized invocation.
  1617  	UpdateInvocation(ctx context.Context, in *UpdateInvocationRequest, opts ...grpc.CallOption) (*Invocation, error)
  1618  	// Transitions the given invocation to the state FINALIZED.
  1619  	FinalizeInvocation(ctx context.Context, in *FinalizeInvocationRequest, opts ...grpc.CallOption) (*Invocation, error)
  1620  	// Updates inclusions for a non-finalized invocation.
  1621  	UpdateIncludedInvocations(ctx context.Context, in *UpdateIncludedInvocationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  1622  	// Recursively marks all test variants associated with the invocation as
  1623  	// submitted, merging them into the invocation's associated baseline.
  1624  	MarkInvocationSubmitted(ctx context.Context, in *MarkInvocationSubmittedRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
  1625  	// Appends a test result to a non-finalized invocation.
  1626  	CreateTestResult(ctx context.Context, in *CreateTestResultRequest, opts ...grpc.CallOption) (*TestResult, error)
  1627  	// Atomically appends a batch of test results to a non-finalized invocation.
  1628  	BatchCreateTestResults(ctx context.Context, in *BatchCreateTestResultsRequest, opts ...grpc.CallOption) (*BatchCreateTestResultsResponse, error)
  1629  	// Appends a test exoneration to a non-finalized invocation.
  1630  	CreateTestExoneration(ctx context.Context, in *CreateTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error)
  1631  	// Atomically appends a batch of test exonerations to a non-finalized
  1632  	// invocation.
  1633  	BatchCreateTestExonerations(ctx context.Context, in *BatchCreateTestExonerationsRequest, opts ...grpc.CallOption) (*BatchCreateTestExonerationsResponse, error)
  1634  	// Create multiple artifacts.
  1635  	//
  1636  	// An artifact can be either invocation-level or test-result-level.
  1637  	// See Artifact.name for more info.
  1638  	BatchCreateArtifacts(ctx context.Context, in *BatchCreateArtifactsRequest, opts ...grpc.CallOption) (*BatchCreateArtifactsResponse, error)
  1639  }
  1640  type recorderPRPCClient struct {
  1641  	client *prpc.Client
  1642  }
  1643  
  1644  func NewRecorderPRPCClient(client *prpc.Client) RecorderClient {
  1645  	return &recorderPRPCClient{client}
  1646  }
  1647  
  1648  func (c *recorderPRPCClient) CreateInvocation(ctx context.Context, in *CreateInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
  1649  	out := new(Invocation)
  1650  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "CreateInvocation", in, out, opts...)
  1651  	if err != nil {
  1652  		return nil, err
  1653  	}
  1654  	return out, nil
  1655  }
  1656  
  1657  func (c *recorderPRPCClient) BatchCreateInvocations(ctx context.Context, in *BatchCreateInvocationsRequest, opts ...grpc.CallOption) (*BatchCreateInvocationsResponse, error) {
  1658  	out := new(BatchCreateInvocationsResponse)
  1659  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "BatchCreateInvocations", in, out, opts...)
  1660  	if err != nil {
  1661  		return nil, err
  1662  	}
  1663  	return out, nil
  1664  }
  1665  
  1666  func (c *recorderPRPCClient) UpdateInvocation(ctx context.Context, in *UpdateInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
  1667  	out := new(Invocation)
  1668  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "UpdateInvocation", in, out, opts...)
  1669  	if err != nil {
  1670  		return nil, err
  1671  	}
  1672  	return out, nil
  1673  }
  1674  
  1675  func (c *recorderPRPCClient) FinalizeInvocation(ctx context.Context, in *FinalizeInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
  1676  	out := new(Invocation)
  1677  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "FinalizeInvocation", in, out, opts...)
  1678  	if err != nil {
  1679  		return nil, err
  1680  	}
  1681  	return out, nil
  1682  }
  1683  
  1684  func (c *recorderPRPCClient) UpdateIncludedInvocations(ctx context.Context, in *UpdateIncludedInvocationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  1685  	out := new(emptypb.Empty)
  1686  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "UpdateIncludedInvocations", in, out, opts...)
  1687  	if err != nil {
  1688  		return nil, err
  1689  	}
  1690  	return out, nil
  1691  }
  1692  
  1693  func (c *recorderPRPCClient) MarkInvocationSubmitted(ctx context.Context, in *MarkInvocationSubmittedRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  1694  	out := new(emptypb.Empty)
  1695  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "MarkInvocationSubmitted", in, out, opts...)
  1696  	if err != nil {
  1697  		return nil, err
  1698  	}
  1699  	return out, nil
  1700  }
  1701  
  1702  func (c *recorderPRPCClient) CreateTestResult(ctx context.Context, in *CreateTestResultRequest, opts ...grpc.CallOption) (*TestResult, error) {
  1703  	out := new(TestResult)
  1704  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "CreateTestResult", in, out, opts...)
  1705  	if err != nil {
  1706  		return nil, err
  1707  	}
  1708  	return out, nil
  1709  }
  1710  
  1711  func (c *recorderPRPCClient) BatchCreateTestResults(ctx context.Context, in *BatchCreateTestResultsRequest, opts ...grpc.CallOption) (*BatchCreateTestResultsResponse, error) {
  1712  	out := new(BatchCreateTestResultsResponse)
  1713  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "BatchCreateTestResults", in, out, opts...)
  1714  	if err != nil {
  1715  		return nil, err
  1716  	}
  1717  	return out, nil
  1718  }
  1719  
  1720  func (c *recorderPRPCClient) CreateTestExoneration(ctx context.Context, in *CreateTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error) {
  1721  	out := new(TestExoneration)
  1722  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "CreateTestExoneration", in, out, opts...)
  1723  	if err != nil {
  1724  		return nil, err
  1725  	}
  1726  	return out, nil
  1727  }
  1728  
  1729  func (c *recorderPRPCClient) BatchCreateTestExonerations(ctx context.Context, in *BatchCreateTestExonerationsRequest, opts ...grpc.CallOption) (*BatchCreateTestExonerationsResponse, error) {
  1730  	out := new(BatchCreateTestExonerationsResponse)
  1731  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "BatchCreateTestExonerations", in, out, opts...)
  1732  	if err != nil {
  1733  		return nil, err
  1734  	}
  1735  	return out, nil
  1736  }
  1737  
  1738  func (c *recorderPRPCClient) BatchCreateArtifacts(ctx context.Context, in *BatchCreateArtifactsRequest, opts ...grpc.CallOption) (*BatchCreateArtifactsResponse, error) {
  1739  	out := new(BatchCreateArtifactsResponse)
  1740  	err := c.client.Call(ctx, "luci.resultdb.v1.Recorder", "BatchCreateArtifacts", in, out, opts...)
  1741  	if err != nil {
  1742  		return nil, err
  1743  	}
  1744  	return out, nil
  1745  }
  1746  
  1747  type recorderClient struct {
  1748  	cc grpc.ClientConnInterface
  1749  }
  1750  
  1751  func NewRecorderClient(cc grpc.ClientConnInterface) RecorderClient {
  1752  	return &recorderClient{cc}
  1753  }
  1754  
  1755  func (c *recorderClient) CreateInvocation(ctx context.Context, in *CreateInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
  1756  	out := new(Invocation)
  1757  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/CreateInvocation", in, out, opts...)
  1758  	if err != nil {
  1759  		return nil, err
  1760  	}
  1761  	return out, nil
  1762  }
  1763  
  1764  func (c *recorderClient) BatchCreateInvocations(ctx context.Context, in *BatchCreateInvocationsRequest, opts ...grpc.CallOption) (*BatchCreateInvocationsResponse, error) {
  1765  	out := new(BatchCreateInvocationsResponse)
  1766  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/BatchCreateInvocations", in, out, opts...)
  1767  	if err != nil {
  1768  		return nil, err
  1769  	}
  1770  	return out, nil
  1771  }
  1772  
  1773  func (c *recorderClient) UpdateInvocation(ctx context.Context, in *UpdateInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
  1774  	out := new(Invocation)
  1775  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/UpdateInvocation", in, out, opts...)
  1776  	if err != nil {
  1777  		return nil, err
  1778  	}
  1779  	return out, nil
  1780  }
  1781  
  1782  func (c *recorderClient) FinalizeInvocation(ctx context.Context, in *FinalizeInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
  1783  	out := new(Invocation)
  1784  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/FinalizeInvocation", in, out, opts...)
  1785  	if err != nil {
  1786  		return nil, err
  1787  	}
  1788  	return out, nil
  1789  }
  1790  
  1791  func (c *recorderClient) UpdateIncludedInvocations(ctx context.Context, in *UpdateIncludedInvocationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  1792  	out := new(emptypb.Empty)
  1793  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/UpdateIncludedInvocations", in, out, opts...)
  1794  	if err != nil {
  1795  		return nil, err
  1796  	}
  1797  	return out, nil
  1798  }
  1799  
  1800  func (c *recorderClient) MarkInvocationSubmitted(ctx context.Context, in *MarkInvocationSubmittedRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
  1801  	out := new(emptypb.Empty)
  1802  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/MarkInvocationSubmitted", in, out, opts...)
  1803  	if err != nil {
  1804  		return nil, err
  1805  	}
  1806  	return out, nil
  1807  }
  1808  
  1809  func (c *recorderClient) CreateTestResult(ctx context.Context, in *CreateTestResultRequest, opts ...grpc.CallOption) (*TestResult, error) {
  1810  	out := new(TestResult)
  1811  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/CreateTestResult", in, out, opts...)
  1812  	if err != nil {
  1813  		return nil, err
  1814  	}
  1815  	return out, nil
  1816  }
  1817  
  1818  func (c *recorderClient) BatchCreateTestResults(ctx context.Context, in *BatchCreateTestResultsRequest, opts ...grpc.CallOption) (*BatchCreateTestResultsResponse, error) {
  1819  	out := new(BatchCreateTestResultsResponse)
  1820  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/BatchCreateTestResults", in, out, opts...)
  1821  	if err != nil {
  1822  		return nil, err
  1823  	}
  1824  	return out, nil
  1825  }
  1826  
  1827  func (c *recorderClient) CreateTestExoneration(ctx context.Context, in *CreateTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error) {
  1828  	out := new(TestExoneration)
  1829  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/CreateTestExoneration", in, out, opts...)
  1830  	if err != nil {
  1831  		return nil, err
  1832  	}
  1833  	return out, nil
  1834  }
  1835  
  1836  func (c *recorderClient) BatchCreateTestExonerations(ctx context.Context, in *BatchCreateTestExonerationsRequest, opts ...grpc.CallOption) (*BatchCreateTestExonerationsResponse, error) {
  1837  	out := new(BatchCreateTestExonerationsResponse)
  1838  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/BatchCreateTestExonerations", in, out, opts...)
  1839  	if err != nil {
  1840  		return nil, err
  1841  	}
  1842  	return out, nil
  1843  }
  1844  
  1845  func (c *recorderClient) BatchCreateArtifacts(ctx context.Context, in *BatchCreateArtifactsRequest, opts ...grpc.CallOption) (*BatchCreateArtifactsResponse, error) {
  1846  	out := new(BatchCreateArtifactsResponse)
  1847  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.Recorder/BatchCreateArtifacts", in, out, opts...)
  1848  	if err != nil {
  1849  		return nil, err
  1850  	}
  1851  	return out, nil
  1852  }
  1853  
  1854  // RecorderServer is the server API for Recorder service.
  1855  type RecorderServer interface {
  1856  	// Creates a new invocation.
  1857  	// The request specifies the invocation id and its contents.
  1858  	//
  1859  	// The response header metadata contains "update-token" required for future
  1860  	// updates, including finalization.
  1861  	//
  1862  	// If invocation with the given ID already exists, returns ALREADY_EXISTS
  1863  	// error code.
  1864  	CreateInvocation(context.Context, *CreateInvocationRequest) (*Invocation, error)
  1865  	// Creates multiple invocations in a single rpc.
  1866  	//
  1867  	// The response header metadata contains a multi-valued "update-token"
  1868  	// required for future updates, including finalization. The tokens will be
  1869  	// given in the same order as BatchCreateInvocationRequest.requests.
  1870  	BatchCreateInvocations(context.Context, *BatchCreateInvocationsRequest) (*BatchCreateInvocationsResponse, error)
  1871  	// Updates an existing non-finalized invocation.
  1872  	UpdateInvocation(context.Context, *UpdateInvocationRequest) (*Invocation, error)
  1873  	// Transitions the given invocation to the state FINALIZED.
  1874  	FinalizeInvocation(context.Context, *FinalizeInvocationRequest) (*Invocation, error)
  1875  	// Updates inclusions for a non-finalized invocation.
  1876  	UpdateIncludedInvocations(context.Context, *UpdateIncludedInvocationsRequest) (*emptypb.Empty, error)
  1877  	// Recursively marks all test variants associated with the invocation as
  1878  	// submitted, merging them into the invocation's associated baseline.
  1879  	MarkInvocationSubmitted(context.Context, *MarkInvocationSubmittedRequest) (*emptypb.Empty, error)
  1880  	// Appends a test result to a non-finalized invocation.
  1881  	CreateTestResult(context.Context, *CreateTestResultRequest) (*TestResult, error)
  1882  	// Atomically appends a batch of test results to a non-finalized invocation.
  1883  	BatchCreateTestResults(context.Context, *BatchCreateTestResultsRequest) (*BatchCreateTestResultsResponse, error)
  1884  	// Appends a test exoneration to a non-finalized invocation.
  1885  	CreateTestExoneration(context.Context, *CreateTestExonerationRequest) (*TestExoneration, error)
  1886  	// Atomically appends a batch of test exonerations to a non-finalized
  1887  	// invocation.
  1888  	BatchCreateTestExonerations(context.Context, *BatchCreateTestExonerationsRequest) (*BatchCreateTestExonerationsResponse, error)
  1889  	// Create multiple artifacts.
  1890  	//
  1891  	// An artifact can be either invocation-level or test-result-level.
  1892  	// See Artifact.name for more info.
  1893  	BatchCreateArtifacts(context.Context, *BatchCreateArtifactsRequest) (*BatchCreateArtifactsResponse, error)
  1894  }
  1895  
  1896  // UnimplementedRecorderServer can be embedded to have forward compatible implementations.
  1897  type UnimplementedRecorderServer struct {
  1898  }
  1899  
  1900  func (*UnimplementedRecorderServer) CreateInvocation(context.Context, *CreateInvocationRequest) (*Invocation, error) {
  1901  	return nil, status.Errorf(codes.Unimplemented, "method CreateInvocation not implemented")
  1902  }
  1903  func (*UnimplementedRecorderServer) BatchCreateInvocations(context.Context, *BatchCreateInvocationsRequest) (*BatchCreateInvocationsResponse, error) {
  1904  	return nil, status.Errorf(codes.Unimplemented, "method BatchCreateInvocations not implemented")
  1905  }
  1906  func (*UnimplementedRecorderServer) UpdateInvocation(context.Context, *UpdateInvocationRequest) (*Invocation, error) {
  1907  	return nil, status.Errorf(codes.Unimplemented, "method UpdateInvocation not implemented")
  1908  }
  1909  func (*UnimplementedRecorderServer) FinalizeInvocation(context.Context, *FinalizeInvocationRequest) (*Invocation, error) {
  1910  	return nil, status.Errorf(codes.Unimplemented, "method FinalizeInvocation not implemented")
  1911  }
  1912  func (*UnimplementedRecorderServer) UpdateIncludedInvocations(context.Context, *UpdateIncludedInvocationsRequest) (*emptypb.Empty, error) {
  1913  	return nil, status.Errorf(codes.Unimplemented, "method UpdateIncludedInvocations not implemented")
  1914  }
  1915  func (*UnimplementedRecorderServer) MarkInvocationSubmitted(context.Context, *MarkInvocationSubmittedRequest) (*emptypb.Empty, error) {
  1916  	return nil, status.Errorf(codes.Unimplemented, "method MarkInvocationSubmitted not implemented")
  1917  }
  1918  func (*UnimplementedRecorderServer) CreateTestResult(context.Context, *CreateTestResultRequest) (*TestResult, error) {
  1919  	return nil, status.Errorf(codes.Unimplemented, "method CreateTestResult not implemented")
  1920  }
  1921  func (*UnimplementedRecorderServer) BatchCreateTestResults(context.Context, *BatchCreateTestResultsRequest) (*BatchCreateTestResultsResponse, error) {
  1922  	return nil, status.Errorf(codes.Unimplemented, "method BatchCreateTestResults not implemented")
  1923  }
  1924  func (*UnimplementedRecorderServer) CreateTestExoneration(context.Context, *CreateTestExonerationRequest) (*TestExoneration, error) {
  1925  	return nil, status.Errorf(codes.Unimplemented, "method CreateTestExoneration not implemented")
  1926  }
  1927  func (*UnimplementedRecorderServer) BatchCreateTestExonerations(context.Context, *BatchCreateTestExonerationsRequest) (*BatchCreateTestExonerationsResponse, error) {
  1928  	return nil, status.Errorf(codes.Unimplemented, "method BatchCreateTestExonerations not implemented")
  1929  }
  1930  func (*UnimplementedRecorderServer) BatchCreateArtifacts(context.Context, *BatchCreateArtifactsRequest) (*BatchCreateArtifactsResponse, error) {
  1931  	return nil, status.Errorf(codes.Unimplemented, "method BatchCreateArtifacts not implemented")
  1932  }
  1933  
  1934  func RegisterRecorderServer(s prpc.Registrar, srv RecorderServer) {
  1935  	s.RegisterService(&_Recorder_serviceDesc, srv)
  1936  }
  1937  
  1938  func _Recorder_CreateInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1939  	in := new(CreateInvocationRequest)
  1940  	if err := dec(in); err != nil {
  1941  		return nil, err
  1942  	}
  1943  	if interceptor == nil {
  1944  		return srv.(RecorderServer).CreateInvocation(ctx, in)
  1945  	}
  1946  	info := &grpc.UnaryServerInfo{
  1947  		Server:     srv,
  1948  		FullMethod: "/luci.resultdb.v1.Recorder/CreateInvocation",
  1949  	}
  1950  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1951  		return srv.(RecorderServer).CreateInvocation(ctx, req.(*CreateInvocationRequest))
  1952  	}
  1953  	return interceptor(ctx, in, info, handler)
  1954  }
  1955  
  1956  func _Recorder_BatchCreateInvocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1957  	in := new(BatchCreateInvocationsRequest)
  1958  	if err := dec(in); err != nil {
  1959  		return nil, err
  1960  	}
  1961  	if interceptor == nil {
  1962  		return srv.(RecorderServer).BatchCreateInvocations(ctx, in)
  1963  	}
  1964  	info := &grpc.UnaryServerInfo{
  1965  		Server:     srv,
  1966  		FullMethod: "/luci.resultdb.v1.Recorder/BatchCreateInvocations",
  1967  	}
  1968  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1969  		return srv.(RecorderServer).BatchCreateInvocations(ctx, req.(*BatchCreateInvocationsRequest))
  1970  	}
  1971  	return interceptor(ctx, in, info, handler)
  1972  }
  1973  
  1974  func _Recorder_UpdateInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1975  	in := new(UpdateInvocationRequest)
  1976  	if err := dec(in); err != nil {
  1977  		return nil, err
  1978  	}
  1979  	if interceptor == nil {
  1980  		return srv.(RecorderServer).UpdateInvocation(ctx, in)
  1981  	}
  1982  	info := &grpc.UnaryServerInfo{
  1983  		Server:     srv,
  1984  		FullMethod: "/luci.resultdb.v1.Recorder/UpdateInvocation",
  1985  	}
  1986  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1987  		return srv.(RecorderServer).UpdateInvocation(ctx, req.(*UpdateInvocationRequest))
  1988  	}
  1989  	return interceptor(ctx, in, info, handler)
  1990  }
  1991  
  1992  func _Recorder_FinalizeInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1993  	in := new(FinalizeInvocationRequest)
  1994  	if err := dec(in); err != nil {
  1995  		return nil, err
  1996  	}
  1997  	if interceptor == nil {
  1998  		return srv.(RecorderServer).FinalizeInvocation(ctx, in)
  1999  	}
  2000  	info := &grpc.UnaryServerInfo{
  2001  		Server:     srv,
  2002  		FullMethod: "/luci.resultdb.v1.Recorder/FinalizeInvocation",
  2003  	}
  2004  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2005  		return srv.(RecorderServer).FinalizeInvocation(ctx, req.(*FinalizeInvocationRequest))
  2006  	}
  2007  	return interceptor(ctx, in, info, handler)
  2008  }
  2009  
  2010  func _Recorder_UpdateIncludedInvocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  2011  	in := new(UpdateIncludedInvocationsRequest)
  2012  	if err := dec(in); err != nil {
  2013  		return nil, err
  2014  	}
  2015  	if interceptor == nil {
  2016  		return srv.(RecorderServer).UpdateIncludedInvocations(ctx, in)
  2017  	}
  2018  	info := &grpc.UnaryServerInfo{
  2019  		Server:     srv,
  2020  		FullMethod: "/luci.resultdb.v1.Recorder/UpdateIncludedInvocations",
  2021  	}
  2022  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2023  		return srv.(RecorderServer).UpdateIncludedInvocations(ctx, req.(*UpdateIncludedInvocationsRequest))
  2024  	}
  2025  	return interceptor(ctx, in, info, handler)
  2026  }
  2027  
  2028  func _Recorder_MarkInvocationSubmitted_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  2029  	in := new(MarkInvocationSubmittedRequest)
  2030  	if err := dec(in); err != nil {
  2031  		return nil, err
  2032  	}
  2033  	if interceptor == nil {
  2034  		return srv.(RecorderServer).MarkInvocationSubmitted(ctx, in)
  2035  	}
  2036  	info := &grpc.UnaryServerInfo{
  2037  		Server:     srv,
  2038  		FullMethod: "/luci.resultdb.v1.Recorder/MarkInvocationSubmitted",
  2039  	}
  2040  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2041  		return srv.(RecorderServer).MarkInvocationSubmitted(ctx, req.(*MarkInvocationSubmittedRequest))
  2042  	}
  2043  	return interceptor(ctx, in, info, handler)
  2044  }
  2045  
  2046  func _Recorder_CreateTestResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  2047  	in := new(CreateTestResultRequest)
  2048  	if err := dec(in); err != nil {
  2049  		return nil, err
  2050  	}
  2051  	if interceptor == nil {
  2052  		return srv.(RecorderServer).CreateTestResult(ctx, in)
  2053  	}
  2054  	info := &grpc.UnaryServerInfo{
  2055  		Server:     srv,
  2056  		FullMethod: "/luci.resultdb.v1.Recorder/CreateTestResult",
  2057  	}
  2058  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2059  		return srv.(RecorderServer).CreateTestResult(ctx, req.(*CreateTestResultRequest))
  2060  	}
  2061  	return interceptor(ctx, in, info, handler)
  2062  }
  2063  
  2064  func _Recorder_BatchCreateTestResults_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  2065  	in := new(BatchCreateTestResultsRequest)
  2066  	if err := dec(in); err != nil {
  2067  		return nil, err
  2068  	}
  2069  	if interceptor == nil {
  2070  		return srv.(RecorderServer).BatchCreateTestResults(ctx, in)
  2071  	}
  2072  	info := &grpc.UnaryServerInfo{
  2073  		Server:     srv,
  2074  		FullMethod: "/luci.resultdb.v1.Recorder/BatchCreateTestResults",
  2075  	}
  2076  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2077  		return srv.(RecorderServer).BatchCreateTestResults(ctx, req.(*BatchCreateTestResultsRequest))
  2078  	}
  2079  	return interceptor(ctx, in, info, handler)
  2080  }
  2081  
  2082  func _Recorder_CreateTestExoneration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  2083  	in := new(CreateTestExonerationRequest)
  2084  	if err := dec(in); err != nil {
  2085  		return nil, err
  2086  	}
  2087  	if interceptor == nil {
  2088  		return srv.(RecorderServer).CreateTestExoneration(ctx, in)
  2089  	}
  2090  	info := &grpc.UnaryServerInfo{
  2091  		Server:     srv,
  2092  		FullMethod: "/luci.resultdb.v1.Recorder/CreateTestExoneration",
  2093  	}
  2094  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2095  		return srv.(RecorderServer).CreateTestExoneration(ctx, req.(*CreateTestExonerationRequest))
  2096  	}
  2097  	return interceptor(ctx, in, info, handler)
  2098  }
  2099  
  2100  func _Recorder_BatchCreateTestExonerations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  2101  	in := new(BatchCreateTestExonerationsRequest)
  2102  	if err := dec(in); err != nil {
  2103  		return nil, err
  2104  	}
  2105  	if interceptor == nil {
  2106  		return srv.(RecorderServer).BatchCreateTestExonerations(ctx, in)
  2107  	}
  2108  	info := &grpc.UnaryServerInfo{
  2109  		Server:     srv,
  2110  		FullMethod: "/luci.resultdb.v1.Recorder/BatchCreateTestExonerations",
  2111  	}
  2112  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2113  		return srv.(RecorderServer).BatchCreateTestExonerations(ctx, req.(*BatchCreateTestExonerationsRequest))
  2114  	}
  2115  	return interceptor(ctx, in, info, handler)
  2116  }
  2117  
  2118  func _Recorder_BatchCreateArtifacts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  2119  	in := new(BatchCreateArtifactsRequest)
  2120  	if err := dec(in); err != nil {
  2121  		return nil, err
  2122  	}
  2123  	if interceptor == nil {
  2124  		return srv.(RecorderServer).BatchCreateArtifacts(ctx, in)
  2125  	}
  2126  	info := &grpc.UnaryServerInfo{
  2127  		Server:     srv,
  2128  		FullMethod: "/luci.resultdb.v1.Recorder/BatchCreateArtifacts",
  2129  	}
  2130  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2131  		return srv.(RecorderServer).BatchCreateArtifacts(ctx, req.(*BatchCreateArtifactsRequest))
  2132  	}
  2133  	return interceptor(ctx, in, info, handler)
  2134  }
  2135  
  2136  var _Recorder_serviceDesc = grpc.ServiceDesc{
  2137  	ServiceName: "luci.resultdb.v1.Recorder",
  2138  	HandlerType: (*RecorderServer)(nil),
  2139  	Methods: []grpc.MethodDesc{
  2140  		{
  2141  			MethodName: "CreateInvocation",
  2142  			Handler:    _Recorder_CreateInvocation_Handler,
  2143  		},
  2144  		{
  2145  			MethodName: "BatchCreateInvocations",
  2146  			Handler:    _Recorder_BatchCreateInvocations_Handler,
  2147  		},
  2148  		{
  2149  			MethodName: "UpdateInvocation",
  2150  			Handler:    _Recorder_UpdateInvocation_Handler,
  2151  		},
  2152  		{
  2153  			MethodName: "FinalizeInvocation",
  2154  			Handler:    _Recorder_FinalizeInvocation_Handler,
  2155  		},
  2156  		{
  2157  			MethodName: "UpdateIncludedInvocations",
  2158  			Handler:    _Recorder_UpdateIncludedInvocations_Handler,
  2159  		},
  2160  		{
  2161  			MethodName: "MarkInvocationSubmitted",
  2162  			Handler:    _Recorder_MarkInvocationSubmitted_Handler,
  2163  		},
  2164  		{
  2165  			MethodName: "CreateTestResult",
  2166  			Handler:    _Recorder_CreateTestResult_Handler,
  2167  		},
  2168  		{
  2169  			MethodName: "BatchCreateTestResults",
  2170  			Handler:    _Recorder_BatchCreateTestResults_Handler,
  2171  		},
  2172  		{
  2173  			MethodName: "CreateTestExoneration",
  2174  			Handler:    _Recorder_CreateTestExoneration_Handler,
  2175  		},
  2176  		{
  2177  			MethodName: "BatchCreateTestExonerations",
  2178  			Handler:    _Recorder_BatchCreateTestExonerations_Handler,
  2179  		},
  2180  		{
  2181  			MethodName: "BatchCreateArtifacts",
  2182  			Handler:    _Recorder_BatchCreateArtifacts_Handler,
  2183  		},
  2184  	},
  2185  	Streams:  []grpc.StreamDesc{},
  2186  	Metadata: "go.chromium.org/luci/resultdb/proto/v1/recorder.proto",
  2187  }