// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.30.0
// 	protoc        v3.15.6
// source: api/log/log.proto

package log

import (
	_ "github.com/GoogleCloudPlatform/protoc-gen-bq-schema/protos"
	stat "github.com/bazelbuild/reclient/api/stat"
	command "github.com/bazelbuild/remote-apis-sdks/go/api/command"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type CompletionStatus int32

const (
	CompletionStatus_STATUS_UNKNOWN          CompletionStatus = 0
	CompletionStatus_STATUS_CACHE_HIT        CompletionStatus = 1
	CompletionStatus_STATUS_REMOTE_EXECUTION CompletionStatus = 2
	CompletionStatus_STATUS_LOCAL_FALLBACK   CompletionStatus = 3
	CompletionStatus_STATUS_LOCAL_EXECUTION  CompletionStatus = 4
	CompletionStatus_STATUS_RACING_LOCAL     CompletionStatus = 5
	CompletionStatus_STATUS_RACING_REMOTE    CompletionStatus = 6
	CompletionStatus_STATUS_REMOTE_FAILURE   CompletionStatus = 7
	CompletionStatus_STATUS_LOCAL_FAILURE    CompletionStatus = 8
	CompletionStatus_STATUS_NON_ZERO_EXIT    CompletionStatus = 9
	CompletionStatus_STATUS_TIMEOUT          CompletionStatus = 10
	CompletionStatus_STATUS_INTERRUPTED      CompletionStatus = 11
)

// Enum value maps for CompletionStatus.
var (
	CompletionStatus_name = map[int32]string{
		0:  "STATUS_UNKNOWN",
		1:  "STATUS_CACHE_HIT",
		2:  "STATUS_REMOTE_EXECUTION",
		3:  "STATUS_LOCAL_FALLBACK",
		4:  "STATUS_LOCAL_EXECUTION",
		5:  "STATUS_RACING_LOCAL",
		6:  "STATUS_RACING_REMOTE",
		7:  "STATUS_REMOTE_FAILURE",
		8:  "STATUS_LOCAL_FAILURE",
		9:  "STATUS_NON_ZERO_EXIT",
		10: "STATUS_TIMEOUT",
		11: "STATUS_INTERRUPTED",
	}
	CompletionStatus_value = map[string]int32{
		"STATUS_UNKNOWN":          0,
		"STATUS_CACHE_HIT":        1,
		"STATUS_REMOTE_EXECUTION": 2,
		"STATUS_LOCAL_FALLBACK":   3,
		"STATUS_LOCAL_EXECUTION":  4,
		"STATUS_RACING_LOCAL":     5,
		"STATUS_RACING_REMOTE":    6,
		"STATUS_REMOTE_FAILURE":   7,
		"STATUS_LOCAL_FAILURE":    8,
		"STATUS_NON_ZERO_EXIT":    9,
		"STATUS_TIMEOUT":          10,
		"STATUS_INTERRUPTED":      11,
	}
)

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

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

func (CompletionStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_api_log_log_proto_enumTypes[0].Descriptor()
}

func (CompletionStatus) Type() protoreflect.EnumType {
	return &file_api_log_log_proto_enumTypes[0]
}

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

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

type DeterminismStatus int32

const (
	DeterminismStatus_DETERMINISTIC            DeterminismStatus = 0
	DeterminismStatus_NON_DETERMINISTIC        DeterminismStatus = 1
	DeterminismStatus_UNKNOWN                  DeterminismStatus = 2
	DeterminismStatus_REMOTE_NON_DETERMINISTIC DeterminismStatus = 3
)

// Enum value maps for DeterminismStatus.
var (
	DeterminismStatus_name = map[int32]string{
		0: "DETERMINISTIC",
		1: "NON_DETERMINISTIC",
		2: "UNKNOWN",
		3: "REMOTE_NON_DETERMINISTIC",
	}
	DeterminismStatus_value = map[string]int32{
		"DETERMINISTIC":            0,
		"NON_DETERMINISTIC":        1,
		"UNKNOWN":                  2,
		"REMOTE_NON_DETERMINISTIC": 3,
	}
)

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

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

func (DeterminismStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_api_log_log_proto_enumTypes[1].Descriptor()
}

func (DeterminismStatus) Type() protoreflect.EnumType {
	return &file_api_log_log_proto_enumTypes[1]
}

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

// Deprecated: Use DeterminismStatus.Descriptor instead.
func (DeterminismStatus) EnumDescriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{1}
}

type LogRecord struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Command          *command.Command       `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"`
	Result           *command.CommandResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	RemoteMetadata   *RemoteMetadata        `protobuf:"bytes,3,opt,name=remote_metadata,json=remoteMetadata,proto3" json:"remote_metadata,omitempty"`
	LocalMetadata    *LocalMetadata         `protobuf:"bytes,4,opt,name=local_metadata,json=localMetadata,proto3" json:"local_metadata,omitempty"`
	CompletionStatus CompletionStatus       `protobuf:"varint,5,opt,name=completion_status,json=completionStatus,proto3,enum=log.CompletionStatus" json:"completion_status,omitempty"`
}

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

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

func (*LogRecord) ProtoMessage() {}

func (x *LogRecord) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

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

func (x *LogRecord) GetCommand() *command.Command {
	if x != nil {
		return x.Command
	}
	return nil
}

func (x *LogRecord) GetResult() *command.CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *LogRecord) GetRemoteMetadata() *RemoteMetadata {
	if x != nil {
		return x.RemoteMetadata
	}
	return nil
}

func (x *LogRecord) GetLocalMetadata() *LocalMetadata {
	if x != nil {
		return x.LocalMetadata
	}
	return nil
}

func (x *LogRecord) GetCompletionStatus() CompletionStatus {
	if x != nil {
		return x.CompletionStatus
	}
	return CompletionStatus_STATUS_UNKNOWN
}

type LogDump struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Records []*LogRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
}

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

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

func (*LogDump) ProtoMessage() {}

func (x *LogDump) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LogDump.ProtoReflect.Descriptor instead.
func (*LogDump) Descriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{1}
}

func (x *LogDump) GetRecords() []*LogRecord {
	if x != nil {
		return x.Records
	}
	return nil
}

type RerunMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Attempt                int64                            `protobuf:"varint,1,opt,name=attempt,proto3" json:"attempt,omitempty"`
	Result                 *command.CommandResult           `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	NumOutputFiles         int32                            `protobuf:"varint,3,opt,name=num_output_files,json=numOutputFiles,proto3" json:"num_output_files,omitempty"`
	NumOutputDirectories   int32                            `protobuf:"varint,4,opt,name=num_output_directories,json=numOutputDirectories,proto3" json:"num_output_directories,omitempty"`
	TotalOutputBytes       int64                            `protobuf:"varint,5,opt,name=total_output_bytes,json=totalOutputBytes,proto3" json:"total_output_bytes,omitempty"`
	OutputFileDigests      map[string]string                `protobuf:"bytes,6,rep,name=output_file_digests,json=outputFileDigests,proto3" json:"output_file_digests,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	OutputDirectoryDigests map[string]string                `protobuf:"bytes,7,rep,name=output_directory_digests,json=outputDirectoryDigests,proto3" json:"output_directory_digests,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	LogicalBytesDownloaded int64                            `protobuf:"varint,8,opt,name=logical_bytes_downloaded,json=logicalBytesDownloaded,proto3" json:"logical_bytes_downloaded,omitempty"`
	RealBytesDownloaded    int64                            `protobuf:"varint,9,opt,name=real_bytes_downloaded,json=realBytesDownloaded,proto3" json:"real_bytes_downloaded,omitempty"`
	EventTimes             map[string]*command.TimeInterval `protobuf:"bytes,10,rep,name=event_times,json=eventTimes,proto3" json:"event_times,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*RerunMetadata) ProtoMessage() {}

func (x *RerunMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RerunMetadata.ProtoReflect.Descriptor instead.
func (*RerunMetadata) Descriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{2}
}

func (x *RerunMetadata) GetAttempt() int64 {
	if x != nil {
		return x.Attempt
	}
	return 0
}

func (x *RerunMetadata) GetResult() *command.CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *RerunMetadata) GetNumOutputFiles() int32 {
	if x != nil {
		return x.NumOutputFiles
	}
	return 0
}

func (x *RerunMetadata) GetNumOutputDirectories() int32 {
	if x != nil {
		return x.NumOutputDirectories
	}
	return 0
}

func (x *RerunMetadata) GetTotalOutputBytes() int64 {
	if x != nil {
		return x.TotalOutputBytes
	}
	return 0
}

func (x *RerunMetadata) GetOutputFileDigests() map[string]string {
	if x != nil {
		return x.OutputFileDigests
	}
	return nil
}

func (x *RerunMetadata) GetOutputDirectoryDigests() map[string]string {
	if x != nil {
		return x.OutputDirectoryDigests
	}
	return nil
}

func (x *RerunMetadata) GetLogicalBytesDownloaded() int64 {
	if x != nil {
		return x.LogicalBytesDownloaded
	}
	return 0
}

func (x *RerunMetadata) GetRealBytesDownloaded() int64 {
	if x != nil {
		return x.RealBytesDownloaded
	}
	return 0
}

func (x *RerunMetadata) GetEventTimes() map[string]*command.TimeInterval {
	if x != nil {
		return x.EventTimes
	}
	return nil
}

type RemoteMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Result                 *command.CommandResult           `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	CacheHit               bool                             `protobuf:"varint,2,opt,name=cache_hit,json=cacheHit,proto3" json:"cache_hit,omitempty"`
	NumInputFiles          int32                            `protobuf:"varint,3,opt,name=num_input_files,json=numInputFiles,proto3" json:"num_input_files,omitempty"`
	NumInputDirectories    int32                            `protobuf:"varint,4,opt,name=num_input_directories,json=numInputDirectories,proto3" json:"num_input_directories,omitempty"`
	TotalInputBytes        int64                            `protobuf:"varint,5,opt,name=total_input_bytes,json=totalInputBytes,proto3" json:"total_input_bytes,omitempty"`
	NumOutputFiles         int32                            `protobuf:"varint,9,opt,name=num_output_files,json=numOutputFiles,proto3" json:"num_output_files,omitempty"`
	NumOutputDirectories   int32                            `protobuf:"varint,10,opt,name=num_output_directories,json=numOutputDirectories,proto3" json:"num_output_directories,omitempty"`
	TotalOutputBytes       int64                            `protobuf:"varint,11,opt,name=total_output_bytes,json=totalOutputBytes,proto3" json:"total_output_bytes,omitempty"`
	CommandDigest          string                           `protobuf:"bytes,6,opt,name=command_digest,json=commandDigest,proto3" json:"command_digest,omitempty"`
	ActionDigest           string                           `protobuf:"bytes,7,opt,name=action_digest,json=actionDigest,proto3" json:"action_digest,omitempty"`
	EventTimes             map[string]*command.TimeInterval `protobuf:"bytes,8,rep,name=event_times,json=eventTimes,proto3" json:"event_times,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	LogicalBytesUploaded   int64                            `protobuf:"varint,13,opt,name=logical_bytes_uploaded,json=logicalBytesUploaded,proto3" json:"logical_bytes_uploaded,omitempty"`
	RealBytesUploaded      int64                            `protobuf:"varint,14,opt,name=real_bytes_uploaded,json=realBytesUploaded,proto3" json:"real_bytes_uploaded,omitempty"`
	LogicalBytesDownloaded int64                            `protobuf:"varint,15,opt,name=logical_bytes_downloaded,json=logicalBytesDownloaded,proto3" json:"logical_bytes_downloaded,omitempty"`
	RealBytesDownloaded    int64                            `protobuf:"varint,16,opt,name=real_bytes_downloaded,json=realBytesDownloaded,proto3" json:"real_bytes_downloaded,omitempty"`
	RerunMetadata          []*RerunMetadata                 `protobuf:"bytes,17,rep,name=rerun_metadata,json=rerunMetadata,proto3" json:"rerun_metadata,omitempty"`
	OutputFileDigests      map[string]string                `protobuf:"bytes,18,rep,name=output_file_digests,json=outputFileDigests,proto3" json:"output_file_digests,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	OutputDirectoryDigests map[string]string                `protobuf:"bytes,19,rep,name=output_directory_digests,json=outputDirectoryDigests,proto3" json:"output_directory_digests,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	StderrDigest           string                           `protobuf:"bytes,20,opt,name=stderr_digest,json=stderrDigest,proto3" json:"stderr_digest,omitempty"`
	StdoutDigest           string                           `protobuf:"bytes,21,opt,name=stdout_digest,json=stdoutDigest,proto3" json:"stdout_digest,omitempty"`
	AuxiliaryMetadata      map[string]string                `protobuf:"bytes,22,rep,name=auxiliary_metadata,json=auxiliaryMetadata,proto3" json:"auxiliary_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	OutputFileIsExecutable map[string]bool                  `protobuf:"bytes,23,rep,name=output_file_is_executable,json=outputFileIsExecutable,proto3" json:"output_file_is_executable,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*RemoteMetadata) ProtoMessage() {}

func (x *RemoteMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoteMetadata.ProtoReflect.Descriptor instead.
func (*RemoteMetadata) Descriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{3}
}

func (x *RemoteMetadata) GetResult() *command.CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *RemoteMetadata) GetCacheHit() bool {
	if x != nil {
		return x.CacheHit
	}
	return false
}

func (x *RemoteMetadata) GetNumInputFiles() int32 {
	if x != nil {
		return x.NumInputFiles
	}
	return 0
}

func (x *RemoteMetadata) GetNumInputDirectories() int32 {
	if x != nil {
		return x.NumInputDirectories
	}
	return 0
}

func (x *RemoteMetadata) GetTotalInputBytes() int64 {
	if x != nil {
		return x.TotalInputBytes
	}
	return 0
}

func (x *RemoteMetadata) GetNumOutputFiles() int32 {
	if x != nil {
		return x.NumOutputFiles
	}
	return 0
}

func (x *RemoteMetadata) GetNumOutputDirectories() int32 {
	if x != nil {
		return x.NumOutputDirectories
	}
	return 0
}

func (x *RemoteMetadata) GetTotalOutputBytes() int64 {
	if x != nil {
		return x.TotalOutputBytes
	}
	return 0
}

func (x *RemoteMetadata) GetCommandDigest() string {
	if x != nil {
		return x.CommandDigest
	}
	return ""
}

func (x *RemoteMetadata) GetActionDigest() string {
	if x != nil {
		return x.ActionDigest
	}
	return ""
}

func (x *RemoteMetadata) GetEventTimes() map[string]*command.TimeInterval {
	if x != nil {
		return x.EventTimes
	}
	return nil
}

func (x *RemoteMetadata) GetLogicalBytesUploaded() int64 {
	if x != nil {
		return x.LogicalBytesUploaded
	}
	return 0
}

func (x *RemoteMetadata) GetRealBytesUploaded() int64 {
	if x != nil {
		return x.RealBytesUploaded
	}
	return 0
}

func (x *RemoteMetadata) GetLogicalBytesDownloaded() int64 {
	if x != nil {
		return x.LogicalBytesDownloaded
	}
	return 0
}

func (x *RemoteMetadata) GetRealBytesDownloaded() int64 {
	if x != nil {
		return x.RealBytesDownloaded
	}
	return 0
}

func (x *RemoteMetadata) GetRerunMetadata() []*RerunMetadata {
	if x != nil {
		return x.RerunMetadata
	}
	return nil
}

func (x *RemoteMetadata) GetOutputFileDigests() map[string]string {
	if x != nil {
		return x.OutputFileDigests
	}
	return nil
}

func (x *RemoteMetadata) GetOutputDirectoryDigests() map[string]string {
	if x != nil {
		return x.OutputDirectoryDigests
	}
	return nil
}

func (x *RemoteMetadata) GetStderrDigest() string {
	if x != nil {
		return x.StderrDigest
	}
	return ""
}

func (x *RemoteMetadata) GetStdoutDigest() string {
	if x != nil {
		return x.StdoutDigest
	}
	return ""
}

func (x *RemoteMetadata) GetAuxiliaryMetadata() map[string]string {
	if x != nil {
		return x.AuxiliaryMetadata
	}
	return nil
}

func (x *RemoteMetadata) GetOutputFileIsExecutable() map[string]bool {
	if x != nil {
		return x.OutputFileIsExecutable
	}
	return nil
}

type LocalMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Result          *command.CommandResult           `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	ExecutedLocally bool                             `protobuf:"varint,2,opt,name=executed_locally,json=executedLocally,proto3" json:"executed_locally,omitempty"`
	ValidCacheHit   bool                             `protobuf:"varint,3,opt,name=valid_cache_hit,json=validCacheHit,proto3" json:"valid_cache_hit,omitempty"`
	UpdatedCache    bool                             `protobuf:"varint,4,opt,name=updated_cache,json=updatedCache,proto3" json:"updated_cache,omitempty"`
	Verification    *Verification                    `protobuf:"bytes,5,opt,name=verification,proto3" json:"verification,omitempty"`
	EventTimes      map[string]*command.TimeInterval `protobuf:"bytes,6,rep,name=event_times,json=eventTimes,proto3" json:"event_times,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Environment     map[string]string                `protobuf:"bytes,7,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Labels          map[string]string                `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	RerunMetadata   []*RerunMetadata                 `protobuf:"bytes,9,rep,name=rerun_metadata,json=rerunMetadata,proto3" json:"rerun_metadata,omitempty"`
}

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

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

func (*LocalMetadata) ProtoMessage() {}

func (x *LocalMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LocalMetadata.ProtoReflect.Descriptor instead.
func (*LocalMetadata) Descriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{4}
}

func (x *LocalMetadata) GetResult() *command.CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *LocalMetadata) GetExecutedLocally() bool {
	if x != nil {
		return x.ExecutedLocally
	}
	return false
}

func (x *LocalMetadata) GetValidCacheHit() bool {
	if x != nil {
		return x.ValidCacheHit
	}
	return false
}

func (x *LocalMetadata) GetUpdatedCache() bool {
	if x != nil {
		return x.UpdatedCache
	}
	return false
}

func (x *LocalMetadata) GetVerification() *Verification {
	if x != nil {
		return x.Verification
	}
	return nil
}

func (x *LocalMetadata) GetEventTimes() map[string]*command.TimeInterval {
	if x != nil {
		return x.EventTimes
	}
	return nil
}

func (x *LocalMetadata) GetEnvironment() map[string]string {
	if x != nil {
		return x.Environment
	}
	return nil
}

func (x *LocalMetadata) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *LocalMetadata) GetRerunMetadata() []*RerunMetadata {
	if x != nil {
		return x.RerunMetadata
	}
	return nil
}

type Verification struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Mismatches             []*Verification_Mismatch `protobuf:"bytes,1,rep,name=mismatches,proto3" json:"mismatches,omitempty"`
	TotalMismatches        int32                    `protobuf:"varint,2,opt,name=total_mismatches,json=totalMismatches,proto3" json:"total_mismatches,omitempty"`
	TotalIgnoredMismatches int32                    `protobuf:"varint,4,opt,name=total_ignored_mismatches,json=totalIgnoredMismatches,proto3" json:"total_ignored_mismatches,omitempty"`
	TotalVerified          int64                    `protobuf:"varint,3,opt,name=total_verified,json=totalVerified,proto3" json:"total_verified,omitempty"`
}

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

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

func (*Verification) ProtoMessage() {}

func (x *Verification) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Verification.ProtoReflect.Descriptor instead.
func (*Verification) Descriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{5}
}

func (x *Verification) GetMismatches() []*Verification_Mismatch {
	if x != nil {
		return x.Mismatches
	}
	return nil
}

func (x *Verification) GetTotalMismatches() int32 {
	if x != nil {
		return x.TotalMismatches
	}
	return 0
}

func (x *Verification) GetTotalIgnoredMismatches() int32 {
	if x != nil {
		return x.TotalIgnoredMismatches
	}
	return 0
}

func (x *Verification) GetTotalVerified() int64 {
	if x != nil {
		return x.TotalVerified
	}
	return 0
}

type ProxyInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	EventTimes map[string]*command.TimeInterval `protobuf:"bytes,1,rep,name=event_times,json=eventTimes,proto3" json:"event_times,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Metrics    map[string]*Metric               `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Flags      map[string]string                `protobuf:"bytes,3,rep,name=flags,proto3" json:"flags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Stats      []*stat.Stat                     `protobuf:"bytes,4,rep,name=stats,proto3" json:"stats,omitempty"`
	BqStats    map[string]int32                 `protobuf:"bytes,5,rep,name=bq_stats,json=bqStats,proto3" json:"bq_stats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*ProxyInfo) ProtoMessage() {}

func (x *ProxyInfo) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProxyInfo.ProtoReflect.Descriptor instead.
func (*ProxyInfo) Descriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{6}
}

func (x *ProxyInfo) GetEventTimes() map[string]*command.TimeInterval {
	if x != nil {
		return x.EventTimes
	}
	return nil
}

func (x *ProxyInfo) GetMetrics() map[string]*Metric {
	if x != nil {
		return x.Metrics
	}
	return nil
}

func (x *ProxyInfo) GetFlags() map[string]string {
	if x != nil {
		return x.Flags
	}
	return nil
}

func (x *ProxyInfo) GetStats() []*stat.Stat {
	if x != nil {
		return x.Stats
	}
	return nil
}

func (x *ProxyInfo) GetBqStats() map[string]int32 {
	if x != nil {
		return x.BqStats
	}
	return nil
}

type Metric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//
	//	*Metric_Int64Value
	//	*Metric_BoolValue
	//	*Metric_DoubleValue
	Value isMetric_Value `protobuf_oneof:"value"`
}

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

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

func (*Metric) ProtoMessage() {}

func (x *Metric) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Metric.ProtoReflect.Descriptor instead.
func (*Metric) Descriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{7}
}

func (m *Metric) GetValue() isMetric_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *Metric) GetInt64Value() int64 {
	if x, ok := x.GetValue().(*Metric_Int64Value); ok {
		return x.Int64Value
	}
	return 0
}

func (x *Metric) GetBoolValue() bool {
	if x, ok := x.GetValue().(*Metric_BoolValue); ok {
		return x.BoolValue
	}
	return false
}

func (x *Metric) GetDoubleValue() float64 {
	if x, ok := x.GetValue().(*Metric_DoubleValue); ok {
		return x.DoubleValue
	}
	return 0
}

type isMetric_Value interface {
	isMetric_Value()
}

type Metric_Int64Value struct {
	Int64Value int64 `protobuf:"varint,1,opt,name=int64_value,json=int64Value,proto3,oneof"`
}

type Metric_BoolValue struct {
	BoolValue bool `protobuf:"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof"`
}

type Metric_DoubleValue struct {
	DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,proto3,oneof"`
}

func (*Metric_Int64Value) isMetric_Value() {}

func (*Metric_BoolValue) isMetric_Value() {}

func (*Metric_DoubleValue) isMetric_Value() {}

type Verification_Mismatch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Deprecated: Marked as deprecated in api/log/log.proto.
	RemoteDigest string `protobuf:"bytes,2,opt,name=remote_digest,json=remoteDigest,proto3" json:"remote_digest,omitempty"`
	// Deprecated: Marked as deprecated in api/log/log.proto.
	LocalDigest string `protobuf:"bytes,3,opt,name=local_digest,json=localDigest,proto3" json:"local_digest,omitempty"`
	// Deprecated: Marked as deprecated in api/log/log.proto.
	NonDeterministic bool              `protobuf:"varint,4,opt,name=non_deterministic,json=nonDeterministic,proto3" json:"non_deterministic,omitempty"`
	RemoteDigests    []string          `protobuf:"bytes,5,rep,name=remote_digests,json=remoteDigests,proto3" json:"remote_digests,omitempty"`
	ActionDigest     string            `protobuf:"bytes,6,opt,name=action_digest,json=actionDigest,proto3" json:"action_digest,omitempty"`
	LocalDigests     []string          `protobuf:"bytes,7,rep,name=local_digests,json=localDigests,proto3" json:"local_digests,omitempty"`
	Ignored          bool              `protobuf:"varint,8,opt,name=ignored,proto3" json:"ignored,omitempty"`
	Determinism      DeterminismStatus `protobuf:"varint,9,opt,name=determinism,proto3,enum=log.DeterminismStatus" json:"determinism,omitempty"`
	RemoteExitCodes  []int32           `protobuf:"varint,10,rep,packed,name=remote_exit_codes,json=remoteExitCodes,proto3" json:"remote_exit_codes,omitempty"`
	LocalExitCodes   []int32           `protobuf:"varint,11,rep,packed,name=local_exit_codes,json=localExitCodes,proto3" json:"local_exit_codes,omitempty"`
}

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

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

func (*Verification_Mismatch) ProtoMessage() {}

func (x *Verification_Mismatch) ProtoReflect() protoreflect.Message {
	mi := &file_api_log_log_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Verification_Mismatch.ProtoReflect.Descriptor instead.
func (*Verification_Mismatch) Descriptor() ([]byte, []int) {
	return file_api_log_log_proto_rawDescGZIP(), []int{5, 0}
}

func (x *Verification_Mismatch) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

// Deprecated: Marked as deprecated in api/log/log.proto.
func (x *Verification_Mismatch) GetRemoteDigest() string {
	if x != nil {
		return x.RemoteDigest
	}
	return ""
}

// Deprecated: Marked as deprecated in api/log/log.proto.
func (x *Verification_Mismatch) GetLocalDigest() string {
	if x != nil {
		return x.LocalDigest
	}
	return ""
}

// Deprecated: Marked as deprecated in api/log/log.proto.
func (x *Verification_Mismatch) GetNonDeterministic() bool {
	if x != nil {
		return x.NonDeterministic
	}
	return false
}

func (x *Verification_Mismatch) GetRemoteDigests() []string {
	if x != nil {
		return x.RemoteDigests
	}
	return nil
}

func (x *Verification_Mismatch) GetActionDigest() string {
	if x != nil {
		return x.ActionDigest
	}
	return ""
}

func (x *Verification_Mismatch) GetLocalDigests() []string {
	if x != nil {
		return x.LocalDigests
	}
	return nil
}

func (x *Verification_Mismatch) GetIgnored() bool {
	if x != nil {
		return x.Ignored
	}
	return false
}

func (x *Verification_Mismatch) GetDeterminism() DeterminismStatus {
	if x != nil {
		return x.Determinism
	}
	return DeterminismStatus_DETERMINISTIC
}

func (x *Verification_Mismatch) GetRemoteExitCodes() []int32 {
	if x != nil {
		return x.RemoteExitCodes
	}
	return nil
}

func (x *Verification_Mismatch) GetLocalExitCodes() []int32 {
	if x != nil {
		return x.LocalExitCodes
	}
	return nil
}

var File_api_log_log_proto protoreflect.FileDescriptor

var file_api_log_log_proto_rawDesc = []byte{
	0x0a, 0x11, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x67, 0x2f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x03, 0x6c, 0x6f, 0x67, 0x1a, 0x0e, 0x62, 0x71, 0x5f, 0x74, 0x61, 0x62,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x61, 0x74,
	0x2f, 0x73, 0x74, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xae, 0x02, 0x0a, 0x09,
	0x4c, 0x6f, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x07, 0x63, 0x6f, 0x6d,
	0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x63, 0x6d, 0x64,
	0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
	0x64, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6d, 0x64, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a,
	0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x6d,
	0x6f, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x72, 0x65, 0x6d,
	0x6f, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0e, 0x6c,
	0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69,
	0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
	0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x10, 0xea, 0x3f, 0x0d, 0x0a,
	0x0b, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x22, 0x33, 0x0a, 0x07,
	0x4c, 0x6f, 0x67, 0x44, 0x75, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72,
	0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x4c,
	0x6f, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
	0x73, 0x22, 0xbe, 0x06, 0x0a, 0x0d, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x2a, 0x0a,
	0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x63, 0x6d, 0x64, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x75, 0x6d,
	0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69,
	0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75,
	0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x70,
	0x75, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x70, 0x75,
	0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x06,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46,
	0x69, 0x6c, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x11, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73,
	0x74, 0x73, 0x12, 0x68, 0x0a, 0x18, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72,
	0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x07,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65,
	0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x18,
	0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x6f,
	0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16,
	0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x44, 0x6f, 0x77, 0x6e,
	0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x62,
	0x79, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x72, 0x65, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73,
	0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x65, 0x76,
	0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x22, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x1a,
	0x44, 0x0a, 0x16, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x67,
	0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x1b, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x1a, 0x50, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6d, 0x64, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49,
	0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0xe2, 0x0c, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6d, 0x64, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
	0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x61, 0x63, 0x68, 0x65, 0x48, 0x69, 0x74, 0x12, 0x26,
	0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65,
	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73,
	0x12, 0x34, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x14, 0x6e, 0x75, 0x6d, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
	0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f,
	0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f,
	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74,
	0x12, 0x44, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18,
	0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x6d, 0x6f,
	0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74,
	0x54, 0x69, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e,
	0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61,
	0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64,
	0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13,
	0x72, 0x65, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61,
	0x64, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x72, 0x65, 0x61, 0x6c, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18,
	0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x6f,
	0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16,
	0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x44, 0x6f, 0x77, 0x6e,
	0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x62,
	0x79, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18,
	0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x72, 0x65, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73,
	0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0e, 0x72, 0x65,
	0x72, 0x75, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x4d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5a, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f,
	0x66, 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x12, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69,
	0x6c, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11,
	0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74,
	0x73, 0x12, 0x69, 0x0a, 0x18, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65,
	0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x13, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65,
	0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d,
	0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x14, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73,
	0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x67, 0x65,
	0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74,
	0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x12, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69,
	0x61, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72,
	0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11,
	0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x12, 0x6a, 0x0a, 0x19, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65,
	0x5f, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x17,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74,
	0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x46, 0x69, 0x6c, 0x65, 0x49, 0x73, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c,
	0x65, 0x49, 0x73, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x50, 0x0a,
	0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6d, 0x64, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65,
	0x72, 0x76, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x44, 0x0a, 0x16, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x67,
	0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x1b, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x1a, 0x44, 0x0a, 0x16, 0x41, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x1b, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x46, 0x69, 0x6c, 0x65, 0x49, 0x73, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x22, 0xb6, 0x05, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x61,
	0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6d, 0x64, 0x2e,
	0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65,
	0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x6c, 0x79,
	0x12, 0x26, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f,
	0x68, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x43, 0x61, 0x63, 0x68, 0x65, 0x48, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x35, 0x0a,
	0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x6f, 0x67, 0x2e,
	0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76,
	0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65,
	0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x65, 0x6e, 0x76,
	0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23,
	0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
	0x12, 0x36, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x1e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x72, 0x65, 0x72, 0x75,
	0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x12, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x1a, 0x50, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6d, 0x64, 0x2e, 0x54, 0x69,
	0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e,
	0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0x93, 0x05, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x3a, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63,
	0x68, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x29, 0x0a,
	0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x69,
	0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74,
	0x63, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68,
	0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x69,
	0x66, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x1a, 0xba, 0x03, 0x0a, 0x08, 0x4d, 0x69,
	0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x65,
	0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x69, 0x67,
	0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x67,
	0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6c,
	0x6f, 0x63, 0x61, 0x6c, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x6e, 0x6f,
	0x6e, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x6e, 0x6f, 0x6e, 0x44, 0x65,
	0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x72,
	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73,
	0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x67,
	0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
	0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c,
	0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07,
	0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69,
	0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d,
	0x69, 0x6e, 0x69, 0x73, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6c, 0x6f,
	0x67, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x6d, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x52, 0x0b, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x6d,
	0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f,
	0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x6d,
	0x6f, 0x74, 0x65, 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10,
	0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73,
	0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x69,
	0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x22, 0xa0, 0x04, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x79,
	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e,
	0x50, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74,
	0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x50, 0x72, 0x6f,
	0x78, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2f, 0x0a, 0x05,
	0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x6f,
	0x67, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x46, 0x6c, 0x61, 0x67,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a,
	0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x73,
	0x74, 0x61, 0x74, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
	0x12, 0x36, 0x0a, 0x08, 0x62, 0x71, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x6e,
	0x66, 0x6f, 0x2e, 0x42, 0x71, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x07, 0x62, 0x71, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x50, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e,
	0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63,
	0x6d, 0x64, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x47, 0x0a, 0x0c, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6c, 0x6f,
	0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a,
	0x0c, 0x42, 0x71, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7a, 0x0a, 0x06, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x12, 0x21, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x36,
	0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f,
	0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c,
	0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52,
	0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xbe, 0x02, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
	0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54,
	0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14,
	0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x48,
	0x49, 0x54, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52,
	0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x10,
	0x02, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x43, 0x41,
	0x4c, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16,
	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, 0x58, 0x45,
	0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x41, 0x54,
	0x55, 0x53, 0x5f, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10,
	0x05, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x41, 0x43, 0x49,
	0x4e, 0x47, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x53,
	0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49,
	0x4c, 0x55, 0x52, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
	0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x08,
	0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x5a,
	0x45, 0x52, 0x4f, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54,
	0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x0a, 0x12, 0x16,
	0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55,
	0x50, 0x54, 0x45, 0x44, 0x10, 0x0b, 0x2a, 0x68, 0x0a, 0x11, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d,
	0x69, 0x6e, 0x69, 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x11, 0x0a, 0x0d, 0x44,
	0x45, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x54, 0x49, 0x43, 0x10, 0x00, 0x12, 0x15,
	0x0a, 0x11, 0x4e, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x49, 0x53,
	0x54, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
	0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x4e,
	0x5f, 0x44, 0x45, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x54, 0x49, 0x43, 0x10, 0x03,
	0x42, 0x28, 0x5a, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62,
	0x61, 0x7a, 0x65, 0x6c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x72, 0x65, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x33,
}

var (
	file_api_log_log_proto_rawDescOnce sync.Once
	file_api_log_log_proto_rawDescData = file_api_log_log_proto_rawDesc
)

func file_api_log_log_proto_rawDescGZIP() []byte {
	file_api_log_log_proto_rawDescOnce.Do(func() {
		file_api_log_log_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_log_log_proto_rawDescData)
	})
	return file_api_log_log_proto_rawDescData
}

var file_api_log_log_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_api_log_log_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
var file_api_log_log_proto_goTypes = []interface{}{
	(CompletionStatus)(0),         // 0: log.CompletionStatus
	(DeterminismStatus)(0),        // 1: log.DeterminismStatus
	(*LogRecord)(nil),             // 2: log.LogRecord
	(*LogDump)(nil),               // 3: log.LogDump
	(*RerunMetadata)(nil),         // 4: log.RerunMetadata
	(*RemoteMetadata)(nil),        // 5: log.RemoteMetadata
	(*LocalMetadata)(nil),         // 6: log.LocalMetadata
	(*Verification)(nil),          // 7: log.Verification
	(*ProxyInfo)(nil),             // 8: log.ProxyInfo
	(*Metric)(nil),                // 9: log.Metric
	nil,                           // 10: log.RerunMetadata.OutputFileDigestsEntry
	nil,                           // 11: log.RerunMetadata.OutputDirectoryDigestsEntry
	nil,                           // 12: log.RerunMetadata.EventTimesEntry
	nil,                           // 13: log.RemoteMetadata.EventTimesEntry
	nil,                           // 14: log.RemoteMetadata.OutputFileDigestsEntry
	nil,                           // 15: log.RemoteMetadata.OutputDirectoryDigestsEntry
	nil,                           // 16: log.RemoteMetadata.AuxiliaryMetadataEntry
	nil,                           // 17: log.RemoteMetadata.OutputFileIsExecutableEntry
	nil,                           // 18: log.LocalMetadata.EventTimesEntry
	nil,                           // 19: log.LocalMetadata.EnvironmentEntry
	nil,                           // 20: log.LocalMetadata.LabelsEntry
	(*Verification_Mismatch)(nil), // 21: log.Verification.Mismatch
	nil,                           // 22: log.ProxyInfo.EventTimesEntry
	nil,                           // 23: log.ProxyInfo.MetricsEntry
	nil,                           // 24: log.ProxyInfo.FlagsEntry
	nil,                           // 25: log.ProxyInfo.BqStatsEntry
	(*command.Command)(nil),       // 26: cmd.Command
	(*command.CommandResult)(nil), // 27: cmd.CommandResult
	(*stat.Stat)(nil),             // 28: stats.Stat
	(*command.TimeInterval)(nil),  // 29: cmd.TimeInterval
}
var file_api_log_log_proto_depIdxs = []int32{
	26, // 0: log.LogRecord.command:type_name -> cmd.Command
	27, // 1: log.LogRecord.result:type_name -> cmd.CommandResult
	5,  // 2: log.LogRecord.remote_metadata:type_name -> log.RemoteMetadata
	6,  // 3: log.LogRecord.local_metadata:type_name -> log.LocalMetadata
	0,  // 4: log.LogRecord.completion_status:type_name -> log.CompletionStatus
	2,  // 5: log.LogDump.records:type_name -> log.LogRecord
	27, // 6: log.RerunMetadata.result:type_name -> cmd.CommandResult
	10, // 7: log.RerunMetadata.output_file_digests:type_name -> log.RerunMetadata.OutputFileDigestsEntry
	11, // 8: log.RerunMetadata.output_directory_digests:type_name -> log.RerunMetadata.OutputDirectoryDigestsEntry
	12, // 9: log.RerunMetadata.event_times:type_name -> log.RerunMetadata.EventTimesEntry
	27, // 10: log.RemoteMetadata.result:type_name -> cmd.CommandResult
	13, // 11: log.RemoteMetadata.event_times:type_name -> log.RemoteMetadata.EventTimesEntry
	4,  // 12: log.RemoteMetadata.rerun_metadata:type_name -> log.RerunMetadata
	14, // 13: log.RemoteMetadata.output_file_digests:type_name -> log.RemoteMetadata.OutputFileDigestsEntry
	15, // 14: log.RemoteMetadata.output_directory_digests:type_name -> log.RemoteMetadata.OutputDirectoryDigestsEntry
	16, // 15: log.RemoteMetadata.auxiliary_metadata:type_name -> log.RemoteMetadata.AuxiliaryMetadataEntry
	17, // 16: log.RemoteMetadata.output_file_is_executable:type_name -> log.RemoteMetadata.OutputFileIsExecutableEntry
	27, // 17: log.LocalMetadata.result:type_name -> cmd.CommandResult
	7,  // 18: log.LocalMetadata.verification:type_name -> log.Verification
	18, // 19: log.LocalMetadata.event_times:type_name -> log.LocalMetadata.EventTimesEntry
	19, // 20: log.LocalMetadata.environment:type_name -> log.LocalMetadata.EnvironmentEntry
	20, // 21: log.LocalMetadata.labels:type_name -> log.LocalMetadata.LabelsEntry
	4,  // 22: log.LocalMetadata.rerun_metadata:type_name -> log.RerunMetadata
	21, // 23: log.Verification.mismatches:type_name -> log.Verification.Mismatch
	22, // 24: log.ProxyInfo.event_times:type_name -> log.ProxyInfo.EventTimesEntry
	23, // 25: log.ProxyInfo.metrics:type_name -> log.ProxyInfo.MetricsEntry
	24, // 26: log.ProxyInfo.flags:type_name -> log.ProxyInfo.FlagsEntry
	28, // 27: log.ProxyInfo.stats:type_name -> stats.Stat
	25, // 28: log.ProxyInfo.bq_stats:type_name -> log.ProxyInfo.BqStatsEntry
	29, // 29: log.RerunMetadata.EventTimesEntry.value:type_name -> cmd.TimeInterval
	29, // 30: log.RemoteMetadata.EventTimesEntry.value:type_name -> cmd.TimeInterval
	29, // 31: log.LocalMetadata.EventTimesEntry.value:type_name -> cmd.TimeInterval
	1,  // 32: log.Verification.Mismatch.determinism:type_name -> log.DeterminismStatus
	29, // 33: log.ProxyInfo.EventTimesEntry.value:type_name -> cmd.TimeInterval
	9,  // 34: log.ProxyInfo.MetricsEntry.value:type_name -> log.Metric
	35, // [35:35] is the sub-list for method output_type
	35, // [35:35] is the sub-list for method input_type
	35, // [35:35] is the sub-list for extension type_name
	35, // [35:35] is the sub-list for extension extendee
	0,  // [0:35] is the sub-list for field type_name
}

func init() { file_api_log_log_proto_init() }
func file_api_log_log_proto_init() {
	if File_api_log_log_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_api_log_log_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LogRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_log_log_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LogDump); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_log_log_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RerunMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_log_log_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoteMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_log_log_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LocalMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_log_log_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Verification); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_log_log_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProxyInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_log_log_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Metric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_log_log_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Verification_Mismatch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_api_log_log_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*Metric_Int64Value)(nil),
		(*Metric_BoolValue)(nil),
		(*Metric_DoubleValue)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_api_log_log_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   24,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_api_log_log_proto_goTypes,
		DependencyIndexes: file_api_log_log_proto_depIdxs,
		EnumInfos:         file_api_log_log_proto_enumTypes,
		MessageInfos:      file_api_log_log_proto_msgTypes,
	}.Build()
	File_api_log_log_proto = out.File
	file_api_log_log_proto_rawDesc = nil
	file_api_log_log_proto_goTypes = nil
	file_api_log_log_proto_depIdxs = nil
}
