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

     1  // Copyright 2023 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.32.0
    18  // 	protoc        v3.21.7
    19  // source: go.chromium.org/luci/analysis/proto/v1/test_variant_branches.proto
    20  
    21  package analysispb
    22  
    23  import prpc "go.chromium.org/luci/grpc/prpc"
    24  
    25  import (
    26  	context "context"
    27  	git "go.chromium.org/luci/common/proto/git"
    28  	_ "google.golang.org/genproto/googleapis/api/annotations"
    29  	grpc "google.golang.org/grpc"
    30  	codes "google.golang.org/grpc/codes"
    31  	status "google.golang.org/grpc/status"
    32  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    33  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    34  	anypb "google.golang.org/protobuf/types/known/anypb"
    35  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    36  	reflect "reflect"
    37  	sync "sync"
    38  )
    39  
    40  const (
    41  	// Verify that this generated code is sufficiently up-to-date.
    42  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    43  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    44  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    45  )
    46  
    47  // A request message for `TestVariantBranches.Get` RPC.
    48  type GetRawTestVariantBranchRequest struct {
    49  	state         protoimpl.MessageState
    50  	sizeCache     protoimpl.SizeCache
    51  	unknownFields protoimpl.UnknownFields
    52  
    53  	// The name of the test variant branch.
    54  	// It MUST be of the form projects/{PROJECT}/tests/{URL_ESCAPED_TEST_ID}/variants/{VARIANT_HASH}/refs/{REF_HASH}
    55  	// where:
    56  	// PROJECT is the LUCI Project of the test variant branch analysis.
    57  	// URL_ESCAPED_TEST_ID is the test ID, escaped with
    58  	// https://golang.org/pkg/net/url/#PathEscape. See also https://aip.dev/122.
    59  	// VARIANT_HASH is the variant hash of the test variant analysis (16 lower-case-character hex string).
    60  	// REF_HASH is the identity of the branch of the analysis. It is a 16 lower-case-character hex string.
    61  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
    62  }
    63  
    64  func (x *GetRawTestVariantBranchRequest) Reset() {
    65  	*x = GetRawTestVariantBranchRequest{}
    66  	if protoimpl.UnsafeEnabled {
    67  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[0]
    68  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    69  		ms.StoreMessageInfo(mi)
    70  	}
    71  }
    72  
    73  func (x *GetRawTestVariantBranchRequest) String() string {
    74  	return protoimpl.X.MessageStringOf(x)
    75  }
    76  
    77  func (*GetRawTestVariantBranchRequest) ProtoMessage() {}
    78  
    79  func (x *GetRawTestVariantBranchRequest) ProtoReflect() protoreflect.Message {
    80  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[0]
    81  	if protoimpl.UnsafeEnabled && x != nil {
    82  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    83  		if ms.LoadMessageInfo() == nil {
    84  			ms.StoreMessageInfo(mi)
    85  		}
    86  		return ms
    87  	}
    88  	return mi.MessageOf(x)
    89  }
    90  
    91  // Deprecated: Use GetRawTestVariantBranchRequest.ProtoReflect.Descriptor instead.
    92  func (*GetRawTestVariantBranchRequest) Descriptor() ([]byte, []int) {
    93  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{0}
    94  }
    95  
    96  func (x *GetRawTestVariantBranchRequest) GetName() string {
    97  	if x != nil {
    98  		return x.Name
    99  	}
   100  	return ""
   101  }
   102  
   103  // Represents changepoint analysis raw data for a particular (project, test, variant, ref) in spanner.
   104  type TestVariantBranchRaw struct {
   105  	state         protoimpl.MessageState
   106  	sizeCache     protoimpl.SizeCache
   107  	unknownFields protoimpl.UnknownFields
   108  
   109  	// The name of the test variant branch.
   110  	// Of the form projects/{PROJECT}/tests/{URL_ESCAPED_TEST_ID}/variants/{VARIANT_HASH}/refs/{REF_HASH}
   111  	// where:
   112  	// PROJECT is the LUCI Project of the test variant branch analysis.
   113  	// URL_ESCAPED_TEST_ID is the test ID, escaped with
   114  	// https://golang.org/pkg/net/url/#PathEscape. See also https://aip.dev/122.
   115  	// VARIANT_HASH is the variant hash of the test variant analysis (16 lower-case-character hex string).
   116  	// REF_HASH is the identity of the branch of the analysis. It is a 16 lower-case-character hex string.
   117  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   118  	// The LUCI Project. E.g. "chromium".
   119  	Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"`
   120  	// The identity of the test.
   121  	TestId string `protobuf:"bytes,3,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
   122  	// Hash of the variant, as 16 lowercase hexadecimal characters.
   123  	// E.g. "96c68dc946ab4068".
   124  	VariantHash string `protobuf:"bytes,4,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
   125  	// Hash of the source branch, as 16 lowercase hexadecimal characters.
   126  	RefHash string `protobuf:"bytes,5,opt,name=ref_hash,json=refHash,proto3" json:"ref_hash,omitempty"`
   127  	// Describes one specific way of running the test, e.g. a specific bucket,
   128  	// builder and a test suite.
   129  	Variant *Variant `protobuf:"bytes,6,opt,name=variant,proto3" json:"variant,omitempty"`
   130  	// The branch in source control.
   131  	Ref *SourceRef `protobuf:"bytes,7,opt,name=ref,proto3" json:"ref,omitempty"`
   132  	// The finalized segments in the output buffer.
   133  	//
   134  	// Do not depend on this field. The internal protocol buffer stored in
   135  	// Spanner is returned here for debug purposes only. We use
   136  	// google.protobuf.Any to avoid revealing its type and having clients
   137  	// possibly depend on it.
   138  	//
   139  	// If any tool needs to read this data, a wire proto (that is different
   140  	// from the storage proto) needs to be defined and this field replaced
   141  	// by a field of that wire type.
   142  	FinalizedSegments *anypb.Any `protobuf:"bytes,8,opt,name=finalized_segments,json=finalizedSegments,proto3" json:"finalized_segments,omitempty"`
   143  	// The finalizing segment in the output buffer.
   144  	//
   145  	// Do not depend on this field. The internal protocol buffer stored in
   146  	// Spanner is returned here for debug purposes only. We use
   147  	// google.protobuf.Any to avoid revealing its type and having clients
   148  	// possibly depend on it.
   149  	//
   150  	// If any tool needs to read this data, a wire proto (that is different
   151  	// from the storage proto) needs to be defined and this field replaced
   152  	// by a field of that wire type.
   153  	FinalizingSegment *anypb.Any `protobuf:"bytes,9,opt,name=finalizing_segment,json=finalizingSegment,proto3" json:"finalizing_segment,omitempty"`
   154  	// Statistics about verdicts in the output buffer.
   155  	//
   156  	// Do not depend on this field. The internal protocol buffer stored in
   157  	// Spanner is returned here for debug purposes only. We use
   158  	// google.protobuf.Any to avoid revealing its type and having clients
   159  	// possibly depend on it.
   160  	//
   161  	// If any tool needs to read this data, a wire proto (that is different
   162  	// from the storage proto) needs to be defined and this field replaced
   163  	// by a field of that wire type.
   164  	Statistics *anypb.Any `protobuf:"bytes,12,opt,name=statistics,proto3" json:"statistics,omitempty"`
   165  	// The hot input buffer.
   166  	HotBuffer *InputBuffer `protobuf:"bytes,10,opt,name=hot_buffer,json=hotBuffer,proto3" json:"hot_buffer,omitempty"`
   167  	// The cold input buffer.
   168  	ColdBuffer *InputBuffer `protobuf:"bytes,11,opt,name=cold_buffer,json=coldBuffer,proto3" json:"cold_buffer,omitempty"`
   169  }
   170  
   171  func (x *TestVariantBranchRaw) Reset() {
   172  	*x = TestVariantBranchRaw{}
   173  	if protoimpl.UnsafeEnabled {
   174  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[1]
   175  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   176  		ms.StoreMessageInfo(mi)
   177  	}
   178  }
   179  
   180  func (x *TestVariantBranchRaw) String() string {
   181  	return protoimpl.X.MessageStringOf(x)
   182  }
   183  
   184  func (*TestVariantBranchRaw) ProtoMessage() {}
   185  
   186  func (x *TestVariantBranchRaw) ProtoReflect() protoreflect.Message {
   187  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[1]
   188  	if protoimpl.UnsafeEnabled && x != nil {
   189  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   190  		if ms.LoadMessageInfo() == nil {
   191  			ms.StoreMessageInfo(mi)
   192  		}
   193  		return ms
   194  	}
   195  	return mi.MessageOf(x)
   196  }
   197  
   198  // Deprecated: Use TestVariantBranchRaw.ProtoReflect.Descriptor instead.
   199  func (*TestVariantBranchRaw) Descriptor() ([]byte, []int) {
   200  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{1}
   201  }
   202  
   203  func (x *TestVariantBranchRaw) GetName() string {
   204  	if x != nil {
   205  		return x.Name
   206  	}
   207  	return ""
   208  }
   209  
   210  func (x *TestVariantBranchRaw) GetProject() string {
   211  	if x != nil {
   212  		return x.Project
   213  	}
   214  	return ""
   215  }
   216  
   217  func (x *TestVariantBranchRaw) GetTestId() string {
   218  	if x != nil {
   219  		return x.TestId
   220  	}
   221  	return ""
   222  }
   223  
   224  func (x *TestVariantBranchRaw) GetVariantHash() string {
   225  	if x != nil {
   226  		return x.VariantHash
   227  	}
   228  	return ""
   229  }
   230  
   231  func (x *TestVariantBranchRaw) GetRefHash() string {
   232  	if x != nil {
   233  		return x.RefHash
   234  	}
   235  	return ""
   236  }
   237  
   238  func (x *TestVariantBranchRaw) GetVariant() *Variant {
   239  	if x != nil {
   240  		return x.Variant
   241  	}
   242  	return nil
   243  }
   244  
   245  func (x *TestVariantBranchRaw) GetRef() *SourceRef {
   246  	if x != nil {
   247  		return x.Ref
   248  	}
   249  	return nil
   250  }
   251  
   252  func (x *TestVariantBranchRaw) GetFinalizedSegments() *anypb.Any {
   253  	if x != nil {
   254  		return x.FinalizedSegments
   255  	}
   256  	return nil
   257  }
   258  
   259  func (x *TestVariantBranchRaw) GetFinalizingSegment() *anypb.Any {
   260  	if x != nil {
   261  		return x.FinalizingSegment
   262  	}
   263  	return nil
   264  }
   265  
   266  func (x *TestVariantBranchRaw) GetStatistics() *anypb.Any {
   267  	if x != nil {
   268  		return x.Statistics
   269  	}
   270  	return nil
   271  }
   272  
   273  func (x *TestVariantBranchRaw) GetHotBuffer() *InputBuffer {
   274  	if x != nil {
   275  		return x.HotBuffer
   276  	}
   277  	return nil
   278  }
   279  
   280  func (x *TestVariantBranchRaw) GetColdBuffer() *InputBuffer {
   281  	if x != nil {
   282  		return x.ColdBuffer
   283  	}
   284  	return nil
   285  }
   286  
   287  // InputBuffer contains the verdict history of the test variant branch.
   288  // It is used for both the hot buffer and the cold buffer.
   289  type InputBuffer struct {
   290  	state         protoimpl.MessageState
   291  	sizeCache     protoimpl.SizeCache
   292  	unknownFields protoimpl.UnknownFields
   293  
   294  	// The number of test verdicts in the input buffer.
   295  	Length int64 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"`
   296  	// Verdicts, sorted by commit position (oldest first), and
   297  	// then result time (oldest first).
   298  	Verdicts []*PositionVerdict `protobuf:"bytes,2,rep,name=verdicts,proto3" json:"verdicts,omitempty"`
   299  }
   300  
   301  func (x *InputBuffer) Reset() {
   302  	*x = InputBuffer{}
   303  	if protoimpl.UnsafeEnabled {
   304  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[2]
   305  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   306  		ms.StoreMessageInfo(mi)
   307  	}
   308  }
   309  
   310  func (x *InputBuffer) String() string {
   311  	return protoimpl.X.MessageStringOf(x)
   312  }
   313  
   314  func (*InputBuffer) ProtoMessage() {}
   315  
   316  func (x *InputBuffer) ProtoReflect() protoreflect.Message {
   317  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[2]
   318  	if protoimpl.UnsafeEnabled && x != nil {
   319  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   320  		if ms.LoadMessageInfo() == nil {
   321  			ms.StoreMessageInfo(mi)
   322  		}
   323  		return ms
   324  	}
   325  	return mi.MessageOf(x)
   326  }
   327  
   328  // Deprecated: Use InputBuffer.ProtoReflect.Descriptor instead.
   329  func (*InputBuffer) Descriptor() ([]byte, []int) {
   330  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{2}
   331  }
   332  
   333  func (x *InputBuffer) GetLength() int64 {
   334  	if x != nil {
   335  		return x.Length
   336  	}
   337  	return 0
   338  }
   339  
   340  func (x *InputBuffer) GetVerdicts() []*PositionVerdict {
   341  	if x != nil {
   342  		return x.Verdicts
   343  	}
   344  	return nil
   345  }
   346  
   347  // PositionVerdict represents a test verdict at a commit position.
   348  type PositionVerdict struct {
   349  	state         protoimpl.MessageState
   350  	sizeCache     protoimpl.SizeCache
   351  	unknownFields protoimpl.UnknownFields
   352  
   353  	// The commit position for the verdict.
   354  	CommitPosition int64 `protobuf:"varint,1,opt,name=commitPosition,proto3" json:"commitPosition,omitempty"`
   355  	// The time that this verdict is produced, truncated to the nearest hour.
   356  	Hour *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=hour,proto3" json:"hour,omitempty"`
   357  	// Whether the verdict is exonerated or not.
   358  	IsExonerated bool                   `protobuf:"varint,3,opt,name=is_exonerated,json=isExonerated,proto3" json:"is_exonerated,omitempty"`
   359  	Runs         []*PositionVerdict_Run `protobuf:"bytes,4,rep,name=runs,proto3" json:"runs,omitempty"`
   360  }
   361  
   362  func (x *PositionVerdict) Reset() {
   363  	*x = PositionVerdict{}
   364  	if protoimpl.UnsafeEnabled {
   365  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[3]
   366  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   367  		ms.StoreMessageInfo(mi)
   368  	}
   369  }
   370  
   371  func (x *PositionVerdict) String() string {
   372  	return protoimpl.X.MessageStringOf(x)
   373  }
   374  
   375  func (*PositionVerdict) ProtoMessage() {}
   376  
   377  func (x *PositionVerdict) ProtoReflect() protoreflect.Message {
   378  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[3]
   379  	if protoimpl.UnsafeEnabled && x != nil {
   380  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   381  		if ms.LoadMessageInfo() == nil {
   382  			ms.StoreMessageInfo(mi)
   383  		}
   384  		return ms
   385  	}
   386  	return mi.MessageOf(x)
   387  }
   388  
   389  // Deprecated: Use PositionVerdict.ProtoReflect.Descriptor instead.
   390  func (*PositionVerdict) Descriptor() ([]byte, []int) {
   391  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{3}
   392  }
   393  
   394  func (x *PositionVerdict) GetCommitPosition() int64 {
   395  	if x != nil {
   396  		return x.CommitPosition
   397  	}
   398  	return 0
   399  }
   400  
   401  func (x *PositionVerdict) GetHour() *timestamppb.Timestamp {
   402  	if x != nil {
   403  		return x.Hour
   404  	}
   405  	return nil
   406  }
   407  
   408  func (x *PositionVerdict) GetIsExonerated() bool {
   409  	if x != nil {
   410  		return x.IsExonerated
   411  	}
   412  	return false
   413  }
   414  
   415  func (x *PositionVerdict) GetRuns() []*PositionVerdict_Run {
   416  	if x != nil {
   417  		return x.Runs
   418  	}
   419  	return nil
   420  }
   421  
   422  // A request message for `TestVariantBranches.BatchGet` RPC.
   423  type BatchGetTestVariantBranchRequest struct {
   424  	state         protoimpl.MessageState
   425  	sizeCache     protoimpl.SizeCache
   426  	unknownFields protoimpl.UnknownFields
   427  
   428  	// The name of the test variant branch.
   429  	// It MUST be of the form projects/{PROJECT}/tests/{URL_ESCAPED_TEST_ID}/variants/{VARIANT_HASH}/refs/{REF_HASH}
   430  	// where:
   431  	// PROJECT is the LUCI Project of the test variant branch analysis.
   432  	// URL_ESCAPED_TEST_ID is the test ID, escaped with
   433  	// https://golang.org/pkg/net/url/#PathEscape. See also https://aip.dev/122.
   434  	// VARIANT_HASH is the variant hash of the test variant analysis (16 lower-case-character hex string).
   435  	// REF_HASH is the identity of the branch of the analysis. It is a 16 lower-case-character hex string.
   436  	// Maximum of 100 can be retrieved, otherwise this RPC will return error.
   437  	Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
   438  }
   439  
   440  func (x *BatchGetTestVariantBranchRequest) Reset() {
   441  	*x = BatchGetTestVariantBranchRequest{}
   442  	if protoimpl.UnsafeEnabled {
   443  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[4]
   444  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   445  		ms.StoreMessageInfo(mi)
   446  	}
   447  }
   448  
   449  func (x *BatchGetTestVariantBranchRequest) String() string {
   450  	return protoimpl.X.MessageStringOf(x)
   451  }
   452  
   453  func (*BatchGetTestVariantBranchRequest) ProtoMessage() {}
   454  
   455  func (x *BatchGetTestVariantBranchRequest) ProtoReflect() protoreflect.Message {
   456  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[4]
   457  	if protoimpl.UnsafeEnabled && x != nil {
   458  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   459  		if ms.LoadMessageInfo() == nil {
   460  			ms.StoreMessageInfo(mi)
   461  		}
   462  		return ms
   463  	}
   464  	return mi.MessageOf(x)
   465  }
   466  
   467  // Deprecated: Use BatchGetTestVariantBranchRequest.ProtoReflect.Descriptor instead.
   468  func (*BatchGetTestVariantBranchRequest) Descriptor() ([]byte, []int) {
   469  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{4}
   470  }
   471  
   472  func (x *BatchGetTestVariantBranchRequest) GetNames() []string {
   473  	if x != nil {
   474  		return x.Names
   475  	}
   476  	return nil
   477  }
   478  
   479  type BatchGetTestVariantBranchResponse struct {
   480  	state         protoimpl.MessageState
   481  	sizeCache     protoimpl.SizeCache
   482  	unknownFields protoimpl.UnknownFields
   483  
   484  	// The return list will have the same length and order as request names list.
   485  	// If a record is not found, the corresponding element will be set to nil.
   486  	TestVariantBranches []*TestVariantBranch `protobuf:"bytes,1,rep,name=test_variant_branches,json=testVariantBranches,proto3" json:"test_variant_branches,omitempty"`
   487  }
   488  
   489  func (x *BatchGetTestVariantBranchResponse) Reset() {
   490  	*x = BatchGetTestVariantBranchResponse{}
   491  	if protoimpl.UnsafeEnabled {
   492  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[5]
   493  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   494  		ms.StoreMessageInfo(mi)
   495  	}
   496  }
   497  
   498  func (x *BatchGetTestVariantBranchResponse) String() string {
   499  	return protoimpl.X.MessageStringOf(x)
   500  }
   501  
   502  func (*BatchGetTestVariantBranchResponse) ProtoMessage() {}
   503  
   504  func (x *BatchGetTestVariantBranchResponse) ProtoReflect() protoreflect.Message {
   505  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[5]
   506  	if protoimpl.UnsafeEnabled && x != nil {
   507  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   508  		if ms.LoadMessageInfo() == nil {
   509  			ms.StoreMessageInfo(mi)
   510  		}
   511  		return ms
   512  	}
   513  	return mi.MessageOf(x)
   514  }
   515  
   516  // Deprecated: Use BatchGetTestVariantBranchResponse.ProtoReflect.Descriptor instead.
   517  func (*BatchGetTestVariantBranchResponse) Descriptor() ([]byte, []int) {
   518  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{5}
   519  }
   520  
   521  func (x *BatchGetTestVariantBranchResponse) GetTestVariantBranches() []*TestVariantBranch {
   522  	if x != nil {
   523  		return x.TestVariantBranches
   524  	}
   525  	return nil
   526  }
   527  
   528  // Represents changepoint analysis for a particular (project, test, variant, ref).
   529  type TestVariantBranch struct {
   530  	state         protoimpl.MessageState
   531  	sizeCache     protoimpl.SizeCache
   532  	unknownFields protoimpl.UnknownFields
   533  
   534  	// The name of the test variant branch.
   535  	// Of the form projects/{PROJECT}/tests/{URL_ESCAPED_TEST_ID}/variants/{VARIANT_HASH}/refs/{REF_HASH}
   536  	// where:
   537  	// PROJECT is the LUCI Project of the test variant branch analysis.
   538  	// URL_ESCAPED_TEST_ID is the test ID, escaped with
   539  	// https://golang.org/pkg/net/url/#PathEscape. See also https://aip.dev/122.
   540  	// VARIANT_HASH is the variant hash of the test variant analysis (16 lower-case-character hex string).
   541  	// REF_HASH is the identity of the branch of the analysis. It is a 16 lower-case-character hex string.
   542  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   543  	// The LUCI Project. E.g. "chromium".
   544  	Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"`
   545  	// The identity of the test.
   546  	TestId string `protobuf:"bytes,3,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
   547  	// Hash of the variant, as 16 lowercase hexadecimal characters.
   548  	// E.g. "96c68dc946ab4068".
   549  	VariantHash string `protobuf:"bytes,4,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
   550  	// Hash of the source branch, as 16 lowercase hexadecimal characters.
   551  	RefHash string `protobuf:"bytes,5,opt,name=ref_hash,json=refHash,proto3" json:"ref_hash,omitempty"`
   552  	// key:value pairs to specify the way of running a particular test.
   553  	// e.g. a specific bucket, builder and a test suite.
   554  	Variant *Variant `protobuf:"bytes,6,opt,name=variant,proto3" json:"variant,omitempty"`
   555  	// The branch in source control.
   556  	Ref *SourceRef `protobuf:"bytes,7,opt,name=ref,proto3" json:"ref,omitempty"`
   557  	// The test history represented as a set of [start commit position,
   558  	// end commit position] segments, where segments have statistically
   559  	// different failure and/or flake rates. The segments are ordered so that
   560  	// the most recent segment appears first.
   561  	// If a client is only interested in the current failure/flake rate, they
   562  	// can just query the first segment.
   563  	Segments []*Segment `protobuf:"bytes,8,rep,name=segments,proto3" json:"segments,omitempty"`
   564  }
   565  
   566  func (x *TestVariantBranch) Reset() {
   567  	*x = TestVariantBranch{}
   568  	if protoimpl.UnsafeEnabled {
   569  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[6]
   570  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   571  		ms.StoreMessageInfo(mi)
   572  	}
   573  }
   574  
   575  func (x *TestVariantBranch) String() string {
   576  	return protoimpl.X.MessageStringOf(x)
   577  }
   578  
   579  func (*TestVariantBranch) ProtoMessage() {}
   580  
   581  func (x *TestVariantBranch) ProtoReflect() protoreflect.Message {
   582  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[6]
   583  	if protoimpl.UnsafeEnabled && x != nil {
   584  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   585  		if ms.LoadMessageInfo() == nil {
   586  			ms.StoreMessageInfo(mi)
   587  		}
   588  		return ms
   589  	}
   590  	return mi.MessageOf(x)
   591  }
   592  
   593  // Deprecated: Use TestVariantBranch.ProtoReflect.Descriptor instead.
   594  func (*TestVariantBranch) Descriptor() ([]byte, []int) {
   595  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{6}
   596  }
   597  
   598  func (x *TestVariantBranch) GetName() string {
   599  	if x != nil {
   600  		return x.Name
   601  	}
   602  	return ""
   603  }
   604  
   605  func (x *TestVariantBranch) GetProject() string {
   606  	if x != nil {
   607  		return x.Project
   608  	}
   609  	return ""
   610  }
   611  
   612  func (x *TestVariantBranch) GetTestId() string {
   613  	if x != nil {
   614  		return x.TestId
   615  	}
   616  	return ""
   617  }
   618  
   619  func (x *TestVariantBranch) GetVariantHash() string {
   620  	if x != nil {
   621  		return x.VariantHash
   622  	}
   623  	return ""
   624  }
   625  
   626  func (x *TestVariantBranch) GetRefHash() string {
   627  	if x != nil {
   628  		return x.RefHash
   629  	}
   630  	return ""
   631  }
   632  
   633  func (x *TestVariantBranch) GetVariant() *Variant {
   634  	if x != nil {
   635  		return x.Variant
   636  	}
   637  	return nil
   638  }
   639  
   640  func (x *TestVariantBranch) GetRef() *SourceRef {
   641  	if x != nil {
   642  		return x.Ref
   643  	}
   644  	return nil
   645  }
   646  
   647  func (x *TestVariantBranch) GetSegments() []*Segment {
   648  	if x != nil {
   649  		return x.Segments
   650  	}
   651  	return nil
   652  }
   653  
   654  // Represents a period in history where the test had a consistent failure and
   655  // flake rate. Segments are separated by changepoints. Each segment captures
   656  // information about the changepoint which started it.
   657  // Same structure with bigquery proto here, but make a separate copy to allow it to evolve over time.
   658  // https://source.chromium.org/chromium/infra/infra/+/main:go/src/go.chromium.org/luci/analysis/proto/bq/test_variant_branch_row.proto;l=80
   659  type Segment struct {
   660  	state         protoimpl.MessageState
   661  	sizeCache     protoimpl.SizeCache
   662  	unknownFields protoimpl.UnknownFields
   663  
   664  	// If set, means the segment commenced with a changepoint.
   665  	// If unset, means the segment began with the beginning of recorded
   666  	// history for the segment. (All recorded history for a test variant branch
   667  	// is deleted after 90 days of no results, so this means there were
   668  	// no results for at least 90 days before the segment.)
   669  	HasStartChangepoint bool `protobuf:"varint,1,opt,name=has_start_changepoint,json=hasStartChangepoint,proto3" json:"has_start_changepoint,omitempty"`
   670  	// The nominal commit position at which the segment starts (inclusive).
   671  	// Guaranteed to be strictly greater than the end_position of the
   672  	// chronologically previous segment (if any).
   673  	// If this segment has a starting changepoint, this is the nominal position
   674  	// of the changepoint (when the new test behaviour started).
   675  	// If this segment does not have a starting changepoint, this is the
   676  	// simply the first commit position in the known history of the test.
   677  	StartPosition int64 `protobuf:"varint,2,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"`
   678  	// The lower bound of the starting changepoint position in a 99% two-tailed
   679  	// confidence interval. Inclusive.
   680  	// Only set if has_start_changepoint is set.
   681  	StartPositionLowerBound_99Th int64 `protobuf:"varint,3,opt,name=start_position_lower_bound_99th,json=startPositionLowerBound99th,proto3" json:"start_position_lower_bound_99th,omitempty"`
   682  	// The upper bound of the starting changepoint position in a 99% two-tailed
   683  	// confidence interval. Inclusive.
   684  	// Only set if has_start_changepoint is set.
   685  	// When has_start_changepoint is set, the following invariant holds:
   686  	// previous_segment.start_position <= start_position_lower_bound_99th <= start_position <= start_position_upper_bound_99th
   687  	// where previous_segment refers to the chronologically previous segment.
   688  	StartPositionUpperBound_99Th int64 `protobuf:"varint,4,opt,name=start_position_upper_bound_99th,json=startPositionUpperBound99th,proto3" json:"start_position_upper_bound_99th,omitempty"`
   689  	// The earliest hour a test verdict at the indicated start_position
   690  	// was recorded. Gives an approximate upper bound on the timestamp the
   691  	// changepoint occurred, for systems which need to filter by date.
   692  	StartHour *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=start_hour,json=startHour,proto3" json:"start_hour,omitempty"`
   693  	// The nominal commit position at which the segment ends (inclusive).
   694  	// This is either the last recorded commit position in the test history
   695  	// (for this test variant branch), or the position of the last verdict
   696  	// seen before the next detected changepoint.
   697  	EndPosition int64 `protobuf:"varint,6,opt,name=end_position,json=endPosition,proto3" json:"end_position,omitempty"`
   698  	// The earliest hour a test verdict at the indicated end_position
   699  	// was recorded. Gives an approximate lower bound on the  timestamp
   700  	// the changepoint occurred, for systems which need to filter by date.
   701  	EndHour *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=end_hour,json=endHour,proto3" json:"end_hour,omitempty"`
   702  	// Total number of test results/runs/verdicts in the segment.
   703  	Counts *Segment_Counts `protobuf:"bytes,8,opt,name=counts,proto3" json:"counts,omitempty"`
   704  }
   705  
   706  func (x *Segment) Reset() {
   707  	*x = Segment{}
   708  	if protoimpl.UnsafeEnabled {
   709  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[7]
   710  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   711  		ms.StoreMessageInfo(mi)
   712  	}
   713  }
   714  
   715  func (x *Segment) String() string {
   716  	return protoimpl.X.MessageStringOf(x)
   717  }
   718  
   719  func (*Segment) ProtoMessage() {}
   720  
   721  func (x *Segment) ProtoReflect() protoreflect.Message {
   722  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[7]
   723  	if protoimpl.UnsafeEnabled && x != nil {
   724  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   725  		if ms.LoadMessageInfo() == nil {
   726  			ms.StoreMessageInfo(mi)
   727  		}
   728  		return ms
   729  	}
   730  	return mi.MessageOf(x)
   731  }
   732  
   733  // Deprecated: Use Segment.ProtoReflect.Descriptor instead.
   734  func (*Segment) Descriptor() ([]byte, []int) {
   735  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{7}
   736  }
   737  
   738  func (x *Segment) GetHasStartChangepoint() bool {
   739  	if x != nil {
   740  		return x.HasStartChangepoint
   741  	}
   742  	return false
   743  }
   744  
   745  func (x *Segment) GetStartPosition() int64 {
   746  	if x != nil {
   747  		return x.StartPosition
   748  	}
   749  	return 0
   750  }
   751  
   752  func (x *Segment) GetStartPositionLowerBound_99Th() int64 {
   753  	if x != nil {
   754  		return x.StartPositionLowerBound_99Th
   755  	}
   756  	return 0
   757  }
   758  
   759  func (x *Segment) GetStartPositionUpperBound_99Th() int64 {
   760  	if x != nil {
   761  		return x.StartPositionUpperBound_99Th
   762  	}
   763  	return 0
   764  }
   765  
   766  func (x *Segment) GetStartHour() *timestamppb.Timestamp {
   767  	if x != nil {
   768  		return x.StartHour
   769  	}
   770  	return nil
   771  }
   772  
   773  func (x *Segment) GetEndPosition() int64 {
   774  	if x != nil {
   775  		return x.EndPosition
   776  	}
   777  	return 0
   778  }
   779  
   780  func (x *Segment) GetEndHour() *timestamppb.Timestamp {
   781  	if x != nil {
   782  		return x.EndHour
   783  	}
   784  	return nil
   785  }
   786  
   787  func (x *Segment) GetCounts() *Segment_Counts {
   788  	if x != nil {
   789  		return x.Counts
   790  	}
   791  	return nil
   792  }
   793  
   794  type QuerySourcePositionsRequest struct {
   795  	state         protoimpl.MessageState
   796  	sizeCache     protoimpl.SizeCache
   797  	unknownFields protoimpl.UnknownFields
   798  
   799  	// The LUCI project.
   800  	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
   801  	// The identifier of a test.
   802  	TestId string `protobuf:"bytes,2,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
   803  	// The hash of the variant.
   804  	VariantHash string `protobuf:"bytes,3,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
   805  	// Hash of the source branch, as 16 lowercase hexadecimal characters.
   806  	RefHash string `protobuf:"bytes,4,opt,name=ref_hash,json=refHash,proto3" json:"ref_hash,omitempty"`
   807  	// The source position where to start listing from, in descending order (newest commit to older commits).
   808  	// This start source position will be the largest source position in the response.
   809  	StartSourcePosition int64 `protobuf:"varint,5,opt,name=start_source_position,json=startSourcePosition,proto3" json:"start_source_position,omitempty"`
   810  	// The maximum number of commits to return.
   811  	//
   812  	// The service may return fewer than this value.
   813  	// If unspecified, at most 100 commits will be returned.
   814  	// The maximum value is 1,000; values above 1,000 will be coerced to 1,000.
   815  	PageSize int32 `protobuf:"varint,6,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   816  	// A page token, received from a previous `QuerySourcePositions` call.
   817  	// Provide this to retrieve the subsequent page.
   818  	//
   819  	// When paginating, all other parameters provided to `QuerySourcePositions` MUST
   820  	// match the call that provided the page token.
   821  	PageToken string `protobuf:"bytes,7,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   822  }
   823  
   824  func (x *QuerySourcePositionsRequest) Reset() {
   825  	*x = QuerySourcePositionsRequest{}
   826  	if protoimpl.UnsafeEnabled {
   827  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[8]
   828  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   829  		ms.StoreMessageInfo(mi)
   830  	}
   831  }
   832  
   833  func (x *QuerySourcePositionsRequest) String() string {
   834  	return protoimpl.X.MessageStringOf(x)
   835  }
   836  
   837  func (*QuerySourcePositionsRequest) ProtoMessage() {}
   838  
   839  func (x *QuerySourcePositionsRequest) ProtoReflect() protoreflect.Message {
   840  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[8]
   841  	if protoimpl.UnsafeEnabled && x != nil {
   842  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   843  		if ms.LoadMessageInfo() == nil {
   844  			ms.StoreMessageInfo(mi)
   845  		}
   846  		return ms
   847  	}
   848  	return mi.MessageOf(x)
   849  }
   850  
   851  // Deprecated: Use QuerySourcePositionsRequest.ProtoReflect.Descriptor instead.
   852  func (*QuerySourcePositionsRequest) Descriptor() ([]byte, []int) {
   853  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{8}
   854  }
   855  
   856  func (x *QuerySourcePositionsRequest) GetProject() string {
   857  	if x != nil {
   858  		return x.Project
   859  	}
   860  	return ""
   861  }
   862  
   863  func (x *QuerySourcePositionsRequest) GetTestId() string {
   864  	if x != nil {
   865  		return x.TestId
   866  	}
   867  	return ""
   868  }
   869  
   870  func (x *QuerySourcePositionsRequest) GetVariantHash() string {
   871  	if x != nil {
   872  		return x.VariantHash
   873  	}
   874  	return ""
   875  }
   876  
   877  func (x *QuerySourcePositionsRequest) GetRefHash() string {
   878  	if x != nil {
   879  		return x.RefHash
   880  	}
   881  	return ""
   882  }
   883  
   884  func (x *QuerySourcePositionsRequest) GetStartSourcePosition() int64 {
   885  	if x != nil {
   886  		return x.StartSourcePosition
   887  	}
   888  	return 0
   889  }
   890  
   891  func (x *QuerySourcePositionsRequest) GetPageSize() int32 {
   892  	if x != nil {
   893  		return x.PageSize
   894  	}
   895  	return 0
   896  }
   897  
   898  func (x *QuerySourcePositionsRequest) GetPageToken() string {
   899  	if x != nil {
   900  		return x.PageToken
   901  	}
   902  	return ""
   903  }
   904  
   905  type QuerySourcePositionsResponse struct {
   906  	state         protoimpl.MessageState
   907  	sizeCache     protoimpl.SizeCache
   908  	unknownFields protoimpl.UnknownFields
   909  
   910  	// Source positions in descending order, start from the commit at start_source_position.
   911  	SourcePositions []*SourcePosition `protobuf:"bytes,1,rep,name=source_positions,json=sourcePositions,proto3" json:"source_positions,omitempty"`
   912  	// A page token for next QuerySourcePositionsRequest to fetch the next page of commits.
   913  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   914  }
   915  
   916  func (x *QuerySourcePositionsResponse) Reset() {
   917  	*x = QuerySourcePositionsResponse{}
   918  	if protoimpl.UnsafeEnabled {
   919  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[9]
   920  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   921  		ms.StoreMessageInfo(mi)
   922  	}
   923  }
   924  
   925  func (x *QuerySourcePositionsResponse) String() string {
   926  	return protoimpl.X.MessageStringOf(x)
   927  }
   928  
   929  func (*QuerySourcePositionsResponse) ProtoMessage() {}
   930  
   931  func (x *QuerySourcePositionsResponse) ProtoReflect() protoreflect.Message {
   932  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[9]
   933  	if protoimpl.UnsafeEnabled && x != nil {
   934  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   935  		if ms.LoadMessageInfo() == nil {
   936  			ms.StoreMessageInfo(mi)
   937  		}
   938  		return ms
   939  	}
   940  	return mi.MessageOf(x)
   941  }
   942  
   943  // Deprecated: Use QuerySourcePositionsResponse.ProtoReflect.Descriptor instead.
   944  func (*QuerySourcePositionsResponse) Descriptor() ([]byte, []int) {
   945  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{9}
   946  }
   947  
   948  func (x *QuerySourcePositionsResponse) GetSourcePositions() []*SourcePosition {
   949  	if x != nil {
   950  		return x.SourcePositions
   951  	}
   952  	return nil
   953  }
   954  
   955  func (x *QuerySourcePositionsResponse) GetNextPageToken() string {
   956  	if x != nil {
   957  		return x.NextPageToken
   958  	}
   959  	return ""
   960  }
   961  
   962  // SourcePosition contains the commit and the test verdicts at a source position for a test variant branch.
   963  type SourcePosition struct {
   964  	state         protoimpl.MessageState
   965  	sizeCache     protoimpl.SizeCache
   966  	unknownFields protoimpl.UnknownFields
   967  
   968  	// Source position.
   969  	Position int64 `protobuf:"varint,1,opt,name=position,proto3" json:"position,omitempty"`
   970  	// The git commit.
   971  	Commit *git.Commit `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"`
   972  	// Test verdicts at this source position.
   973  	// Test verdicts will be ordered by `partition_time` DESC.
   974  	// At most 20 verdicts will be returned here.
   975  	// Most of time, a test variant at the same source position has less than 20 verdicts.
   976  	Verdicts []*TestVerdict `protobuf:"bytes,3,rep,name=verdicts,proto3" json:"verdicts,omitempty"`
   977  }
   978  
   979  func (x *SourcePosition) Reset() {
   980  	*x = SourcePosition{}
   981  	if protoimpl.UnsafeEnabled {
   982  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[10]
   983  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   984  		ms.StoreMessageInfo(mi)
   985  	}
   986  }
   987  
   988  func (x *SourcePosition) String() string {
   989  	return protoimpl.X.MessageStringOf(x)
   990  }
   991  
   992  func (*SourcePosition) ProtoMessage() {}
   993  
   994  func (x *SourcePosition) ProtoReflect() protoreflect.Message {
   995  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[10]
   996  	if protoimpl.UnsafeEnabled && x != nil {
   997  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   998  		if ms.LoadMessageInfo() == nil {
   999  			ms.StoreMessageInfo(mi)
  1000  		}
  1001  		return ms
  1002  	}
  1003  	return mi.MessageOf(x)
  1004  }
  1005  
  1006  // Deprecated: Use SourcePosition.ProtoReflect.Descriptor instead.
  1007  func (*SourcePosition) Descriptor() ([]byte, []int) {
  1008  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{10}
  1009  }
  1010  
  1011  func (x *SourcePosition) GetPosition() int64 {
  1012  	if x != nil {
  1013  		return x.Position
  1014  	}
  1015  	return 0
  1016  }
  1017  
  1018  func (x *SourcePosition) GetCommit() *git.Commit {
  1019  	if x != nil {
  1020  		return x.Commit
  1021  	}
  1022  	return nil
  1023  }
  1024  
  1025  func (x *SourcePosition) GetVerdicts() []*TestVerdict {
  1026  	if x != nil {
  1027  		return x.Verdicts
  1028  	}
  1029  	return nil
  1030  }
  1031  
  1032  type PositionVerdict_Run struct {
  1033  	state         protoimpl.MessageState
  1034  	sizeCache     protoimpl.SizeCache
  1035  	unknownFields protoimpl.UnknownFields
  1036  
  1037  	// Number of expectedly passed results in the run.
  1038  	ExpectedPassCount int64 `protobuf:"varint,1,opt,name=expected_pass_count,json=expectedPassCount,proto3" json:"expected_pass_count,omitempty"`
  1039  	// Number of expectedly failed results in the run.
  1040  	ExpectedFailCount int64 `protobuf:"varint,2,opt,name=expected_fail_count,json=expectedFailCount,proto3" json:"expected_fail_count,omitempty"`
  1041  	// Number of expectedly crashed results in the run.
  1042  	ExpectedCrashCount int64 `protobuf:"varint,3,opt,name=expected_crash_count,json=expectedCrashCount,proto3" json:"expected_crash_count,omitempty"`
  1043  	// Number of expectedly aborted results in the run.
  1044  	ExpectedAbortCount int64 `protobuf:"varint,4,opt,name=expected_abort_count,json=expectedAbortCount,proto3" json:"expected_abort_count,omitempty"`
  1045  	// Number of unexpectedly passed results in the run.
  1046  	UnexpectedPassCount int64 `protobuf:"varint,5,opt,name=unexpected_pass_count,json=unexpectedPassCount,proto3" json:"unexpected_pass_count,omitempty"`
  1047  	// Number of unexpectedly failed results in the run.
  1048  	UnexpectedFailCount int64 `protobuf:"varint,6,opt,name=unexpected_fail_count,json=unexpectedFailCount,proto3" json:"unexpected_fail_count,omitempty"`
  1049  	// Number of unexpectedly crashed results in the run.
  1050  	UnexpectedCrashCount int64 `protobuf:"varint,7,opt,name=unexpected_crash_count,json=unexpectedCrashCount,proto3" json:"unexpected_crash_count,omitempty"`
  1051  	// Number of unexpectedly aborted results in the run.
  1052  	UnexpectedAbortCount int64 `protobuf:"varint,8,opt,name=unexpected_abort_count,json=unexpectedAbortCount,proto3" json:"unexpected_abort_count,omitempty"`
  1053  	// Whether this run is a duplicate run.
  1054  	IsDuplicate bool `protobuf:"varint,9,opt,name=is_duplicate,json=isDuplicate,proto3" json:"is_duplicate,omitempty"`
  1055  }
  1056  
  1057  func (x *PositionVerdict_Run) Reset() {
  1058  	*x = PositionVerdict_Run{}
  1059  	if protoimpl.UnsafeEnabled {
  1060  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[11]
  1061  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1062  		ms.StoreMessageInfo(mi)
  1063  	}
  1064  }
  1065  
  1066  func (x *PositionVerdict_Run) String() string {
  1067  	return protoimpl.X.MessageStringOf(x)
  1068  }
  1069  
  1070  func (*PositionVerdict_Run) ProtoMessage() {}
  1071  
  1072  func (x *PositionVerdict_Run) ProtoReflect() protoreflect.Message {
  1073  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[11]
  1074  	if protoimpl.UnsafeEnabled && x != nil {
  1075  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1076  		if ms.LoadMessageInfo() == nil {
  1077  			ms.StoreMessageInfo(mi)
  1078  		}
  1079  		return ms
  1080  	}
  1081  	return mi.MessageOf(x)
  1082  }
  1083  
  1084  // Deprecated: Use PositionVerdict_Run.ProtoReflect.Descriptor instead.
  1085  func (*PositionVerdict_Run) Descriptor() ([]byte, []int) {
  1086  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{3, 0}
  1087  }
  1088  
  1089  func (x *PositionVerdict_Run) GetExpectedPassCount() int64 {
  1090  	if x != nil {
  1091  		return x.ExpectedPassCount
  1092  	}
  1093  	return 0
  1094  }
  1095  
  1096  func (x *PositionVerdict_Run) GetExpectedFailCount() int64 {
  1097  	if x != nil {
  1098  		return x.ExpectedFailCount
  1099  	}
  1100  	return 0
  1101  }
  1102  
  1103  func (x *PositionVerdict_Run) GetExpectedCrashCount() int64 {
  1104  	if x != nil {
  1105  		return x.ExpectedCrashCount
  1106  	}
  1107  	return 0
  1108  }
  1109  
  1110  func (x *PositionVerdict_Run) GetExpectedAbortCount() int64 {
  1111  	if x != nil {
  1112  		return x.ExpectedAbortCount
  1113  	}
  1114  	return 0
  1115  }
  1116  
  1117  func (x *PositionVerdict_Run) GetUnexpectedPassCount() int64 {
  1118  	if x != nil {
  1119  		return x.UnexpectedPassCount
  1120  	}
  1121  	return 0
  1122  }
  1123  
  1124  func (x *PositionVerdict_Run) GetUnexpectedFailCount() int64 {
  1125  	if x != nil {
  1126  		return x.UnexpectedFailCount
  1127  	}
  1128  	return 0
  1129  }
  1130  
  1131  func (x *PositionVerdict_Run) GetUnexpectedCrashCount() int64 {
  1132  	if x != nil {
  1133  		return x.UnexpectedCrashCount
  1134  	}
  1135  	return 0
  1136  }
  1137  
  1138  func (x *PositionVerdict_Run) GetUnexpectedAbortCount() int64 {
  1139  	if x != nil {
  1140  		return x.UnexpectedAbortCount
  1141  	}
  1142  	return 0
  1143  }
  1144  
  1145  func (x *PositionVerdict_Run) GetIsDuplicate() bool {
  1146  	if x != nil {
  1147  		return x.IsDuplicate
  1148  	}
  1149  	return false
  1150  }
  1151  
  1152  // Counts of verdicts over a time period. Includes only
  1153  // test verdicts for submitted code changes. This is defined as:
  1154  // (1) where the code under test was already submitted when the test ran
  1155  //
  1156  //	(e.g. postsubmit builders)
  1157  //
  1158  // (2) where the code under test was not submitted at the time the test ran,
  1159  //
  1160  //	but was submitted immediately after (e.g. because the tests ran as part
  1161  //	of a tryjob, the presubmit run the tryjob was triggered by succeeded,
  1162  //	and submitted code as a result).
  1163  //	Currently, when test results lead to CL submission via recycled CQ runs,
  1164  //	they are not counted.
  1165  //
  1166  // Statistics for test results and test runs can be added here when needed.
  1167  type Segment_Counts struct {
  1168  	state         protoimpl.MessageState
  1169  	sizeCache     protoimpl.SizeCache
  1170  	unknownFields protoimpl.UnknownFields
  1171  
  1172  	// The number of verdicts with only unexpected test results.
  1173  	UnexpectedVerdicts int32 `protobuf:"varint,1,opt,name=unexpected_verdicts,json=unexpectedVerdicts,proto3" json:"unexpected_verdicts,omitempty"`
  1174  	// The number of verdicts with a mix of expected and unexpected test results.
  1175  	FlakyVerdicts int32 `protobuf:"varint,2,opt,name=flaky_verdicts,json=flakyVerdicts,proto3" json:"flaky_verdicts,omitempty"`
  1176  	// The total number of verdicts.
  1177  	TotalVerdicts int32 `protobuf:"varint,3,opt,name=total_verdicts,json=totalVerdicts,proto3" json:"total_verdicts,omitempty"`
  1178  }
  1179  
  1180  func (x *Segment_Counts) Reset() {
  1181  	*x = Segment_Counts{}
  1182  	if protoimpl.UnsafeEnabled {
  1183  		mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[12]
  1184  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1185  		ms.StoreMessageInfo(mi)
  1186  	}
  1187  }
  1188  
  1189  func (x *Segment_Counts) String() string {
  1190  	return protoimpl.X.MessageStringOf(x)
  1191  }
  1192  
  1193  func (*Segment_Counts) ProtoMessage() {}
  1194  
  1195  func (x *Segment_Counts) ProtoReflect() protoreflect.Message {
  1196  	mi := &file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[12]
  1197  	if protoimpl.UnsafeEnabled && x != nil {
  1198  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1199  		if ms.LoadMessageInfo() == nil {
  1200  			ms.StoreMessageInfo(mi)
  1201  		}
  1202  		return ms
  1203  	}
  1204  	return mi.MessageOf(x)
  1205  }
  1206  
  1207  // Deprecated: Use Segment_Counts.ProtoReflect.Descriptor instead.
  1208  func (*Segment_Counts) Descriptor() ([]byte, []int) {
  1209  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP(), []int{7, 0}
  1210  }
  1211  
  1212  func (x *Segment_Counts) GetUnexpectedVerdicts() int32 {
  1213  	if x != nil {
  1214  		return x.UnexpectedVerdicts
  1215  	}
  1216  	return 0
  1217  }
  1218  
  1219  func (x *Segment_Counts) GetFlakyVerdicts() int32 {
  1220  	if x != nil {
  1221  		return x.FlakyVerdicts
  1222  	}
  1223  	return 0
  1224  }
  1225  
  1226  func (x *Segment_Counts) GetTotalVerdicts() int32 {
  1227  	if x != nil {
  1228  		return x.TotalVerdicts
  1229  	}
  1230  	return 0
  1231  }
  1232  
  1233  var File_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto protoreflect.FileDescriptor
  1234  
  1235  var file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDesc = []byte{
  1236  	0x0a, 0x42, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  1237  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f,
  1238  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61,
  1239  	0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2e, 0x70,
  1240  	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79,
  1241  	0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
  1242  	0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
  1243  	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
  1244  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f,
  1245  	0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  1246  	0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
  1247  	0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
  1248  	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
  1249  	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
  1250  	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f,
  1251  	0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e,
  1252  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f,
  1253  	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x67, 0x6f,
  1254  	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75,
  1255  	0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74,
  1256  	0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
  1257  	0x74, 0x6f, 0x1a, 0x39, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e,
  1258  	0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  1259  	0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f,
  1260  	0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x39, 0x0a,
  1261  	0x1e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
  1262  	0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  1263  	0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
  1264  	0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbd, 0x04, 0x0a, 0x14, 0x54, 0x65, 0x73,
  1265  	0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x61,
  1266  	0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  1267  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
  1268  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
  1269  	0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
  1270  	0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69,
  1271  	0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
  1272  	0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72,
  1273  	0x65, 0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72,
  1274  	0x65, 0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x33, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e,
  1275  	0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61,
  1276  	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61,
  1277  	0x6e, 0x74, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x72,
  1278  	0x65, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  1279  	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72,
  1280  	0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x43, 0x0a, 0x12, 0x66, 0x69,
  1281  	0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73,
  1282  	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  1283  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x11, 0x66, 0x69,
  1284  	0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12,
  1285  	0x43, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65,
  1286  	0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f,
  1287  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e,
  1288  	0x79, 0x52, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x67,
  1289  	0x6d, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69,
  1290  	0x63, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  1291  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0a,
  1292  	0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x68, 0x6f,
  1293  	0x74, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,
  1294  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76,
  1295  	0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x09, 0x68,
  1296  	0x6f, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x64,
  1297  	0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
  1298  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31,
  1299  	0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f,
  1300  	0x6c, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x22, 0x64, 0x0a, 0x0b, 0x49, 0x6e, 0x70, 0x75,
  1301  	0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74,
  1302  	0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12,
  1303  	0x3d, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
  1304  	0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  1305  	0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72,
  1306  	0x64, 0x69, 0x63, 0x74, 0x52, 0x08, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x22, 0x8c,
  1307  	0x05, 0x0a, 0x0f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x64, 0x69,
  1308  	0x63, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x6f, 0x73, 0x69,
  1309  	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d,
  1310  	0x69, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x68, 0x6f,
  1311  	0x75, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  1312  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
  1313  	0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73,
  1314  	0x5f, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
  1315  	0x08, 0x52, 0x0c, 0x69, 0x73, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x12,
  1316  	0x39, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
  1317  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31,
  1318  	0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74,
  1319  	0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x1a, 0xc0, 0x03, 0x0a, 0x03, 0x52,
  1320  	0x75, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70,
  1321  	0x61, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
  1322  	0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75,
  1323  	0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x66,
  1324  	0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
  1325  	0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75,
  1326  	0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63,
  1327  	0x72, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
  1328  	0x52, 0x12, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x72, 0x61, 0x73, 0x68, 0x43,
  1329  	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
  1330  	0x5f, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
  1331  	0x28, 0x03, 0x52, 0x12, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x62, 0x6f, 0x72,
  1332  	0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65,
  1333  	0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
  1334  	0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65,
  1335  	0x64, 0x50, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x75, 0x6e,
  1336  	0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f,
  1337  	0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x75, 0x6e, 0x65, 0x78, 0x70,
  1338  	0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34,
  1339  	0x0a, 0x16, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x72, 0x61,
  1340  	0x73, 0x68, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14,
  1341  	0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x72, 0x61, 0x73, 0x68, 0x43,
  1342  	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74,
  1343  	0x65, 0x64, 0x5f, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08,
  1344  	0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
  1345  	0x41, 0x62, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73,
  1346  	0x5f, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
  1347  	0x52, 0x0b, 0x69, 0x73, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x3d, 0x0a,
  1348  	0x20, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72,
  1349  	0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  1350  	0x74, 0x12, 0x19, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
  1351  	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21,
  1352  	0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69,
  1353  	0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  1354  	0x65, 0x12, 0x57, 0x0a, 0x15, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e,
  1355  	0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
  1356  	0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
  1357  	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x42,
  1358  	0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x13, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
  1359  	0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x22, 0xb3, 0x02, 0x0a, 0x11, 0x54,
  1360  	0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68,
  1361  	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
  1362  	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18,
  1363  	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17,
  1364  	0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
  1365  	0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61,
  1366  	0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76,
  1367  	0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65,
  1368  	0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65,
  1369  	0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x33, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
  1370  	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e,
  1371  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
  1372  	0x74, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x72, 0x65,
  1373  	0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61,
  1374  	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
  1375  	0x65, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x65, 0x67,
  1376  	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75,
  1377  	0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53,
  1378  	0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73,
  1379  	0x22, 0xc9, 0x04, 0x0a, 0x07, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15,
  1380  	0x68, 0x61, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
  1381  	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x68, 0x61, 0x73,
  1382  	0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74,
  1383  	0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
  1384  	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50,
  1385  	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x1f, 0x73, 0x74, 0x61, 0x72, 0x74,
  1386  	0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f,
  1387  	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x39, 0x39, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
  1388  	0x52, 0x1b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c,
  1389  	0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x39, 0x39, 0x74, 0x68, 0x12, 0x44, 0x0a,
  1390  	0x1f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
  1391  	0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x39, 0x39, 0x74, 0x68,
  1392  	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x73,
  1393  	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x39,
  1394  	0x39, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x68, 0x6f, 0x75,
  1395  	0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  1396  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
  1397  	0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x21,
  1398  	0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06,
  1399  	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
  1400  	0x6e, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x07, 0x20,
  1401  	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  1402  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
  1403  	0x07, 0x65, 0x6e, 0x64, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x6e,
  1404  	0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  1405  	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x67, 0x6d,
  1406  	0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e,
  1407  	0x74, 0x73, 0x1a, 0x87, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x0a,
  1408  	0x13, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x64,
  1409  	0x69, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x75, 0x6e, 0x65, 0x78,
  1410  	0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x12, 0x25,
  1411  	0x0a, 0x0e, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73,
  1412  	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x56, 0x65, 0x72,
  1413  	0x64, 0x69, 0x63, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x76,
  1414  	0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74,
  1415  	0x6f, 0x74, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x22, 0xfe, 0x01, 0x0a,
  1416  	0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69,
  1417  	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
  1418  	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
  1419  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69,
  1420  	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12,
  1421  	0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18,
  1422  	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61,
  1423  	0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04,
  1424  	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x32, 0x0a,
  1425  	0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f,
  1426  	0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x73, 0x74,
  1427  	0x61, 0x72, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
  1428  	0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06,
  1429  	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d,
  1430  	0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01,
  1431  	0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x93, 0x01,
  1432  	0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73,
  1433  	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b,
  1434  	0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
  1435  	0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  1436  	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72,
  1437  	0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72,
  1438  	0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
  1439  	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02,
  1440  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
  1441  	0x6b, 0x65, 0x6e, 0x22, 0x8c, 0x01, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f,
  1442  	0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
  1443  	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
  1444  	0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01,
  1445  	0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x67, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52,
  1446  	0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x64, 0x69,
  1447  	0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  1448  	0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73,
  1449  	0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x08, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63,
  1450  	0x74, 0x73, 0x32, 0xeb, 0x02, 0x0a, 0x13, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
  1451  	0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x06, 0x47, 0x65,
  1452  	0x74, 0x52, 0x61, 0x77, 0x12, 0x30, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c,
  1453  	0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x54, 0x65,
  1454  	0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52,
  1455  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e,
  1456  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61,
  1457  	0x72, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x61, 0x77, 0x22, 0x00,
  1458  	0x12, 0x75, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x12, 0x32, 0x2e, 0x6c,
  1459  	0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e,
  1460  	0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69,
  1461  	0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  1462  	0x1a, 0x33, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
  1463  	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74,
  1464  	0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73,
  1465  	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79,
  1466  	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
  1467  	0x2d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e,
  1468  	0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f,
  1469  	0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e,
  1470  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76,
  1471  	0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73,
  1472  	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
  1473  	0x42, 0x33, 0x5a, 0x31, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e,
  1474  	0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  1475  	0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x6e, 0x61, 0x6c, 0x79,
  1476  	0x73, 0x69, 0x73, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  1477  }
  1478  
  1479  var (
  1480  	file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescOnce sync.Once
  1481  	file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescData = file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDesc
  1482  )
  1483  
  1484  func file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescGZIP() []byte {
  1485  	file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescOnce.Do(func() {
  1486  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescData)
  1487  	})
  1488  	return file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDescData
  1489  }
  1490  
  1491  var file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
  1492  var file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_goTypes = []interface{}{
  1493  	(*GetRawTestVariantBranchRequest)(nil),    // 0: luci.analysis.v1.GetRawTestVariantBranchRequest
  1494  	(*TestVariantBranchRaw)(nil),              // 1: luci.analysis.v1.TestVariantBranchRaw
  1495  	(*InputBuffer)(nil),                       // 2: luci.analysis.v1.InputBuffer
  1496  	(*PositionVerdict)(nil),                   // 3: luci.analysis.v1.PositionVerdict
  1497  	(*BatchGetTestVariantBranchRequest)(nil),  // 4: luci.analysis.v1.BatchGetTestVariantBranchRequest
  1498  	(*BatchGetTestVariantBranchResponse)(nil), // 5: luci.analysis.v1.BatchGetTestVariantBranchResponse
  1499  	(*TestVariantBranch)(nil),                 // 6: luci.analysis.v1.TestVariantBranch
  1500  	(*Segment)(nil),                           // 7: luci.analysis.v1.Segment
  1501  	(*QuerySourcePositionsRequest)(nil),       // 8: luci.analysis.v1.QuerySourcePositionsRequest
  1502  	(*QuerySourcePositionsResponse)(nil),      // 9: luci.analysis.v1.QuerySourcePositionsResponse
  1503  	(*SourcePosition)(nil),                    // 10: luci.analysis.v1.SourcePosition
  1504  	(*PositionVerdict_Run)(nil),               // 11: luci.analysis.v1.PositionVerdict.Run
  1505  	(*Segment_Counts)(nil),                    // 12: luci.analysis.v1.Segment.Counts
  1506  	(*Variant)(nil),                           // 13: luci.analysis.v1.Variant
  1507  	(*SourceRef)(nil),                         // 14: luci.analysis.v1.SourceRef
  1508  	(*anypb.Any)(nil),                         // 15: google.protobuf.Any
  1509  	(*timestamppb.Timestamp)(nil),             // 16: google.protobuf.Timestamp
  1510  	(*git.Commit)(nil),                        // 17: git.Commit
  1511  	(*TestVerdict)(nil),                       // 18: luci.analysis.v1.TestVerdict
  1512  }
  1513  var file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_depIdxs = []int32{
  1514  	13, // 0: luci.analysis.v1.TestVariantBranchRaw.variant:type_name -> luci.analysis.v1.Variant
  1515  	14, // 1: luci.analysis.v1.TestVariantBranchRaw.ref:type_name -> luci.analysis.v1.SourceRef
  1516  	15, // 2: luci.analysis.v1.TestVariantBranchRaw.finalized_segments:type_name -> google.protobuf.Any
  1517  	15, // 3: luci.analysis.v1.TestVariantBranchRaw.finalizing_segment:type_name -> google.protobuf.Any
  1518  	15, // 4: luci.analysis.v1.TestVariantBranchRaw.statistics:type_name -> google.protobuf.Any
  1519  	2,  // 5: luci.analysis.v1.TestVariantBranchRaw.hot_buffer:type_name -> luci.analysis.v1.InputBuffer
  1520  	2,  // 6: luci.analysis.v1.TestVariantBranchRaw.cold_buffer:type_name -> luci.analysis.v1.InputBuffer
  1521  	3,  // 7: luci.analysis.v1.InputBuffer.verdicts:type_name -> luci.analysis.v1.PositionVerdict
  1522  	16, // 8: luci.analysis.v1.PositionVerdict.hour:type_name -> google.protobuf.Timestamp
  1523  	11, // 9: luci.analysis.v1.PositionVerdict.runs:type_name -> luci.analysis.v1.PositionVerdict.Run
  1524  	6,  // 10: luci.analysis.v1.BatchGetTestVariantBranchResponse.test_variant_branches:type_name -> luci.analysis.v1.TestVariantBranch
  1525  	13, // 11: luci.analysis.v1.TestVariantBranch.variant:type_name -> luci.analysis.v1.Variant
  1526  	14, // 12: luci.analysis.v1.TestVariantBranch.ref:type_name -> luci.analysis.v1.SourceRef
  1527  	7,  // 13: luci.analysis.v1.TestVariantBranch.segments:type_name -> luci.analysis.v1.Segment
  1528  	16, // 14: luci.analysis.v1.Segment.start_hour:type_name -> google.protobuf.Timestamp
  1529  	16, // 15: luci.analysis.v1.Segment.end_hour:type_name -> google.protobuf.Timestamp
  1530  	12, // 16: luci.analysis.v1.Segment.counts:type_name -> luci.analysis.v1.Segment.Counts
  1531  	10, // 17: luci.analysis.v1.QuerySourcePositionsResponse.source_positions:type_name -> luci.analysis.v1.SourcePosition
  1532  	17, // 18: luci.analysis.v1.SourcePosition.commit:type_name -> git.Commit
  1533  	18, // 19: luci.analysis.v1.SourcePosition.verdicts:type_name -> luci.analysis.v1.TestVerdict
  1534  	0,  // 20: luci.analysis.v1.TestVariantBranches.GetRaw:input_type -> luci.analysis.v1.GetRawTestVariantBranchRequest
  1535  	4,  // 21: luci.analysis.v1.TestVariantBranches.BatchGet:input_type -> luci.analysis.v1.BatchGetTestVariantBranchRequest
  1536  	8,  // 22: luci.analysis.v1.TestVariantBranches.QuerySourcePositions:input_type -> luci.analysis.v1.QuerySourcePositionsRequest
  1537  	1,  // 23: luci.analysis.v1.TestVariantBranches.GetRaw:output_type -> luci.analysis.v1.TestVariantBranchRaw
  1538  	5,  // 24: luci.analysis.v1.TestVariantBranches.BatchGet:output_type -> luci.analysis.v1.BatchGetTestVariantBranchResponse
  1539  	9,  // 25: luci.analysis.v1.TestVariantBranches.QuerySourcePositions:output_type -> luci.analysis.v1.QuerySourcePositionsResponse
  1540  	23, // [23:26] is the sub-list for method output_type
  1541  	20, // [20:23] is the sub-list for method input_type
  1542  	20, // [20:20] is the sub-list for extension type_name
  1543  	20, // [20:20] is the sub-list for extension extendee
  1544  	0,  // [0:20] is the sub-list for field type_name
  1545  }
  1546  
  1547  func init() { file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_init() }
  1548  func file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_init() {
  1549  	if File_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto != nil {
  1550  		return
  1551  	}
  1552  	file_go_chromium_org_luci_analysis_proto_v1_common_proto_init()
  1553  	file_go_chromium_org_luci_analysis_proto_v1_sources_proto_init()
  1554  	file_go_chromium_org_luci_analysis_proto_v1_test_verdict_proto_init()
  1555  	if !protoimpl.UnsafeEnabled {
  1556  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  1557  			switch v := v.(*GetRawTestVariantBranchRequest); 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  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  1569  			switch v := v.(*TestVariantBranchRaw); i {
  1570  			case 0:
  1571  				return &v.state
  1572  			case 1:
  1573  				return &v.sizeCache
  1574  			case 2:
  1575  				return &v.unknownFields
  1576  			default:
  1577  				return nil
  1578  			}
  1579  		}
  1580  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  1581  			switch v := v.(*InputBuffer); i {
  1582  			case 0:
  1583  				return &v.state
  1584  			case 1:
  1585  				return &v.sizeCache
  1586  			case 2:
  1587  				return &v.unknownFields
  1588  			default:
  1589  				return nil
  1590  			}
  1591  		}
  1592  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  1593  			switch v := v.(*PositionVerdict); i {
  1594  			case 0:
  1595  				return &v.state
  1596  			case 1:
  1597  				return &v.sizeCache
  1598  			case 2:
  1599  				return &v.unknownFields
  1600  			default:
  1601  				return nil
  1602  			}
  1603  		}
  1604  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  1605  			switch v := v.(*BatchGetTestVariantBranchRequest); i {
  1606  			case 0:
  1607  				return &v.state
  1608  			case 1:
  1609  				return &v.sizeCache
  1610  			case 2:
  1611  				return &v.unknownFields
  1612  			default:
  1613  				return nil
  1614  			}
  1615  		}
  1616  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  1617  			switch v := v.(*BatchGetTestVariantBranchResponse); i {
  1618  			case 0:
  1619  				return &v.state
  1620  			case 1:
  1621  				return &v.sizeCache
  1622  			case 2:
  1623  				return &v.unknownFields
  1624  			default:
  1625  				return nil
  1626  			}
  1627  		}
  1628  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  1629  			switch v := v.(*TestVariantBranch); i {
  1630  			case 0:
  1631  				return &v.state
  1632  			case 1:
  1633  				return &v.sizeCache
  1634  			case 2:
  1635  				return &v.unknownFields
  1636  			default:
  1637  				return nil
  1638  			}
  1639  		}
  1640  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  1641  			switch v := v.(*Segment); i {
  1642  			case 0:
  1643  				return &v.state
  1644  			case 1:
  1645  				return &v.sizeCache
  1646  			case 2:
  1647  				return &v.unknownFields
  1648  			default:
  1649  				return nil
  1650  			}
  1651  		}
  1652  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  1653  			switch v := v.(*QuerySourcePositionsRequest); i {
  1654  			case 0:
  1655  				return &v.state
  1656  			case 1:
  1657  				return &v.sizeCache
  1658  			case 2:
  1659  				return &v.unknownFields
  1660  			default:
  1661  				return nil
  1662  			}
  1663  		}
  1664  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  1665  			switch v := v.(*QuerySourcePositionsResponse); i {
  1666  			case 0:
  1667  				return &v.state
  1668  			case 1:
  1669  				return &v.sizeCache
  1670  			case 2:
  1671  				return &v.unknownFields
  1672  			default:
  1673  				return nil
  1674  			}
  1675  		}
  1676  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  1677  			switch v := v.(*SourcePosition); i {
  1678  			case 0:
  1679  				return &v.state
  1680  			case 1:
  1681  				return &v.sizeCache
  1682  			case 2:
  1683  				return &v.unknownFields
  1684  			default:
  1685  				return nil
  1686  			}
  1687  		}
  1688  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  1689  			switch v := v.(*PositionVerdict_Run); i {
  1690  			case 0:
  1691  				return &v.state
  1692  			case 1:
  1693  				return &v.sizeCache
  1694  			case 2:
  1695  				return &v.unknownFields
  1696  			default:
  1697  				return nil
  1698  			}
  1699  		}
  1700  		file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  1701  			switch v := v.(*Segment_Counts); i {
  1702  			case 0:
  1703  				return &v.state
  1704  			case 1:
  1705  				return &v.sizeCache
  1706  			case 2:
  1707  				return &v.unknownFields
  1708  			default:
  1709  				return nil
  1710  			}
  1711  		}
  1712  	}
  1713  	type x struct{}
  1714  	out := protoimpl.TypeBuilder{
  1715  		File: protoimpl.DescBuilder{
  1716  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  1717  			RawDescriptor: file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDesc,
  1718  			NumEnums:      0,
  1719  			NumMessages:   13,
  1720  			NumExtensions: 0,
  1721  			NumServices:   1,
  1722  		},
  1723  		GoTypes:           file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_goTypes,
  1724  		DependencyIndexes: file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_depIdxs,
  1725  		MessageInfos:      file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_msgTypes,
  1726  	}.Build()
  1727  	File_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto = out.File
  1728  	file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_rawDesc = nil
  1729  	file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_goTypes = nil
  1730  	file_go_chromium_org_luci_analysis_proto_v1_test_variant_branches_proto_depIdxs = nil
  1731  }
  1732  
  1733  // Reference imports to suppress errors if they are not otherwise used.
  1734  var _ context.Context
  1735  var _ grpc.ClientConnInterface
  1736  
  1737  // This is a compile-time assertion to ensure that this generated file
  1738  // is compatible with the grpc package it is being compiled against.
  1739  const _ = grpc.SupportPackageIsVersion6
  1740  
  1741  // TestVariantBranchesClient is the client API for TestVariantBranches service.
  1742  //
  1743  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  1744  type TestVariantBranchesClient interface {
  1745  	// Retrieves the raw state of test variant branch analysis.
  1746  	// For reading test variant branch analyses from Spanner.
  1747  	// This enables us to inspect the state of a test variant branch
  1748  	// analysis in Spanner (which cannot easily inspected using SQL queries,
  1749  	// because the data is encoded).
  1750  	// This is currently only for LUCI Analysis admin users.
  1751  	GetRaw(ctx context.Context, in *GetRawTestVariantBranchRequest, opts ...grpc.CallOption) (*TestVariantBranchRaw, error)
  1752  	// Retrieves the current state of segments of test variant branch analysis in batches.
  1753  	BatchGet(ctx context.Context, in *BatchGetTestVariantBranchRequest, opts ...grpc.CallOption) (*BatchGetTestVariantBranchResponse, error)
  1754  	// Lists commits and the test verdicts at these commits, starting from a source position.
  1755  	QuerySourcePositions(ctx context.Context, in *QuerySourcePositionsRequest, opts ...grpc.CallOption) (*QuerySourcePositionsResponse, error)
  1756  }
  1757  type testVariantBranchesPRPCClient struct {
  1758  	client *prpc.Client
  1759  }
  1760  
  1761  func NewTestVariantBranchesPRPCClient(client *prpc.Client) TestVariantBranchesClient {
  1762  	return &testVariantBranchesPRPCClient{client}
  1763  }
  1764  
  1765  func (c *testVariantBranchesPRPCClient) GetRaw(ctx context.Context, in *GetRawTestVariantBranchRequest, opts ...grpc.CallOption) (*TestVariantBranchRaw, error) {
  1766  	out := new(TestVariantBranchRaw)
  1767  	err := c.client.Call(ctx, "luci.analysis.v1.TestVariantBranches", "GetRaw", in, out, opts...)
  1768  	if err != nil {
  1769  		return nil, err
  1770  	}
  1771  	return out, nil
  1772  }
  1773  
  1774  func (c *testVariantBranchesPRPCClient) BatchGet(ctx context.Context, in *BatchGetTestVariantBranchRequest, opts ...grpc.CallOption) (*BatchGetTestVariantBranchResponse, error) {
  1775  	out := new(BatchGetTestVariantBranchResponse)
  1776  	err := c.client.Call(ctx, "luci.analysis.v1.TestVariantBranches", "BatchGet", in, out, opts...)
  1777  	if err != nil {
  1778  		return nil, err
  1779  	}
  1780  	return out, nil
  1781  }
  1782  
  1783  func (c *testVariantBranchesPRPCClient) QuerySourcePositions(ctx context.Context, in *QuerySourcePositionsRequest, opts ...grpc.CallOption) (*QuerySourcePositionsResponse, error) {
  1784  	out := new(QuerySourcePositionsResponse)
  1785  	err := c.client.Call(ctx, "luci.analysis.v1.TestVariantBranches", "QuerySourcePositions", in, out, opts...)
  1786  	if err != nil {
  1787  		return nil, err
  1788  	}
  1789  	return out, nil
  1790  }
  1791  
  1792  type testVariantBranchesClient struct {
  1793  	cc grpc.ClientConnInterface
  1794  }
  1795  
  1796  func NewTestVariantBranchesClient(cc grpc.ClientConnInterface) TestVariantBranchesClient {
  1797  	return &testVariantBranchesClient{cc}
  1798  }
  1799  
  1800  func (c *testVariantBranchesClient) GetRaw(ctx context.Context, in *GetRawTestVariantBranchRequest, opts ...grpc.CallOption) (*TestVariantBranchRaw, error) {
  1801  	out := new(TestVariantBranchRaw)
  1802  	err := c.cc.Invoke(ctx, "/luci.analysis.v1.TestVariantBranches/GetRaw", in, out, opts...)
  1803  	if err != nil {
  1804  		return nil, err
  1805  	}
  1806  	return out, nil
  1807  }
  1808  
  1809  func (c *testVariantBranchesClient) BatchGet(ctx context.Context, in *BatchGetTestVariantBranchRequest, opts ...grpc.CallOption) (*BatchGetTestVariantBranchResponse, error) {
  1810  	out := new(BatchGetTestVariantBranchResponse)
  1811  	err := c.cc.Invoke(ctx, "/luci.analysis.v1.TestVariantBranches/BatchGet", in, out, opts...)
  1812  	if err != nil {
  1813  		return nil, err
  1814  	}
  1815  	return out, nil
  1816  }
  1817  
  1818  func (c *testVariantBranchesClient) QuerySourcePositions(ctx context.Context, in *QuerySourcePositionsRequest, opts ...grpc.CallOption) (*QuerySourcePositionsResponse, error) {
  1819  	out := new(QuerySourcePositionsResponse)
  1820  	err := c.cc.Invoke(ctx, "/luci.analysis.v1.TestVariantBranches/QuerySourcePositions", in, out, opts...)
  1821  	if err != nil {
  1822  		return nil, err
  1823  	}
  1824  	return out, nil
  1825  }
  1826  
  1827  // TestVariantBranchesServer is the server API for TestVariantBranches service.
  1828  type TestVariantBranchesServer interface {
  1829  	// Retrieves the raw state of test variant branch analysis.
  1830  	// For reading test variant branch analyses from Spanner.
  1831  	// This enables us to inspect the state of a test variant branch
  1832  	// analysis in Spanner (which cannot easily inspected using SQL queries,
  1833  	// because the data is encoded).
  1834  	// This is currently only for LUCI Analysis admin users.
  1835  	GetRaw(context.Context, *GetRawTestVariantBranchRequest) (*TestVariantBranchRaw, error)
  1836  	// Retrieves the current state of segments of test variant branch analysis in batches.
  1837  	BatchGet(context.Context, *BatchGetTestVariantBranchRequest) (*BatchGetTestVariantBranchResponse, error)
  1838  	// Lists commits and the test verdicts at these commits, starting from a source position.
  1839  	QuerySourcePositions(context.Context, *QuerySourcePositionsRequest) (*QuerySourcePositionsResponse, error)
  1840  }
  1841  
  1842  // UnimplementedTestVariantBranchesServer can be embedded to have forward compatible implementations.
  1843  type UnimplementedTestVariantBranchesServer struct {
  1844  }
  1845  
  1846  func (*UnimplementedTestVariantBranchesServer) GetRaw(context.Context, *GetRawTestVariantBranchRequest) (*TestVariantBranchRaw, error) {
  1847  	return nil, status.Errorf(codes.Unimplemented, "method GetRaw not implemented")
  1848  }
  1849  func (*UnimplementedTestVariantBranchesServer) BatchGet(context.Context, *BatchGetTestVariantBranchRequest) (*BatchGetTestVariantBranchResponse, error) {
  1850  	return nil, status.Errorf(codes.Unimplemented, "method BatchGet not implemented")
  1851  }
  1852  func (*UnimplementedTestVariantBranchesServer) QuerySourcePositions(context.Context, *QuerySourcePositionsRequest) (*QuerySourcePositionsResponse, error) {
  1853  	return nil, status.Errorf(codes.Unimplemented, "method QuerySourcePositions not implemented")
  1854  }
  1855  
  1856  func RegisterTestVariantBranchesServer(s prpc.Registrar, srv TestVariantBranchesServer) {
  1857  	s.RegisterService(&_TestVariantBranches_serviceDesc, srv)
  1858  }
  1859  
  1860  func _TestVariantBranches_GetRaw_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1861  	in := new(GetRawTestVariantBranchRequest)
  1862  	if err := dec(in); err != nil {
  1863  		return nil, err
  1864  	}
  1865  	if interceptor == nil {
  1866  		return srv.(TestVariantBranchesServer).GetRaw(ctx, in)
  1867  	}
  1868  	info := &grpc.UnaryServerInfo{
  1869  		Server:     srv,
  1870  		FullMethod: "/luci.analysis.v1.TestVariantBranches/GetRaw",
  1871  	}
  1872  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1873  		return srv.(TestVariantBranchesServer).GetRaw(ctx, req.(*GetRawTestVariantBranchRequest))
  1874  	}
  1875  	return interceptor(ctx, in, info, handler)
  1876  }
  1877  
  1878  func _TestVariantBranches_BatchGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1879  	in := new(BatchGetTestVariantBranchRequest)
  1880  	if err := dec(in); err != nil {
  1881  		return nil, err
  1882  	}
  1883  	if interceptor == nil {
  1884  		return srv.(TestVariantBranchesServer).BatchGet(ctx, in)
  1885  	}
  1886  	info := &grpc.UnaryServerInfo{
  1887  		Server:     srv,
  1888  		FullMethod: "/luci.analysis.v1.TestVariantBranches/BatchGet",
  1889  	}
  1890  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1891  		return srv.(TestVariantBranchesServer).BatchGet(ctx, req.(*BatchGetTestVariantBranchRequest))
  1892  	}
  1893  	return interceptor(ctx, in, info, handler)
  1894  }
  1895  
  1896  func _TestVariantBranches_QuerySourcePositions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1897  	in := new(QuerySourcePositionsRequest)
  1898  	if err := dec(in); err != nil {
  1899  		return nil, err
  1900  	}
  1901  	if interceptor == nil {
  1902  		return srv.(TestVariantBranchesServer).QuerySourcePositions(ctx, in)
  1903  	}
  1904  	info := &grpc.UnaryServerInfo{
  1905  		Server:     srv,
  1906  		FullMethod: "/luci.analysis.v1.TestVariantBranches/QuerySourcePositions",
  1907  	}
  1908  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1909  		return srv.(TestVariantBranchesServer).QuerySourcePositions(ctx, req.(*QuerySourcePositionsRequest))
  1910  	}
  1911  	return interceptor(ctx, in, info, handler)
  1912  }
  1913  
  1914  var _TestVariantBranches_serviceDesc = grpc.ServiceDesc{
  1915  	ServiceName: "luci.analysis.v1.TestVariantBranches",
  1916  	HandlerType: (*TestVariantBranchesServer)(nil),
  1917  	Methods: []grpc.MethodDesc{
  1918  		{
  1919  			MethodName: "GetRaw",
  1920  			Handler:    _TestVariantBranches_GetRaw_Handler,
  1921  		},
  1922  		{
  1923  			MethodName: "BatchGet",
  1924  			Handler:    _TestVariantBranches_BatchGet_Handler,
  1925  		},
  1926  		{
  1927  			MethodName: "QuerySourcePositions",
  1928  			Handler:    _TestVariantBranches_QuerySourcePositions_Handler,
  1929  		},
  1930  	},
  1931  	Streams:  []grpc.StreamDesc{},
  1932  	Metadata: "go.chromium.org/luci/analysis/proto/v1/test_variant_branches.proto",
  1933  }