// Copyright 2019 Google LLC
//
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//https://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
//==============================================================================

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.15.8
// source: ml_metadata/proto/metadata_store.proto

package ml_metadata

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoiface "google.golang.org/protobuf/runtime/protoiface"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
	anypb "google.golang.org/protobuf/types/known/anypb"
	structpb "google.golang.org/protobuf/types/known/structpb"
	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)
)

// The list of supported property value types.
type PropertyType int32

const (
	PropertyType_UNKNOWN PropertyType = 0
	PropertyType_INT     PropertyType = 1
	PropertyType_DOUBLE  PropertyType = 2
	PropertyType_STRING  PropertyType = 3
	// Prefer to use `PROTO` to store structed data since this option has
	// inefficient database storage usage.
	PropertyType_STRUCT  PropertyType = 4
	PropertyType_PROTO   PropertyType = 5
	PropertyType_BOOLEAN PropertyType = 6
)

// Enum value maps for PropertyType.
var (
	PropertyType_name = map[int32]string{
		0: "UNKNOWN",
		1: "INT",
		2: "DOUBLE",
		3: "STRING",
		4: "STRUCT",
		5: "PROTO",
		6: "BOOLEAN",
	}
	PropertyType_value = map[string]int32{
		"UNKNOWN": 0,
		"INT":     1,
		"DOUBLE":  2,
		"STRING":  3,
		"STRUCT":  4,
		"PROTO":   5,
		"BOOLEAN": 6,
	}
)

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

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

func (PropertyType) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[0].Descriptor()
}

func (PropertyType) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[0]
}

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

// Deprecated: Do not use.
func (x *PropertyType) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = PropertyType(num)
	return nil
}

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

type Artifact_State int32

const (
	Artifact_UNKNOWN Artifact_State = 0
	// A state indicating that the artifact may exist.
	Artifact_PENDING Artifact_State = 1
	// A state indicating that the artifact should exist, unless something
	// external to the system deletes it.
	Artifact_LIVE Artifact_State = 2
	// A state indicating that the artifact should be deleted.
	Artifact_MARKED_FOR_DELETION Artifact_State = 3
	// A state indicating that the artifact has been deleted.
	Artifact_DELETED Artifact_State = 4
	// A state indicating that the artifact has been abandoned, which may be
	// due to a failed or cancelled execution.
	Artifact_ABANDONED Artifact_State = 5
	// A state indicating that the artifact is a reference artifact. At
	// execution start time, the orchestrator produces an output artifact for
	// each output key with state PENDING. However, for an intermediate
	// artifact, this first artifact's state will be REFERENCE. Intermediate
	// artifacts emitted during a component's execution will copy the REFERENCE
	// artifact's attributes. At the end of an execution, the artifact state
	// should remain REFERENCE instead of being changed to LIVE.
	Artifact_REFERENCE Artifact_State = 6
)

// Enum value maps for Artifact_State.
var (
	Artifact_State_name = map[int32]string{
		0: "UNKNOWN",
		1: "PENDING",
		2: "LIVE",
		3: "MARKED_FOR_DELETION",
		4: "DELETED",
		5: "ABANDONED",
		6: "REFERENCE",
	}
	Artifact_State_value = map[string]int32{
		"UNKNOWN":             0,
		"PENDING":             1,
		"LIVE":                2,
		"MARKED_FOR_DELETION": 3,
		"DELETED":             4,
		"ABANDONED":           5,
		"REFERENCE":           6,
	}
)

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

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

func (Artifact_State) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[1].Descriptor()
}

func (Artifact_State) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[1]
}

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

// Deprecated: Do not use.
func (x *Artifact_State) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = Artifact_State(num)
	return nil
}

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

// An enum of system-defined artifact types.
type ArtifactType_SystemDefinedBaseType int32

const (
	ArtifactType_UNSET      ArtifactType_SystemDefinedBaseType = 0
	ArtifactType_DATASET    ArtifactType_SystemDefinedBaseType = 1
	ArtifactType_MODEL      ArtifactType_SystemDefinedBaseType = 2
	ArtifactType_METRICS    ArtifactType_SystemDefinedBaseType = 3
	ArtifactType_STATISTICS ArtifactType_SystemDefinedBaseType = 4
)

// Enum value maps for ArtifactType_SystemDefinedBaseType.
var (
	ArtifactType_SystemDefinedBaseType_name = map[int32]string{
		0: "UNSET",
		1: "DATASET",
		2: "MODEL",
		3: "METRICS",
		4: "STATISTICS",
	}
	ArtifactType_SystemDefinedBaseType_value = map[string]int32{
		"UNSET":      0,
		"DATASET":    1,
		"MODEL":      2,
		"METRICS":    3,
		"STATISTICS": 4,
	}
)

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

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

func (ArtifactType_SystemDefinedBaseType) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[2].Descriptor()
}

func (ArtifactType_SystemDefinedBaseType) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[2]
}

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

// Deprecated: Do not use.
func (x *ArtifactType_SystemDefinedBaseType) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ArtifactType_SystemDefinedBaseType(num)
	return nil
}

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

// Events distinguish between an artifact that is written by the execution
// (possibly as a cache), versus artifacts that are part of the declared
// output of the Execution. For more information on what DECLARED_ means,
// see the comment on the message.
type Event_Type int32

const (
	Event_UNKNOWN         Event_Type = 0
	Event_DECLARED_OUTPUT Event_Type = 1 // A declared output of the execution.
	Event_DECLARED_INPUT  Event_Type = 2 // A declared input of the execution.
	Event_INPUT           Event_Type = 3 // An input of the execution.
	Event_OUTPUT          Event_Type = 4 // An output of the execution.
	Event_INTERNAL_INPUT  Event_Type = 5 // An internal input of the execution.
	Event_INTERNAL_OUTPUT Event_Type = 6 // An internal output of the execution.
	Event_PENDING_OUTPUT  Event_Type = 7 // A pending output of the execution.
)

// Enum value maps for Event_Type.
var (
	Event_Type_name = map[int32]string{
		0: "UNKNOWN",
		1: "DECLARED_OUTPUT",
		2: "DECLARED_INPUT",
		3: "INPUT",
		4: "OUTPUT",
		5: "INTERNAL_INPUT",
		6: "INTERNAL_OUTPUT",
		7: "PENDING_OUTPUT",
	}
	Event_Type_value = map[string]int32{
		"UNKNOWN":         0,
		"DECLARED_OUTPUT": 1,
		"DECLARED_INPUT":  2,
		"INPUT":           3,
		"OUTPUT":          4,
		"INTERNAL_INPUT":  5,
		"INTERNAL_OUTPUT": 6,
		"PENDING_OUTPUT":  7,
	}
)

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

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

func (Event_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[3].Descriptor()
}

func (Event_Type) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[3]
}

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

// Deprecated: Do not use.
func (x *Event_Type) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = Event_Type(num)
	return nil
}

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

// The state of the Execution. The state transitions are
//   NEW -> RUNNING -> COMPLETE | CACHED | FAILED | CANCELED
// CACHED means the execution is skipped due to cached results.
// CANCELED means the execution is skipped due to precondition not met. It is
// different from CACHED in that a CANCELED execution will not have any event
// associated with it. It is different from FAILED in that there is no
// unexpected error happened and it is regarded as a normal state.
type Execution_State int32

const (
	Execution_UNKNOWN  Execution_State = 0
	Execution_NEW      Execution_State = 1
	Execution_RUNNING  Execution_State = 2
	Execution_COMPLETE Execution_State = 3
	Execution_FAILED   Execution_State = 4
	Execution_CACHED   Execution_State = 5
	Execution_CANCELED Execution_State = 6
)

// Enum value maps for Execution_State.
var (
	Execution_State_name = map[int32]string{
		0: "UNKNOWN",
		1: "NEW",
		2: "RUNNING",
		3: "COMPLETE",
		4: "FAILED",
		5: "CACHED",
		6: "CANCELED",
	}
	Execution_State_value = map[string]int32{
		"UNKNOWN":  0,
		"NEW":      1,
		"RUNNING":  2,
		"COMPLETE": 3,
		"FAILED":   4,
		"CACHED":   5,
		"CANCELED": 6,
	}
)

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

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

func (Execution_State) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[4].Descriptor()
}

func (Execution_State) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[4]
}

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

// Deprecated: Do not use.
func (x *Execution_State) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = Execution_State(num)
	return nil
}

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

// An enum of system-defined execution types.
type ExecutionType_SystemDefinedBaseType int32

const (
	ExecutionType_UNSET     ExecutionType_SystemDefinedBaseType = 0
	ExecutionType_TRAIN     ExecutionType_SystemDefinedBaseType = 1
	ExecutionType_TRANSFORM ExecutionType_SystemDefinedBaseType = 2
	ExecutionType_PROCESS   ExecutionType_SystemDefinedBaseType = 3
	ExecutionType_EVALUATE  ExecutionType_SystemDefinedBaseType = 4
	ExecutionType_DEPLOY    ExecutionType_SystemDefinedBaseType = 5
)

// Enum value maps for ExecutionType_SystemDefinedBaseType.
var (
	ExecutionType_SystemDefinedBaseType_name = map[int32]string{
		0: "UNSET",
		1: "TRAIN",
		2: "TRANSFORM",
		3: "PROCESS",
		4: "EVALUATE",
		5: "DEPLOY",
	}
	ExecutionType_SystemDefinedBaseType_value = map[string]int32{
		"UNSET":     0,
		"TRAIN":     1,
		"TRANSFORM": 2,
		"PROCESS":   3,
		"EVALUATE":  4,
		"DEPLOY":    5,
	}
)

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

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

func (ExecutionType_SystemDefinedBaseType) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[5].Descriptor()
}

func (ExecutionType_SystemDefinedBaseType) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[5]
}

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

// Deprecated: Do not use.
func (x *ExecutionType_SystemDefinedBaseType) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ExecutionType_SystemDefinedBaseType(num)
	return nil
}

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

// An enum of system-defined context types.
type ContextType_SystemDefinedBaseType int32

const (
	ContextType_UNSET ContextType_SystemDefinedBaseType = 0
)

// Enum value maps for ContextType_SystemDefinedBaseType.
var (
	ContextType_SystemDefinedBaseType_name = map[int32]string{
		0: "UNSET",
	}
	ContextType_SystemDefinedBaseType_value = map[string]int32{
		"UNSET": 0,
	}
)

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

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

func (ContextType_SystemDefinedBaseType) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[6].Descriptor()
}

func (ContextType_SystemDefinedBaseType) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[6]
}

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

// Deprecated: Do not use.
func (x *ContextType_SystemDefinedBaseType) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ContextType_SystemDefinedBaseType(num)
	return nil
}

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

// Connection parameters for SQLite3 based metadata source.
type SqliteMetadataSourceConfig_ConnectionMode int32

const (
	SqliteMetadataSourceConfig_UNKNOWN SqliteMetadataSourceConfig_ConnectionMode = 0
	// Connect a metadata source in read-only mode. Connection fail if the
	// sqlite3 database at the `filename` does not exist. Any queries modifying
	// the database fail.
	SqliteMetadataSourceConfig_READONLY SqliteMetadataSourceConfig_ConnectionMode = 1
	// Connect a metadata source in read/write mode. Connection fail if the
	// sqlite3 database at the `filename` does not exist.
	SqliteMetadataSourceConfig_READWRITE SqliteMetadataSourceConfig_ConnectionMode = 2
	// Similar to READWRITE. In addition, it creates the database if it does not
	// exist.
	SqliteMetadataSourceConfig_READWRITE_OPENCREATE SqliteMetadataSourceConfig_ConnectionMode = 3
)

// Enum value maps for SqliteMetadataSourceConfig_ConnectionMode.
var (
	SqliteMetadataSourceConfig_ConnectionMode_name = map[int32]string{
		0: "UNKNOWN",
		1: "READONLY",
		2: "READWRITE",
		3: "READWRITE_OPENCREATE",
	}
	SqliteMetadataSourceConfig_ConnectionMode_value = map[string]int32{
		"UNKNOWN":              0,
		"READONLY":             1,
		"READWRITE":            2,
		"READWRITE_OPENCREATE": 3,
	}
)

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

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

func (SqliteMetadataSourceConfig_ConnectionMode) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[7].Descriptor()
}

func (SqliteMetadataSourceConfig_ConnectionMode) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[7]
}

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

// Deprecated: Do not use.
func (x *SqliteMetadataSourceConfig_ConnectionMode) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = SqliteMetadataSourceConfig_ConnectionMode(num)
	return nil
}

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

// Supported fields for Ordering.
type ListOperationOptions_OrderByField_Field int32

const (
	ListOperationOptions_OrderByField_FIELD_UNSPECIFIED ListOperationOptions_OrderByField_Field = 0
	ListOperationOptions_OrderByField_CREATE_TIME       ListOperationOptions_OrderByField_Field = 1
	ListOperationOptions_OrderByField_LAST_UPDATE_TIME  ListOperationOptions_OrderByField_Field = 2
	ListOperationOptions_OrderByField_ID                ListOperationOptions_OrderByField_Field = 3
)

// Enum value maps for ListOperationOptions_OrderByField_Field.
var (
	ListOperationOptions_OrderByField_Field_name = map[int32]string{
		0: "FIELD_UNSPECIFIED",
		1: "CREATE_TIME",
		2: "LAST_UPDATE_TIME",
		3: "ID",
	}
	ListOperationOptions_OrderByField_Field_value = map[string]int32{
		"FIELD_UNSPECIFIED": 0,
		"CREATE_TIME":       1,
		"LAST_UPDATE_TIME":  2,
		"ID":                3,
	}
)

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

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

func (ListOperationOptions_OrderByField_Field) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[8].Descriptor()
}

func (ListOperationOptions_OrderByField_Field) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[8]
}

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

// Deprecated: Do not use.
func (x *ListOperationOptions_OrderByField_Field) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ListOperationOptions_OrderByField_Field(num)
	return nil
}

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

type LineageSubgraphQueryOptions_Direction int32

const (
	// Direction is by defult DIRECTION_UNSPECIFIED, which is equivalent to
	// BIDIRECTIONAL.
	LineageSubgraphQueryOptions_DIRECTION_UNSPECIFIED LineageSubgraphQueryOptions_Direction = 0
	// Indicates tracing the lineage graph by hops in upstream direction.
	LineageSubgraphQueryOptions_UPSTREAM LineageSubgraphQueryOptions_Direction = 1
	// Indicates tracing the lineage graph by hops in downstream direction.
	LineageSubgraphQueryOptions_DOWNSTREAM LineageSubgraphQueryOptions_Direction = 2
	// Indicates tracing the lineage graph in both directions.
	LineageSubgraphQueryOptions_BIDIRECTIONAL LineageSubgraphQueryOptions_Direction = 3
)

// Enum value maps for LineageSubgraphQueryOptions_Direction.
var (
	LineageSubgraphQueryOptions_Direction_name = map[int32]string{
		0: "DIRECTION_UNSPECIFIED",
		1: "UPSTREAM",
		2: "DOWNSTREAM",
		3: "BIDIRECTIONAL",
	}
	LineageSubgraphQueryOptions_Direction_value = map[string]int32{
		"DIRECTION_UNSPECIFIED": 0,
		"UPSTREAM":              1,
		"DOWNSTREAM":            2,
		"BIDIRECTIONAL":         3,
	}
)

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

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

func (LineageSubgraphQueryOptions_Direction) Descriptor() protoreflect.EnumDescriptor {
	return file_ml_metadata_proto_metadata_store_proto_enumTypes[9].Descriptor()
}

func (LineageSubgraphQueryOptions_Direction) Type() protoreflect.EnumType {
	return &file_ml_metadata_proto_metadata_store_proto_enumTypes[9]
}

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

// Deprecated: Do not use.
func (x *LineageSubgraphQueryOptions_Direction) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = LineageSubgraphQueryOptions_Direction(num)
	return nil
}

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

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

	// The name of a system defined type.
	TypeName *string `protobuf:"bytes,1,opt,name=type_name,json=typeName" json:"type_name,omitempty"`
}

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

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

func (*SystemTypeExtension) ProtoMessage() {}

func (x *SystemTypeExtension) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 SystemTypeExtension.ProtoReflect.Descriptor instead.
func (*SystemTypeExtension) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{0}
}

func (x *SystemTypeExtension) GetTypeName() string {
	if x != nil && x.TypeName != nil {
		return *x.TypeName
	}
	return ""
}

// A value in properties.
type Value struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//	*Value_IntValue
	//	*Value_DoubleValue
	//	*Value_StringValue
	//	*Value_StructValue
	//	*Value_ProtoValue
	//	*Value_BoolValue
	Value isValue_Value `protobuf_oneof:"value"`
}

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

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

func (*Value) ProtoMessage() {}

func (x *Value) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 Value.ProtoReflect.Descriptor instead.
func (*Value) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{1}
}

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

func (x *Value) GetIntValue() int64 {
	if x, ok := x.GetValue().(*Value_IntValue); ok {
		return x.IntValue
	}
	return 0
}

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

func (x *Value) GetStringValue() string {
	if x, ok := x.GetValue().(*Value_StringValue); ok {
		return x.StringValue
	}
	return ""
}

func (x *Value) GetStructValue() *structpb.Struct {
	if x, ok := x.GetValue().(*Value_StructValue); ok {
		return x.StructValue
	}
	return nil
}

func (x *Value) GetProtoValue() *anypb.Any {
	if x, ok := x.GetValue().(*Value_ProtoValue); ok {
		return x.ProtoValue
	}
	return nil
}

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

type isValue_Value interface {
	isValue_Value()
}

type Value_IntValue struct {
	IntValue int64 `protobuf:"varint,1,opt,name=int_value,json=intValue,oneof"`
}

type Value_DoubleValue struct {
	DoubleValue float64 `protobuf:"fixed64,2,opt,name=double_value,json=doubleValue,oneof"`
}

type Value_StringValue struct {
	StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,oneof"`
}

type Value_StructValue struct {
	StructValue *structpb.Struct `protobuf:"bytes,4,opt,name=struct_value,json=structValue,oneof"`
}

type Value_ProtoValue struct {
	ProtoValue *anypb.Any `protobuf:"bytes,5,opt,name=proto_value,json=protoValue,oneof"`
}

type Value_BoolValue struct {
	BoolValue bool `protobuf:"varint,6,opt,name=bool_value,json=boolValue,oneof"`
}

func (*Value_IntValue) isValue_Value() {}

func (*Value_DoubleValue) isValue_Value() {}

func (*Value_StringValue) isValue_Value() {}

func (*Value_StructValue) isValue_Value() {}

func (*Value_ProtoValue) isValue_Value() {}

func (*Value_BoolValue) isValue_Value() {}

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

	// Output only. The unique server generated id of the artifact.
	Id *int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	// The client provided name of the artifact. This field is optional. If set,
	// it must be unique among all the artifacts of the same artifact type within
	// a database instance and cannot be changed once set.
	Name *string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"`
	// The id of an ArtifactType. This needs to be specified when an artifact is
	// created, and it cannot be changed.
	TypeId *int64 `protobuf:"varint,2,opt,name=type_id,json=typeId" json:"type_id,omitempty"`
	// Output only. The name of an ArtifactType.
	Type *string `protobuf:"bytes,8,opt,name=type" json:"type,omitempty"`
	// The uniform resource identifier of the physical artifact.
	// May be empty if there is no physical artifact.
	Uri *string `protobuf:"bytes,3,opt,name=uri" json:"uri,omitempty"`
	// The external id that come from the clients’ system. This field is optional.
	// If set, it must be unique among all artifacts within a database instance.
	ExternalId *string `protobuf:"bytes,11,opt,name=external_id,json=externalId" json:"external_id,omitempty"`
	// Properties of the artifact.
	// Properties must be specified in the ArtifactType.
	Properties map[string]*Value `protobuf:"bytes,4,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// User provided custom properties which are not defined by its type.
	CustomProperties map[string]*Value `protobuf:"bytes,5,rep,name=custom_properties,json=customProperties" json:"custom_properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// The state of the artifact known to the system.
	State *Artifact_State `protobuf:"varint,6,opt,name=state,enum=ml_metadata.Artifact_State" json:"state,omitempty"`
	// Output only. Create time of the artifact in millisecond since epoch.
	CreateTimeSinceEpoch *int64 `protobuf:"varint,9,opt,name=create_time_since_epoch,json=createTimeSinceEpoch" json:"create_time_since_epoch,omitempty"`
	// Output only. Last update time of the artifact since epoch in millisecond
	// since epoch.
	LastUpdateTimeSinceEpoch *int64 `protobuf:"varint,10,opt,name=last_update_time_since_epoch,json=lastUpdateTimeSinceEpoch" json:"last_update_time_since_epoch,omitempty"`
	// Output only.
	SystemMetadata *anypb.Any `protobuf:"bytes,12,opt,name=system_metadata,json=systemMetadata" json:"system_metadata,omitempty"`
}

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

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

func (*Artifact) ProtoMessage() {}

func (x *Artifact) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 Artifact.ProtoReflect.Descriptor instead.
func (*Artifact) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{2}
}

func (x *Artifact) GetId() int64 {
	if x != nil && x.Id != nil {
		return *x.Id
	}
	return 0
}

func (x *Artifact) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Artifact) GetTypeId() int64 {
	if x != nil && x.TypeId != nil {
		return *x.TypeId
	}
	return 0
}

func (x *Artifact) GetType() string {
	if x != nil && x.Type != nil {
		return *x.Type
	}
	return ""
}

func (x *Artifact) GetUri() string {
	if x != nil && x.Uri != nil {
		return *x.Uri
	}
	return ""
}

func (x *Artifact) GetExternalId() string {
	if x != nil && x.ExternalId != nil {
		return *x.ExternalId
	}
	return ""
}

func (x *Artifact) GetProperties() map[string]*Value {
	if x != nil {
		return x.Properties
	}
	return nil
}

func (x *Artifact) GetCustomProperties() map[string]*Value {
	if x != nil {
		return x.CustomProperties
	}
	return nil
}

func (x *Artifact) GetState() Artifact_State {
	if x != nil && x.State != nil {
		return *x.State
	}
	return Artifact_UNKNOWN
}

func (x *Artifact) GetCreateTimeSinceEpoch() int64 {
	if x != nil && x.CreateTimeSinceEpoch != nil {
		return *x.CreateTimeSinceEpoch
	}
	return 0
}

func (x *Artifact) GetLastUpdateTimeSinceEpoch() int64 {
	if x != nil && x.LastUpdateTimeSinceEpoch != nil {
		return *x.LastUpdateTimeSinceEpoch
	}
	return 0
}

func (x *Artifact) GetSystemMetadata() *anypb.Any {
	if x != nil {
		return x.SystemMetadata
	}
	return nil
}

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

	// The id of the type. 1-1 relationship between type names and IDs.
	Id *int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	// The name of the type. It must be unique among ArtifactTypes within a
	// database instance.
	Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
	// An optional version of the type. An empty string is treated as unset.
	Version *string `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
	// An optional description about the type.
	Description *string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
	// The external id that come from the clients’ system. This field is optional.
	// If set, it must be unique among all artifact types within a database
	// instance.
	ExternalId *string `protobuf:"bytes,7,opt,name=external_id,json=externalId" json:"external_id,omitempty"`
	// The schema of the type.
	// Properties are always optional in the artifact.
	// Properties of an artifact type can be expanded but not contracted (i.e.,
	// you can add columns but not remove them).
	Properties map[string]PropertyType `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=ml_metadata.PropertyType"`
	// An optional system defined base_type expressing the intent of the current
	// type. This field is useful for the tool builders to utilize the stored MLMD
	// information, e.g., `MyModel` ArtifactType could set base_type = MODEL.
	BaseType *ArtifactType_SystemDefinedBaseType `protobuf:"varint,6,opt,name=base_type,json=baseType,enum=ml_metadata.ArtifactType_SystemDefinedBaseType" json:"base_type,omitempty"`
}

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

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

func (*ArtifactType) ProtoMessage() {}

func (x *ArtifactType) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 ArtifactType.ProtoReflect.Descriptor instead.
func (*ArtifactType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{3}
}

func (x *ArtifactType) GetId() int64 {
	if x != nil && x.Id != nil {
		return *x.Id
	}
	return 0
}

func (x *ArtifactType) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *ArtifactType) GetVersion() string {
	if x != nil && x.Version != nil {
		return *x.Version
	}
	return ""
}

func (x *ArtifactType) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *ArtifactType) GetExternalId() string {
	if x != nil && x.ExternalId != nil {
		return *x.ExternalId
	}
	return ""
}

func (x *ArtifactType) GetProperties() map[string]PropertyType {
	if x != nil {
		return x.Properties
	}
	return nil
}

func (x *ArtifactType) GetBaseType() ArtifactType_SystemDefinedBaseType {
	if x != nil && x.BaseType != nil {
		return *x.BaseType
	}
	return ArtifactType_UNSET
}

// An event represents a relationship between an artifact and an execution.
// There are different kinds of events, relating to both input and output, as
// well as how they are used by the mlmd powered system.
// For example, the DECLARED_INPUT and DECLARED_OUTPUT events are part of the
// signature of an execution. For example, consider:
//
//   my_result = my_execution({"data":[3,7],"schema":8})
//
// Where 3, 7, and 8 are artifact_ids, Assuming execution_id of my_execution is
// 12 and artifact_id of my_result is 15, the events are:
//   {
//       artifact_id:3,
//       execution_id: 12,
//       type:DECLARED_INPUT,
//       path:{step:[{"key":"data"},{"index":0}]}
//   }
//   {
//       artifact_id:7,
//       execution_id: 12,
//       type:DECLARED_INPUT,
//       path:{step:[{"key":"data"},{"index":1}]}
//   }
//   {
//       artifact_id:8,
//       execution_id: 12,
//       type:DECLARED_INPUT,
//       path:{step:[{"key":"schema"}]}
//   }
//   {
//       artifact_id:15,
//       execution_id: 12,
//       type:DECLARED_OUTPUT,
//       path:{step:[{"key":"my_result"}]}
//   }
//
// Other event types include INPUT/OUTPUT, INTERNAL_INPUT/_OUTPUT and
// PENDING_OUTPUT:
//
// * The INPUT/OUTPUT is an event that actually reads/writes an artifact by an
//   execution. The input/output artifacts may not declared in the signature,
//   For example, the trainer may output multiple caches of the parameters
//   (as an OUTPUT), then finally write the SavedModel as a DECLARED_OUTPUT.
//
// * The INTERNAL_INPUT/_OUTPUT are event types which are only meaningful to
//   an orchestration system to keep track of the details for later debugging.
//   For example, a fork happened conditioning on an artifact, then an execution
//   is triggered, such fork implementing may need to log the read and write
//   of artifacts and may not be worth displaying to the users.
//
//   For instance, in the above example,
//
//     my_result = my_execution({"data":[3,7],"schema":8})
//
//   there is another execution (id: 15), which represents a
//   `garbage_collection` step in an orchestration system
//
//     gc_result = garbage_collection(my_result)
//
//   that cleans `my_result` if needed. The details should be invisible to the
//   end users and lineage tracking. The orchestrator can emit following events:
//
//     {
//         artifact_id: 15,
//         execution_id: 15,
//         type:INTERNAL_INPUT,
//     }
//     {
//         artifact_id:16,  // New artifact containing the GC job result.
//         execution_id: 15,
//         type:INTERNAL_OUTPUT,
//         path:{step:[{"key":"gc_result"}]}
//     }
//
// * The PENDING_OUTPUT event is used to indicate that an artifact is
//   tentatively associated with an active execution which has not yet been
//   finalized. For example, an orchestration system can register output
//   artifacts of a running execution with PENDING_OUTPUT events to indicate
//   the output artifacts the execution is expected to produce. When the
//   execution is finished, the final set of output artifacts can be associated
//   with the exeution using OUTPUT events, and any unused artifacts which were
//   previously registered with PENDING_OUTPUT events can be updated to set
//   their Artifact.State to ABANDONED.
//
// Events are unique of the same
// (artifact_id, execution_id, type) combination within a metadata store.
type Event struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The artifact id is required for an event, and should refer to an
	// existing artifact.
	ArtifactId *int64 `protobuf:"varint,1,opt,name=artifact_id,json=artifactId" json:"artifact_id,omitempty"`
	// The execution_id is required for an event, and should refer to an
	// existing execution.
	ExecutionId *int64 `protobuf:"varint,2,opt,name=execution_id,json=executionId" json:"execution_id,omitempty"`
	// The path in an artifact struct, or the name of an artifact.
	Path *Event_Path `protobuf:"bytes,3,opt,name=path" json:"path,omitempty"`
	// The type of an event.
	Type *Event_Type `protobuf:"varint,4,opt,name=type,enum=ml_metadata.Event_Type" json:"type,omitempty"`
	// Time the event occurred
	// Epoch is Jan 1, 1970, UTC
	MillisecondsSinceEpoch *int64 `protobuf:"varint,5,opt,name=milliseconds_since_epoch,json=millisecondsSinceEpoch" json:"milliseconds_since_epoch,omitempty"`
	// Output only.
	SystemMetadata *anypb.Any `protobuf:"bytes,6,opt,name=system_metadata,json=systemMetadata" json:"system_metadata,omitempty"`
}

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

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

func (*Event) ProtoMessage() {}

func (x *Event) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 Event.ProtoReflect.Descriptor instead.
func (*Event) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{4}
}

func (x *Event) GetArtifactId() int64 {
	if x != nil && x.ArtifactId != nil {
		return *x.ArtifactId
	}
	return 0
}

func (x *Event) GetExecutionId() int64 {
	if x != nil && x.ExecutionId != nil {
		return *x.ExecutionId
	}
	return 0
}

func (x *Event) GetPath() *Event_Path {
	if x != nil {
		return x.Path
	}
	return nil
}

func (x *Event) GetType() Event_Type {
	if x != nil && x.Type != nil {
		return *x.Type
	}
	return Event_UNKNOWN
}

func (x *Event) GetMillisecondsSinceEpoch() int64 {
	if x != nil && x.MillisecondsSinceEpoch != nil {
		return *x.MillisecondsSinceEpoch
	}
	return 0
}

func (x *Event) GetSystemMetadata() *anypb.Any {
	if x != nil {
		return x.SystemMetadata
	}
	return nil
}

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

	// Output only. The unique server generated id of the execution.
	Id *int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	// The client provided name of the execution. This field is optional. If set,
	// it must be unique among all the executions of the same execution type
	// within a database instance and cannot be changed once set.
	Name *string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"`
	// The id of an ExecutionType. This needs to be specified when an execution is
	// created, and it cannot be changed.
	// The id of an ExecutionType.
	TypeId *int64 `protobuf:"varint,2,opt,name=type_id,json=typeId" json:"type_id,omitempty"`
	// Output only. The name of an ExecutionType.
	Type *string `protobuf:"bytes,7,opt,name=type" json:"type,omitempty"`
	// The external id that come from the clients’ system. This field is optional.
	// If set, it must be unique among all executions within a database instance.
	ExternalId *string `protobuf:"bytes,10,opt,name=external_id,json=externalId" json:"external_id,omitempty"`
	// The last known state of an execution in the system.
	LastKnownState *Execution_State `protobuf:"varint,3,opt,name=last_known_state,json=lastKnownState,enum=ml_metadata.Execution_State" json:"last_known_state,omitempty"`
	// Properties of the Execution.
	// Properties must be specified in the ExecutionType.
	Properties map[string]*Value `protobuf:"bytes,4,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// User provided custom properties which are not defined by its type.
	CustomProperties map[string]*Value `protobuf:"bytes,5,rep,name=custom_properties,json=customProperties" json:"custom_properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Output only. Create time of the execution in millisecond since epoch.
	CreateTimeSinceEpoch *int64 `protobuf:"varint,8,opt,name=create_time_since_epoch,json=createTimeSinceEpoch" json:"create_time_since_epoch,omitempty"`
	// Output only. Last update time of the execution in millisecond since epoch.
	LastUpdateTimeSinceEpoch *int64 `protobuf:"varint,9,opt,name=last_update_time_since_epoch,json=lastUpdateTimeSinceEpoch" json:"last_update_time_since_epoch,omitempty"`
	// Output only.
	SystemMetadata *anypb.Any `protobuf:"bytes,11,opt,name=system_metadata,json=systemMetadata" json:"system_metadata,omitempty"`
}

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

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

func (*Execution) ProtoMessage() {}

func (x *Execution) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 Execution.ProtoReflect.Descriptor instead.
func (*Execution) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{5}
}

func (x *Execution) GetId() int64 {
	if x != nil && x.Id != nil {
		return *x.Id
	}
	return 0
}

func (x *Execution) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Execution) GetTypeId() int64 {
	if x != nil && x.TypeId != nil {
		return *x.TypeId
	}
	return 0
}

func (x *Execution) GetType() string {
	if x != nil && x.Type != nil {
		return *x.Type
	}
	return ""
}

func (x *Execution) GetExternalId() string {
	if x != nil && x.ExternalId != nil {
		return *x.ExternalId
	}
	return ""
}

func (x *Execution) GetLastKnownState() Execution_State {
	if x != nil && x.LastKnownState != nil {
		return *x.LastKnownState
	}
	return Execution_UNKNOWN
}

func (x *Execution) GetProperties() map[string]*Value {
	if x != nil {
		return x.Properties
	}
	return nil
}

func (x *Execution) GetCustomProperties() map[string]*Value {
	if x != nil {
		return x.CustomProperties
	}
	return nil
}

func (x *Execution) GetCreateTimeSinceEpoch() int64 {
	if x != nil && x.CreateTimeSinceEpoch != nil {
		return *x.CreateTimeSinceEpoch
	}
	return 0
}

func (x *Execution) GetLastUpdateTimeSinceEpoch() int64 {
	if x != nil && x.LastUpdateTimeSinceEpoch != nil {
		return *x.LastUpdateTimeSinceEpoch
	}
	return 0
}

func (x *Execution) GetSystemMetadata() *anypb.Any {
	if x != nil {
		return x.SystemMetadata
	}
	return nil
}

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

	// The id of the type. 1-1 relationship between type names and IDs.
	Id *int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	// The name of the type. It must be unique among ExecutionTypes within a
	// database instance.
	Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
	// An optional version of the type. An empty string is treated as unset.
	Version *string `protobuf:"bytes,6,opt,name=version" json:"version,omitempty"`
	// An optional description about the type.
	Description *string `protobuf:"bytes,7,opt,name=description" json:"description,omitempty"`
	// The external id that come from the clients’ system. This field is optional.
	// If set, it must be unique among all execution types within a database
	// instance.
	ExternalId *string `protobuf:"bytes,9,opt,name=external_id,json=externalId" json:"external_id,omitempty"`
	// The schema of the type.
	// Properties are always optional in the execution.
	Properties map[string]PropertyType `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=ml_metadata.PropertyType"`
	// The ArtifactStructType of the input.
	// For example: {
	//     "dict":{
	//        "properties":{
	//          "schema":{
	//            "union_type":{
	//              "none":{},
	//              "simple":{...schema type...}
	//             },
	//          },
	//          "data":{
	//            "simple":{...data_type...}
	//          }
	//       }
	//     }
	// }
	// That would be an optional schema field with a required data field.
	InputType *ArtifactStructType `protobuf:"bytes,4,opt,name=input_type,json=inputType" json:"input_type,omitempty"`
	// The ArtifactStructType of the output.
	// For example {"simple":{...stats gen output type...}}
	OutputType *ArtifactStructType `protobuf:"bytes,5,opt,name=output_type,json=outputType" json:"output_type,omitempty"`
	// An optional system defined base_type expressing the intent of the current
	// type. This field is useful for the tool builders to utilize the stored MLMD
	// information, e.g., `MyTrainer` ExecutionType could set base_type = TRAIN.
	BaseType *ExecutionType_SystemDefinedBaseType `protobuf:"varint,8,opt,name=base_type,json=baseType,enum=ml_metadata.ExecutionType_SystemDefinedBaseType" json:"base_type,omitempty"`
}

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

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

func (*ExecutionType) ProtoMessage() {}

func (x *ExecutionType) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 ExecutionType.ProtoReflect.Descriptor instead.
func (*ExecutionType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{6}
}

func (x *ExecutionType) GetId() int64 {
	if x != nil && x.Id != nil {
		return *x.Id
	}
	return 0
}

func (x *ExecutionType) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *ExecutionType) GetVersion() string {
	if x != nil && x.Version != nil {
		return *x.Version
	}
	return ""
}

func (x *ExecutionType) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *ExecutionType) GetExternalId() string {
	if x != nil && x.ExternalId != nil {
		return *x.ExternalId
	}
	return ""
}

func (x *ExecutionType) GetProperties() map[string]PropertyType {
	if x != nil {
		return x.Properties
	}
	return nil
}

func (x *ExecutionType) GetInputType() *ArtifactStructType {
	if x != nil {
		return x.InputType
	}
	return nil
}

func (x *ExecutionType) GetOutputType() *ArtifactStructType {
	if x != nil {
		return x.OutputType
	}
	return nil
}

func (x *ExecutionType) GetBaseType() ExecutionType_SystemDefinedBaseType {
	if x != nil && x.BaseType != nil {
		return *x.BaseType
	}
	return ExecutionType_UNSET
}

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

	// The id of the type. 1-1 relationship between type names and IDs.
	Id *int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	// The name of the type, e.g., Pipeline, Task, Session, User, etc. It must be
	// unique among ContextTypes within a database instance.
	Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
	// An optional version of the type. An empty string is treated as unset.
	Version *string `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
	// An optional description about the type.
	Description *string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
	// The external id that come from the clients’ system. This field is optional.
	// If set, it must be unique among all context types within a database
	// instance.
	ExternalId *string `protobuf:"bytes,7,opt,name=external_id,json=externalId" json:"external_id,omitempty"`
	// The schema of the type, e.g., name: string, owner: string
	// Properties are always optional in the context.
	// Properties of an context type can be expanded but not contracted (i.e.,
	// you can add columns but not remove them).
	Properties map[string]PropertyType `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=ml_metadata.PropertyType"`
	// An optional system defined base_type expressing the intent of the current
	// context type.
	// *NOTE: currently there are no system Context types defined, and the field
	// is not used for ContextType.
	BaseType *ContextType_SystemDefinedBaseType `protobuf:"varint,6,opt,name=base_type,json=baseType,enum=ml_metadata.ContextType_SystemDefinedBaseType" json:"base_type,omitempty"`
}

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

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

func (*ContextType) ProtoMessage() {}

func (x *ContextType) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 ContextType.ProtoReflect.Descriptor instead.
func (*ContextType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{7}
}

func (x *ContextType) GetId() int64 {
	if x != nil && x.Id != nil {
		return *x.Id
	}
	return 0
}

func (x *ContextType) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *ContextType) GetVersion() string {
	if x != nil && x.Version != nil {
		return *x.Version
	}
	return ""
}

func (x *ContextType) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *ContextType) GetExternalId() string {
	if x != nil && x.ExternalId != nil {
		return *x.ExternalId
	}
	return ""
}

func (x *ContextType) GetProperties() map[string]PropertyType {
	if x != nil {
		return x.Properties
	}
	return nil
}

func (x *ContextType) GetBaseType() ContextType_SystemDefinedBaseType {
	if x != nil && x.BaseType != nil {
		return *x.BaseType
	}
	return ContextType_UNSET
}

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

	// Output Only. The unique server generated id of the context.
	Id *int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	// The client provided name of the context. It must be unique within a
	// database instance.
	Name *string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
	// The id of a ContextType. This needs to be specified when a context is
	// created, and it cannot be changed.
	TypeId *int64 `protobuf:"varint,2,opt,name=type_id,json=typeId" json:"type_id,omitempty"`
	// Output only. The name of a ContextType.
	Type *string `protobuf:"bytes,6,opt,name=type" json:"type,omitempty"`
	// The external id that come from the clients’ system. This field is optional.
	// If set, it must be unique among all contexts within a virtual database.
	ExternalId *string `protobuf:"bytes,9,opt,name=external_id,json=externalId" json:"external_id,omitempty"`
	// Values of the properties, which must be specified in the ContextType.
	Properties map[string]*Value `protobuf:"bytes,4,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// User provided custom properties which are not defined by its type.
	CustomProperties map[string]*Value `protobuf:"bytes,5,rep,name=custom_properties,json=customProperties" json:"custom_properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Output only. Create time of the context in millisecond since epoch.
	CreateTimeSinceEpoch *int64 `protobuf:"varint,7,opt,name=create_time_since_epoch,json=createTimeSinceEpoch" json:"create_time_since_epoch,omitempty"`
	// Output only. Last update time of the context in millisecond since epoch.
	LastUpdateTimeSinceEpoch *int64 `protobuf:"varint,8,opt,name=last_update_time_since_epoch,json=lastUpdateTimeSinceEpoch" json:"last_update_time_since_epoch,omitempty"`
	// Output only system metadata.
	SystemMetadata *anypb.Any `protobuf:"bytes,10,opt,name=system_metadata,json=systemMetadata" json:"system_metadata,omitempty"`
}

func (x *Context) Reset() {
	*x = Context{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Context) ProtoMessage() {}

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

// Deprecated: Use Context.ProtoReflect.Descriptor instead.
func (*Context) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{8}
}

func (x *Context) GetId() int64 {
	if x != nil && x.Id != nil {
		return *x.Id
	}
	return 0
}

func (x *Context) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Context) GetTypeId() int64 {
	if x != nil && x.TypeId != nil {
		return *x.TypeId
	}
	return 0
}

func (x *Context) GetType() string {
	if x != nil && x.Type != nil {
		return *x.Type
	}
	return ""
}

func (x *Context) GetExternalId() string {
	if x != nil && x.ExternalId != nil {
		return *x.ExternalId
	}
	return ""
}

func (x *Context) GetProperties() map[string]*Value {
	if x != nil {
		return x.Properties
	}
	return nil
}

func (x *Context) GetCustomProperties() map[string]*Value {
	if x != nil {
		return x.CustomProperties
	}
	return nil
}

func (x *Context) GetCreateTimeSinceEpoch() int64 {
	if x != nil && x.CreateTimeSinceEpoch != nil {
		return *x.CreateTimeSinceEpoch
	}
	return 0
}

func (x *Context) GetLastUpdateTimeSinceEpoch() int64 {
	if x != nil && x.LastUpdateTimeSinceEpoch != nil {
		return *x.LastUpdateTimeSinceEpoch
	}
	return 0
}

func (x *Context) GetSystemMetadata() *anypb.Any {
	if x != nil {
		return x.SystemMetadata
	}
	return nil
}

// the Attribution edges between Context and Artifact instances.
type Attribution struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ArtifactId *int64 `protobuf:"varint,1,opt,name=artifact_id,json=artifactId" json:"artifact_id,omitempty"`
	ContextId  *int64 `protobuf:"varint,2,opt,name=context_id,json=contextId" json:"context_id,omitempty"`
}

func (x *Attribution) Reset() {
	*x = Attribution{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Attribution) ProtoMessage() {}

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

// Deprecated: Use Attribution.ProtoReflect.Descriptor instead.
func (*Attribution) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{9}
}

func (x *Attribution) GetArtifactId() int64 {
	if x != nil && x.ArtifactId != nil {
		return *x.ArtifactId
	}
	return 0
}

func (x *Attribution) GetContextId() int64 {
	if x != nil && x.ContextId != nil {
		return *x.ContextId
	}
	return 0
}

// the Association edges between Context and Execution instances.
type Association struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ExecutionId *int64 `protobuf:"varint,1,opt,name=execution_id,json=executionId" json:"execution_id,omitempty"`
	ContextId   *int64 `protobuf:"varint,2,opt,name=context_id,json=contextId" json:"context_id,omitempty"`
}

func (x *Association) Reset() {
	*x = Association{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Association) ProtoMessage() {}

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

// Deprecated: Use Association.ProtoReflect.Descriptor instead.
func (*Association) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{10}
}

func (x *Association) GetExecutionId() int64 {
	if x != nil && x.ExecutionId != nil {
		return *x.ExecutionId
	}
	return 0
}

func (x *Association) GetContextId() int64 {
	if x != nil && x.ContextId != nil {
		return *x.ContextId
	}
	return 0
}

// the Parental Context edges between Context and Context instances.
type ParentContext struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ChildId  *int64 `protobuf:"varint,1,opt,name=child_id,json=childId" json:"child_id,omitempty"`
	ParentId *int64 `protobuf:"varint,2,opt,name=parent_id,json=parentId" json:"parent_id,omitempty"`
}

func (x *ParentContext) Reset() {
	*x = ParentContext{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ParentContext) ProtoMessage() {}

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

// Deprecated: Use ParentContext.ProtoReflect.Descriptor instead.
func (*ParentContext) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{11}
}

func (x *ParentContext) GetChildId() int64 {
	if x != nil && x.ChildId != nil {
		return *x.ChildId
	}
	return 0
}

func (x *ParentContext) GetParentId() int64 {
	if x != nil && x.ParentId != nil {
		return *x.ParentId
	}
	return 0
}

// A self-contained provenance (sub)graph representation consists of MLMD nodes
// and their relationships. It is used to represent the query results from the
// persistent backend (e.g., lineage about a node, reachability of two nodes).
type LineageGraph struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// extracted types
	ArtifactTypes  []*ArtifactType  `protobuf:"bytes,1,rep,name=artifact_types,json=artifactTypes" json:"artifact_types,omitempty"`
	ExecutionTypes []*ExecutionType `protobuf:"bytes,2,rep,name=execution_types,json=executionTypes" json:"execution_types,omitempty"`
	ContextTypes   []*ContextType   `protobuf:"bytes,3,rep,name=context_types,json=contextTypes" json:"context_types,omitempty"`
	// extracted nodes
	Artifacts  []*Artifact  `protobuf:"bytes,4,rep,name=artifacts" json:"artifacts,omitempty"`
	Executions []*Execution `protobuf:"bytes,5,rep,name=executions" json:"executions,omitempty"`
	Contexts   []*Context   `protobuf:"bytes,6,rep,name=contexts" json:"contexts,omitempty"`
	// extracted edges
	Events       []*Event       `protobuf:"bytes,7,rep,name=events" json:"events,omitempty"`
	Attributions []*Attribution `protobuf:"bytes,8,rep,name=attributions" json:"attributions,omitempty"`
	Associations []*Association `protobuf:"bytes,9,rep,name=associations" json:"associations,omitempty"`
}

func (x *LineageGraph) Reset() {
	*x = LineageGraph{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LineageGraph) ProtoMessage() {}

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

// Deprecated: Use LineageGraph.ProtoReflect.Descriptor instead.
func (*LineageGraph) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{12}
}

func (x *LineageGraph) GetArtifactTypes() []*ArtifactType {
	if x != nil {
		return x.ArtifactTypes
	}
	return nil
}

func (x *LineageGraph) GetExecutionTypes() []*ExecutionType {
	if x != nil {
		return x.ExecutionTypes
	}
	return nil
}

func (x *LineageGraph) GetContextTypes() []*ContextType {
	if x != nil {
		return x.ContextTypes
	}
	return nil
}

func (x *LineageGraph) GetArtifacts() []*Artifact {
	if x != nil {
		return x.Artifacts
	}
	return nil
}

func (x *LineageGraph) GetExecutions() []*Execution {
	if x != nil {
		return x.Executions
	}
	return nil
}

func (x *LineageGraph) GetContexts() []*Context {
	if x != nil {
		return x.Contexts
	}
	return nil
}

func (x *LineageGraph) GetEvents() []*Event {
	if x != nil {
		return x.Events
	}
	return nil
}

func (x *LineageGraph) GetAttributions() []*Attribution {
	if x != nil {
		return x.Attributions
	}
	return nil
}

func (x *LineageGraph) GetAssociations() []*Association {
	if x != nil {
		return x.Associations
	}
	return nil
}

// The list of ArtifactStruct is EXPERIMENTAL and not in use yet.
// The type of an ArtifactStruct.
// An artifact struct type represents an infinite set of artifact structs.
// It can specify the input or output type of an ExecutionType.
// See the more specific types referenced in the message for more details.
type ArtifactStructType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Kind:
	//	*ArtifactStructType_Simple
	//	*ArtifactStructType_UnionType
	//	*ArtifactStructType_Intersection
	//	*ArtifactStructType_List
	//	*ArtifactStructType_None
	//	*ArtifactStructType_Any
	//	*ArtifactStructType_Tuple
	//	*ArtifactStructType_Dict
	Kind isArtifactStructType_Kind `protobuf_oneof:"kind"`
}

func (x *ArtifactStructType) Reset() {
	*x = ArtifactStructType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ArtifactStructType) ProtoMessage() {}

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

// Deprecated: Use ArtifactStructType.ProtoReflect.Descriptor instead.
func (*ArtifactStructType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{13}
}

func (m *ArtifactStructType) GetKind() isArtifactStructType_Kind {
	if m != nil {
		return m.Kind
	}
	return nil
}

func (x *ArtifactStructType) GetSimple() *ArtifactType {
	if x, ok := x.GetKind().(*ArtifactStructType_Simple); ok {
		return x.Simple
	}
	return nil
}

func (x *ArtifactStructType) GetUnionType() *UnionArtifactStructType {
	if x, ok := x.GetKind().(*ArtifactStructType_UnionType); ok {
		return x.UnionType
	}
	return nil
}

func (x *ArtifactStructType) GetIntersection() *IntersectionArtifactStructType {
	if x, ok := x.GetKind().(*ArtifactStructType_Intersection); ok {
		return x.Intersection
	}
	return nil
}

func (x *ArtifactStructType) GetList() *ListArtifactStructType {
	if x, ok := x.GetKind().(*ArtifactStructType_List); ok {
		return x.List
	}
	return nil
}

func (x *ArtifactStructType) GetNone() *NoneArtifactStructType {
	if x, ok := x.GetKind().(*ArtifactStructType_None); ok {
		return x.None
	}
	return nil
}

func (x *ArtifactStructType) GetAny() *AnyArtifactStructType {
	if x, ok := x.GetKind().(*ArtifactStructType_Any); ok {
		return x.Any
	}
	return nil
}

func (x *ArtifactStructType) GetTuple() *TupleArtifactStructType {
	if x, ok := x.GetKind().(*ArtifactStructType_Tuple); ok {
		return x.Tuple
	}
	return nil
}

func (x *ArtifactStructType) GetDict() *DictArtifactStructType {
	if x, ok := x.GetKind().(*ArtifactStructType_Dict); ok {
		return x.Dict
	}
	return nil
}

type isArtifactStructType_Kind interface {
	isArtifactStructType_Kind()
}

type ArtifactStructType_Simple struct {
	Simple *ArtifactType `protobuf:"bytes,1,opt,name=simple,oneof"` // Matches exactly this type.
}

type ArtifactStructType_UnionType struct {
	UnionType *UnionArtifactStructType `protobuf:"bytes,2,opt,name=union_type,json=unionType,oneof"`
}

type ArtifactStructType_Intersection struct {
	Intersection *IntersectionArtifactStructType `protobuf:"bytes,3,opt,name=intersection,oneof"`
}

type ArtifactStructType_List struct {
	List *ListArtifactStructType `protobuf:"bytes,4,opt,name=list,oneof"`
}

type ArtifactStructType_None struct {
	None *NoneArtifactStructType `protobuf:"bytes,5,opt,name=none,oneof"`
}

type ArtifactStructType_Any struct {
	Any *AnyArtifactStructType `protobuf:"bytes,6,opt,name=any,oneof"`
}

type ArtifactStructType_Tuple struct {
	Tuple *TupleArtifactStructType `protobuf:"bytes,7,opt,name=tuple,oneof"`
}

type ArtifactStructType_Dict struct {
	Dict *DictArtifactStructType `protobuf:"bytes,8,opt,name=dict,oneof"`
}

func (*ArtifactStructType_Simple) isArtifactStructType_Kind() {}

func (*ArtifactStructType_UnionType) isArtifactStructType_Kind() {}

func (*ArtifactStructType_Intersection) isArtifactStructType_Kind() {}

func (*ArtifactStructType_List) isArtifactStructType_Kind() {}

func (*ArtifactStructType_None) isArtifactStructType_Kind() {}

func (*ArtifactStructType_Any) isArtifactStructType_Kind() {}

func (*ArtifactStructType_Tuple) isArtifactStructType_Kind() {}

func (*ArtifactStructType_Dict) isArtifactStructType_Kind() {}

// Represents a union of types.
type UnionArtifactStructType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// An artifact struct matches this type if it matches any of the candidates.
	// If candidates is empty, this is a bottom type (matches no artifacts).
	Candidates []*ArtifactStructType `protobuf:"bytes,1,rep,name=candidates" json:"candidates,omitempty"`
}

func (x *UnionArtifactStructType) Reset() {
	*x = UnionArtifactStructType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UnionArtifactStructType) ProtoMessage() {}

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

// Deprecated: Use UnionArtifactStructType.ProtoReflect.Descriptor instead.
func (*UnionArtifactStructType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{14}
}

func (x *UnionArtifactStructType) GetCandidates() []*ArtifactStructType {
	if x != nil {
		return x.Candidates
	}
	return nil
}

// A member of this type must satisfy all constraints.
// This primarily useful not as an end-user type, but something calculated
// as an intermediate type in the system.
//
// For example, suppose you have a method:
// def infer_my_input_type(a): # try to infer the input type of this method.
//   use_in_method_x(a) # with input type x_input
//   use_in_method_y(a) # with input type y_input
//
// Given this information, you know that infer_my_input_type has
// type {"intersection":{"constraints":[x_input, y_input]}}.
//
// IntersectionArtifactStructType intersection_type = {"constraints":[
//     {"dict":{"properties":{"schema":{"any":{}}},
//              "extra_properties":{"any":{}}}},
//     {"dict":{"properties":{"data":{"any":{}}},
//              "extra_properties":{"any":{}}}}]}
// Since the first constraint requires the dictionary to have a schema
// property, and the second constraint requires it to have a data property, this
// is equivalent to:
// ArtifactStructType other_type =
//      {"dict":{"properties":{"schema":{"any":{}},"data":{"any":{}}}},
//       "extra_properties":{"any":{}}}
//
type IntersectionArtifactStructType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Constraints []*ArtifactStructType `protobuf:"bytes,1,rep,name=constraints" json:"constraints,omitempty"`
}

func (x *IntersectionArtifactStructType) Reset() {
	*x = IntersectionArtifactStructType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*IntersectionArtifactStructType) ProtoMessage() {}

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

// Deprecated: Use IntersectionArtifactStructType.ProtoReflect.Descriptor instead.
func (*IntersectionArtifactStructType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{15}
}

func (x *IntersectionArtifactStructType) GetConstraints() []*ArtifactStructType {
	if x != nil {
		return x.Constraints
	}
	return nil
}

// Represents an ArtifactStruct list type with homogeneous elements.
type ListArtifactStructType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Every entry in the list must be of this type.
	// Note: if this type is Any, then the list can have arbitrary elements.
	Element *ArtifactStructType `protobuf:"bytes,1,opt,name=element" json:"element,omitempty"`
}

func (x *ListArtifactStructType) Reset() {
	*x = ListArtifactStructType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListArtifactStructType) ProtoMessage() {}

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

// Deprecated: Use ListArtifactStructType.ProtoReflect.Descriptor instead.
func (*ListArtifactStructType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{16}
}

func (x *ListArtifactStructType) GetElement() *ArtifactStructType {
	if x != nil {
		return x.Element
	}
	return nil
}

// The only member of this type is a None artifact.
// Note: ArtifactStruct{} is a None artifact.
// This can represent an execution that has no outputs (or inputs),
// or can be part of a UnionArtifactStructType to represent an optional
// input.
// For example, StatsGen has an "optional" schema input.
// A practical example of this is:
// stats_gen_type = {
//     "dict":{
//        "properties":{
//          "schema":{
//            "union_type":{
//              "none":{},
//              "simple":{...schema type...}
//             },
//          },
//          "data":{
//            "simple":{...data_type...}
//          }
//       }
//     }
// };
type NoneArtifactStructType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *NoneArtifactStructType) Reset() {
	*x = NoneArtifactStructType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*NoneArtifactStructType) ProtoMessage() {}

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

// Deprecated: Use NoneArtifactStructType.ProtoReflect.Descriptor instead.
func (*NoneArtifactStructType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{17}
}

// Every ArtifactStruct is a member of this type.
type AnyArtifactStructType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *AnyArtifactStructType) Reset() {
	*x = AnyArtifactStructType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AnyArtifactStructType) ProtoMessage() {}

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

// Deprecated: Use AnyArtifactStructType.ProtoReflect.Descriptor instead.
func (*AnyArtifactStructType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{18}
}

// An ordered list of heterogeneous artifact structs.
// The length of the list is fixed.
// Each position in the list can have a different type.
type TupleArtifactStructType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Elements []*ArtifactStructType `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
}

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

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

func (*TupleArtifactStructType) ProtoMessage() {}

func (x *TupleArtifactStructType) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_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 TupleArtifactStructType.ProtoReflect.Descriptor instead.
func (*TupleArtifactStructType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{19}
}

func (x *TupleArtifactStructType) GetElements() []*ArtifactStructType {
	if x != nil {
		return x.Elements
	}
	return nil
}

// A artifact struct type that represents a record or struct-like dictionary.
// ArtifactStruct would be map (i.e. ArtifactStructMap)
type DictArtifactStructType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Underlying properties for the type.
	Properties map[string]*ArtifactStructType `protobuf:"bytes,1,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// If true, then if properties["foo"] can be None, then that key is not
	// required.
	NoneTypeNotRequired *bool `protobuf:"varint,2,opt,name=none_type_not_required,json=noneTypeNotRequired" json:"none_type_not_required,omitempty"`
	// Extra keys are allowed that are not specified in properties. These
	// keys must have the type specified below.
	// If this is not specified, then extra properties are not allowed.
	ExtraPropertiesType *ArtifactStructType `protobuf:"bytes,3,opt,name=extra_properties_type,json=extraPropertiesType" json:"extra_properties_type,omitempty"`
}

func (x *DictArtifactStructType) Reset() {
	*x = DictArtifactStructType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DictArtifactStructType) ProtoMessage() {}

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

// Deprecated: Use DictArtifactStructType.ProtoReflect.Descriptor instead.
func (*DictArtifactStructType) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{20}
}

func (x *DictArtifactStructType) GetProperties() map[string]*ArtifactStructType {
	if x != nil {
		return x.Properties
	}
	return nil
}

func (x *DictArtifactStructType) GetNoneTypeNotRequired() bool {
	if x != nil && x.NoneTypeNotRequired != nil {
		return *x.NoneTypeNotRequired
	}
	return false
}

func (x *DictArtifactStructType) GetExtraPropertiesType() *ArtifactStructType {
	if x != nil {
		return x.ExtraPropertiesType
	}
	return nil
}

// Configuration for a "fake" database.
// This database is an in-memory SQLite database that lives only as
// long as the associated object lives.
type FakeDatabaseConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *FakeDatabaseConfig) Reset() {
	*x = FakeDatabaseConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*FakeDatabaseConfig) ProtoMessage() {}

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

// Deprecated: Use FakeDatabaseConfig.ProtoReflect.Descriptor instead.
func (*FakeDatabaseConfig) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{21}
}

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

	// The hostname or IP address of the MYSQL server:
	// * If unspecified, a connection to the local host is assumed.
	//   The client connects using a Unix socket specified by `socket`.
	// * Otherwise, TCP/IP is used.
	// Currently a replicated MYSQL backend is not supported.
	Host *string `protobuf:"bytes,1,opt,name=host" json:"host,omitempty"`
	// The TCP Port number that the MYSQL server accepts connections on.
	// If unspecified, the default MYSQL port (3306) is used.
	Port *int64 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
	// The database to connect to. Must be specified.
	// After connecting to the MYSQL server, this database is created if not
	// already present unless skip_db_creation is set.
	// All queries after Connect() are assumed to be for this database.
	Database *string `protobuf:"bytes,3,opt,name=database" json:"database,omitempty"`
	// The MYSQL login id. If empty, the current user is assumed.
	User *string `protobuf:"bytes,4,opt,name=user" json:"user,omitempty"`
	// The password to use for `user`. If empty, only MYSQL user ids that don't
	// have a password set are allowed to connect.
	Password *string `protobuf:"bytes,5,opt,name=password" json:"password,omitempty"`
	// The Unix socket to use to connect to the server. If unspecified, a
	// `host` must be provided.
	Socket *string `protobuf:"bytes,6,opt,name=socket" json:"socket,omitempty"`
	// If the field is set, the ssl options are set in mysql_options before
	// establishing a connection. It is ignored if the mysql server does not
	// enable SSL.
	SslOptions *MySQLDatabaseConfig_SSLOptions `protobuf:"bytes,7,opt,name=ssl_options,json=sslOptions" json:"ssl_options,omitempty"`
	// A config to skip the database creation if not exist when connecting the
	// db instance. It is useful when the db creation is handled by an admin
	// process, while the lib user should not issue db creation clauses.
	SkipDbCreation *bool `protobuf:"varint,8,opt,name=skip_db_creation,json=skipDbCreation" json:"skip_db_creation,omitempty"`
}

func (x *MySQLDatabaseConfig) Reset() {
	*x = MySQLDatabaseConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MySQLDatabaseConfig) ProtoMessage() {}

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

// Deprecated: Use MySQLDatabaseConfig.ProtoReflect.Descriptor instead.
func (*MySQLDatabaseConfig) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{22}
}

func (x *MySQLDatabaseConfig) GetHost() string {
	if x != nil && x.Host != nil {
		return *x.Host
	}
	return ""
}

func (x *MySQLDatabaseConfig) GetPort() int64 {
	if x != nil && x.Port != nil {
		return *x.Port
	}
	return 0
}

func (x *MySQLDatabaseConfig) GetDatabase() string {
	if x != nil && x.Database != nil {
		return *x.Database
	}
	return ""
}

func (x *MySQLDatabaseConfig) GetUser() string {
	if x != nil && x.User != nil {
		return *x.User
	}
	return ""
}

func (x *MySQLDatabaseConfig) GetPassword() string {
	if x != nil && x.Password != nil {
		return *x.Password
	}
	return ""
}

func (x *MySQLDatabaseConfig) GetSocket() string {
	if x != nil && x.Socket != nil {
		return *x.Socket
	}
	return ""
}

func (x *MySQLDatabaseConfig) GetSslOptions() *MySQLDatabaseConfig_SSLOptions {
	if x != nil {
		return x.SslOptions
	}
	return nil
}

func (x *MySQLDatabaseConfig) GetSkipDbCreation() bool {
	if x != nil && x.SkipDbCreation != nil {
		return *x.SkipDbCreation
	}
	return false
}

// A config contains the parameters when using with SqliteMetadatSource.
type SqliteMetadataSourceConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A uri specifying Sqlite3 database filename, for example:
	//
	//   file:some_sqlite3_file_in_local_dir.db
	//   file:///home/username/some_sqlite3_file.db
	//
	// see https://www.sqlite.org/c3ref/open.html for model details
	//
	// If not given, a in-memory sqlite3 database is used, and destroyed when
	// disconnecting the metadata source.
	FilenameUri *string `protobuf:"bytes,1,opt,name=filename_uri,json=filenameUri" json:"filename_uri,omitempty"`
	// A flag specifying the connection mode. If not given, default connection
	// mode is set to READWRITE_OPENCREATE.
	ConnectionMode *SqliteMetadataSourceConfig_ConnectionMode `protobuf:"varint,2,opt,name=connection_mode,json=connectionMode,enum=ml_metadata.SqliteMetadataSourceConfig_ConnectionMode" json:"connection_mode,omitempty"`
}

func (x *SqliteMetadataSourceConfig) Reset() {
	*x = SqliteMetadataSourceConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SqliteMetadataSourceConfig) ProtoMessage() {}

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

// Deprecated: Use SqliteMetadataSourceConfig.ProtoReflect.Descriptor instead.
func (*SqliteMetadataSourceConfig) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{23}
}

func (x *SqliteMetadataSourceConfig) GetFilenameUri() string {
	if x != nil && x.FilenameUri != nil {
		return *x.FilenameUri
	}
	return ""
}

func (x *SqliteMetadataSourceConfig) GetConnectionMode() SqliteMetadataSourceConfig_ConnectionMode {
	if x != nil && x.ConnectionMode != nil {
		return *x.ConnectionMode
	}
	return SqliteMetadataSourceConfig_UNKNOWN
}

// A config contains the parameters when using with PostgreSQLMetadatSource.
// Next index: 10
type PostgreSQLDatabaseConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of host to connect to. If the host name starts with /, it is taken as
	// a Unix-domain socket in the abstract namespace.
	Host *string `protobuf:"bytes,1,opt,name=host" json:"host,omitempty"`
	// Numeric IP address of host to connect to. If this field is provided, `host`
	// field is ignored.
	Hostaddr *string `protobuf:"bytes,2,opt,name=hostaddr" json:"hostaddr,omitempty"`
	// Port number to connect to at the server host, or socket file name extension
	// for Unix-domain connections.
	Port *string `protobuf:"bytes,3,opt,name=port" json:"port,omitempty"`
	// PostgreSQL user name to connect as. Defaults to be the same as the
	// operating system name of the user running the application.
	User *string `protobuf:"bytes,4,opt,name=user" json:"user,omitempty"`
	// Password to be used if the server demands password authentication.
	Password *string `protobuf:"bytes,5,opt,name=password" json:"password,omitempty"`
	// Specifies the name of the file used to store passwords.
	Passfile *string `protobuf:"bytes,6,opt,name=passfile" json:"passfile,omitempty"`
	// The database name. Defaults to be the same as the user name.
	Dbname *string `protobuf:"bytes,7,opt,name=dbname" json:"dbname,omitempty"`
	// A config to skip the database creation if not exist when connecting the
	// db instance. It is useful when the db creation is handled by an admin
	// process, while the lib user should not issue db creation clauses.
	SkipDbCreation *bool                                `protobuf:"varint,8,opt,name=skip_db_creation,json=skipDbCreation" json:"skip_db_creation,omitempty"`
	Ssloption      *PostgreSQLDatabaseConfig_SSLOptions `protobuf:"bytes,9,opt,name=ssloption" json:"ssloption,omitempty"`
}

func (x *PostgreSQLDatabaseConfig) Reset() {
	*x = PostgreSQLDatabaseConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostgreSQLDatabaseConfig) ProtoMessage() {}

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

// Deprecated: Use PostgreSQLDatabaseConfig.ProtoReflect.Descriptor instead.
func (*PostgreSQLDatabaseConfig) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{24}
}

func (x *PostgreSQLDatabaseConfig) GetHost() string {
	if x != nil && x.Host != nil {
		return *x.Host
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig) GetHostaddr() string {
	if x != nil && x.Hostaddr != nil {
		return *x.Hostaddr
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig) GetPort() string {
	if x != nil && x.Port != nil {
		return *x.Port
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig) GetUser() string {
	if x != nil && x.User != nil {
		return *x.User
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig) GetPassword() string {
	if x != nil && x.Password != nil {
		return *x.Password
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig) GetPassfile() string {
	if x != nil && x.Passfile != nil {
		return *x.Passfile
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig) GetDbname() string {
	if x != nil && x.Dbname != nil {
		return *x.Dbname
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig) GetSkipDbCreation() bool {
	if x != nil && x.SkipDbCreation != nil {
		return *x.SkipDbCreation
	}
	return false
}

func (x *PostgreSQLDatabaseConfig) GetSsloption() *PostgreSQLDatabaseConfig_SSLOptions {
	if x != nil {
		return x.Ssloption
	}
	return nil
}

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

	// If not set, by default the upgrade migration is disabled. MLMD only
	// compares db_v with the lib_v, and raise error if the two do not align.
	// If the field is set to true, MLMD performs upgrade migration. It upgrades
	// the database schema version (db_v) to align with the library schema
	// version (lib_v) when connecting to the database.
	// Schema migration should not be run concurrently with multiple clients to
	// prevent data races.
	EnableUpgradeMigration *bool `protobuf:"varint,3,opt,name=enable_upgrade_migration,json=enableUpgradeMigration" json:"enable_upgrade_migration,omitempty"`
	// Downgrade the given database to the specified schema version.
	// For v0.13.2 release, the schema_version is 0.
	// For 0.14.0 and 0.15.0 release, the schema_version is 4.
	// More details are described in g3doc/get_start.md#upgrade-mlmd-library
	// Set this field only when a database is accidentally upgraded by a newer
	// version library. Each library version only knows how to downgrade to
	// previous schema versions. As downgrade migrations inevitably introduce
	// data loss, please consider taking a backup of the database before
	// downgrading schema.
	// After downgrade migration, the database connection is canceled. The user
	// needs to downgrade the library to use the database.
	DowngradeToSchemaVersion *int64 `protobuf:"varint,2,opt,name=downgrade_to_schema_version,json=downgradeToSchemaVersion,def=-1" json:"downgrade_to_schema_version,omitempty"`
}

// Default values for MigrationOptions fields.
const (
	Default_MigrationOptions_DowngradeToSchemaVersion = int64(-1)
)

func (x *MigrationOptions) Reset() {
	*x = MigrationOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MigrationOptions) ProtoMessage() {}

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

// Deprecated: Use MigrationOptions.ProtoReflect.Descriptor instead.
func (*MigrationOptions) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{25}
}

func (x *MigrationOptions) GetEnableUpgradeMigration() bool {
	if x != nil && x.EnableUpgradeMigration != nil {
		return *x.EnableUpgradeMigration
	}
	return false
}

func (x *MigrationOptions) GetDowngradeToSchemaVersion() int64 {
	if x != nil && x.DowngradeToSchemaVersion != nil {
		return *x.DowngradeToSchemaVersion
	}
	return Default_MigrationOptions_DowngradeToSchemaVersion
}

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

	// The max number of retries when transaction returns Aborted error.
	MaxNumRetries *int64 `protobuf:"varint,1,opt,name=max_num_retries,json=maxNumRetries" json:"max_num_retries,omitempty"`
}

func (x *RetryOptions) Reset() {
	*x = RetryOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RetryOptions) ProtoMessage() {}

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

// Deprecated: Use RetryOptions.ProtoReflect.Descriptor instead.
func (*RetryOptions) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{26}
}

func (x *RetryOptions) GetMaxNumRetries() int64 {
	if x != nil && x.MaxNumRetries != nil {
		return *x.MaxNumRetries
	}
	return 0
}

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

	// Configuration for a new connection.
	//
	// Types that are assignable to Config:
	//	*ConnectionConfig_FakeDatabase
	//	*ConnectionConfig_Mysql
	//	*ConnectionConfig_Sqlite
	//	*ConnectionConfig_Postgresql
	Config isConnectionConfig_Config `protobuf_oneof:"config"`
	// Options for overwriting the default retry setting when MLMD transactions
	// returning Aborted error.
	// The setting is currently available for python client library only.
	// TODO(b/154862807) set the setting in transaction executor.
	RetryOptions *RetryOptions `protobuf:"bytes,4,opt,name=retry_options,json=retryOptions" json:"retry_options,omitempty"`
}

func (x *ConnectionConfig) Reset() {
	*x = ConnectionConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ConnectionConfig) ProtoMessage() {}

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

// Deprecated: Use ConnectionConfig.ProtoReflect.Descriptor instead.
func (*ConnectionConfig) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{27}
}

func (m *ConnectionConfig) GetConfig() isConnectionConfig_Config {
	if m != nil {
		return m.Config
	}
	return nil
}

func (x *ConnectionConfig) GetFakeDatabase() *FakeDatabaseConfig {
	if x, ok := x.GetConfig().(*ConnectionConfig_FakeDatabase); ok {
		return x.FakeDatabase
	}
	return nil
}

func (x *ConnectionConfig) GetMysql() *MySQLDatabaseConfig {
	if x, ok := x.GetConfig().(*ConnectionConfig_Mysql); ok {
		return x.Mysql
	}
	return nil
}

func (x *ConnectionConfig) GetSqlite() *SqliteMetadataSourceConfig {
	if x, ok := x.GetConfig().(*ConnectionConfig_Sqlite); ok {
		return x.Sqlite
	}
	return nil
}

func (x *ConnectionConfig) GetPostgresql() *PostgreSQLDatabaseConfig {
	if x, ok := x.GetConfig().(*ConnectionConfig_Postgresql); ok {
		return x.Postgresql
	}
	return nil
}

func (x *ConnectionConfig) GetRetryOptions() *RetryOptions {
	if x != nil {
		return x.RetryOptions
	}
	return nil
}

type isConnectionConfig_Config interface {
	isConnectionConfig_Config()
}

type ConnectionConfig_FakeDatabase struct {
	FakeDatabase *FakeDatabaseConfig `protobuf:"bytes,1,opt,name=fake_database,json=fakeDatabase,oneof"`
}

type ConnectionConfig_Mysql struct {
	Mysql *MySQLDatabaseConfig `protobuf:"bytes,2,opt,name=mysql,oneof"`
}

type ConnectionConfig_Sqlite struct {
	Sqlite *SqliteMetadataSourceConfig `protobuf:"bytes,3,opt,name=sqlite,oneof"`
}

type ConnectionConfig_Postgresql struct {
	// PostgreSQL database connection config.
	Postgresql *PostgreSQLDatabaseConfig `protobuf:"bytes,5,opt,name=postgresql,oneof"`
}

func (*ConnectionConfig_FakeDatabase) isConnectionConfig_Config() {}

func (*ConnectionConfig_Mysql) isConnectionConfig_Config() {}

func (*ConnectionConfig_Sqlite) isConnectionConfig_Config() {}

func (*ConnectionConfig_Postgresql) isConnectionConfig_Config() {}

// A list of supported GRPC arguments defined in:
// https://grpc.github.io/grpc/core/group__grpc__arg__keys.html
type GrpcChannelArguments struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Maximum message length in bytes per response that the channel can receive.
	MaxReceiveMessageLength *int64 `protobuf:"varint,1,opt,name=max_receive_message_length,json=maxReceiveMessageLength" json:"max_receive_message_length,omitempty"`
	// Maximum misbehaving pings the server can bear before sending goaway and
	// closing the transport? (0 indicates infinite number of misbehaving pings)
	Http2MaxPingStrikes *int64 `protobuf:"varint,2,opt,name=http2_max_ping_strikes,json=http2MaxPingStrikes" json:"http2_max_ping_strikes,omitempty"`
}

func (x *GrpcChannelArguments) Reset() {
	*x = GrpcChannelArguments{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GrpcChannelArguments) ProtoMessage() {}

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

// Deprecated: Use GrpcChannelArguments.ProtoReflect.Descriptor instead.
func (*GrpcChannelArguments) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{28}
}

func (x *GrpcChannelArguments) GetMaxReceiveMessageLength() int64 {
	if x != nil && x.MaxReceiveMessageLength != nil {
		return *x.MaxReceiveMessageLength
	}
	return 0
}

func (x *GrpcChannelArguments) GetHttp2MaxPingStrikes() int64 {
	if x != nil && x.Http2MaxPingStrikes != nil {
		return *x.Http2MaxPingStrikes
	}
	return 0
}

// Configuration for the gRPC metadata store client.
type MetadataStoreClientConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The hostname or IP address of the gRPC server. Must be specified.
	Host *string `protobuf:"bytes,1,opt,name=host" json:"host,omitempty"`
	// The TCP Port number that the gRPC server accepts connections on.
	// Must be specified.
	Port *int64 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
	// Configuration for a secure gRPC channel.
	// If not given, insecure connection is used.
	SslConfig *MetadataStoreClientConfig_SSLConfig `protobuf:"bytes,3,opt,name=ssl_config,json=sslConfig" json:"ssl_config,omitempty"`
	// GRPC channel creation arguments.
	ChannelArguments *GrpcChannelArguments `protobuf:"bytes,4,opt,name=channel_arguments,json=channelArguments" json:"channel_arguments,omitempty"`
	// Time duration that a client is willing to wait for a reply from the server.
	// If unset, the timeout is considered infinite. When the field is specified,
	// Grpc APIs would return DeadlineExceededError when server does not respond
	// within `client_timeout_sec`. Floating point valued, in seconds.
	ClientTimeoutSec *float64 `protobuf:"fixed64,5,opt,name=client_timeout_sec,json=clientTimeoutSec" json:"client_timeout_sec,omitempty"`
}

func (x *MetadataStoreClientConfig) Reset() {
	*x = MetadataStoreClientConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MetadataStoreClientConfig) ProtoMessage() {}

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

// Deprecated: Use MetadataStoreClientConfig.ProtoReflect.Descriptor instead.
func (*MetadataStoreClientConfig) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{29}
}

func (x *MetadataStoreClientConfig) GetHost() string {
	if x != nil && x.Host != nil {
		return *x.Host
	}
	return ""
}

func (x *MetadataStoreClientConfig) GetPort() int64 {
	if x != nil && x.Port != nil {
		return *x.Port
	}
	return 0
}

func (x *MetadataStoreClientConfig) GetSslConfig() *MetadataStoreClientConfig_SSLConfig {
	if x != nil {
		return x.SslConfig
	}
	return nil
}

func (x *MetadataStoreClientConfig) GetChannelArguments() *GrpcChannelArguments {
	if x != nil {
		return x.ChannelArguments
	}
	return nil
}

func (x *MetadataStoreClientConfig) GetClientTimeoutSec() float64 {
	if x != nil && x.ClientTimeoutSec != nil {
		return *x.ClientTimeoutSec
	}
	return 0
}

// Configuration for the gRPC metadata store server.
type MetadataStoreServerConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Configuration to connect the metadata source backend.
	ConnectionConfig *ConnectionConfig `protobuf:"bytes,1,opt,name=connection_config,json=connectionConfig" json:"connection_config,omitempty"`
	// Configuration for upgrade and downgrade migrations the metadata source.
	MigrationOptions *MigrationOptions `protobuf:"bytes,3,opt,name=migration_options,json=migrationOptions" json:"migration_options,omitempty"`
	// Configuration for a secure gRPC channel.
	// If not given, insecure connection is used.
	SslConfig *MetadataStoreServerConfig_SSLConfig `protobuf:"bytes,2,opt,name=ssl_config,json=sslConfig" json:"ssl_config,omitempty"`
}

func (x *MetadataStoreServerConfig) Reset() {
	*x = MetadataStoreServerConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MetadataStoreServerConfig) ProtoMessage() {}

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

// Deprecated: Use MetadataStoreServerConfig.ProtoReflect.Descriptor instead.
func (*MetadataStoreServerConfig) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{30}
}

func (x *MetadataStoreServerConfig) GetConnectionConfig() *ConnectionConfig {
	if x != nil {
		return x.ConnectionConfig
	}
	return nil
}

func (x *MetadataStoreServerConfig) GetMigrationOptions() *MigrationOptions {
	if x != nil {
		return x.MigrationOptions
	}
	return nil
}

func (x *MetadataStoreServerConfig) GetSslConfig() *MetadataStoreServerConfig_SSLConfig {
	if x != nil {
		return x.SslConfig
	}
	return nil
}

// ListOperationOptions represents the set of options and predicates to be
// used for List operations on Artifacts, Executions and Contexts.
type ListOperationOptions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Max number of resources to return in the result. A value of zero or less
	// results in a InvalidArgumentError.
	// The API implementation also enforces an upper-bound of 100, and picks the
	// minimum between this value and the one specified here.
	MaxResultSize *int32 `protobuf:"varint,1,opt,name=max_result_size,json=maxResultSize,def=20" json:"max_result_size,omitempty"`
	// Ordering field.
	OrderByField *ListOperationOptions_OrderByField `protobuf:"bytes,2,opt,name=order_by_field,json=orderByField" json:"order_by_field,omitempty"`
	// Identifies the next page of results.
	NextPageToken *string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
	// A boolean expression in SQL syntax that is used to specify the conditions
	// on node attributes and directly connected assets.
	//
	// In the current implementation, filtering Artifact/Execution/Context with
	// the following attributes and neighborhood is supported:
	//
	// Attributes:
	//     id:int64, type_id:int64, type:string,
	//     uri:string, name: string, external_id: string,
	//     create_time_since_epoch:int64, last_update_time_since_epoch:int64
	//     state:ENUM (Artifact only) last_known_state:ENUM (Execution only)
	//
	// Neighborhood
	// - Properties and Custom Properties (for all node types):
	//   syntax: properties.$name ($name is the property name)
	//           custom_properties.$name ($name is the custom property name)
	//   attributes: the following attributes can be used
	//      int_value: int64, double_value: double, string_value: string
	//      bool_value: bool
	//
	// - Context (for Artifact and Execution):
	//   syntax: contexts_$alias ($alias can be [0-9A-Za-z_])
	//   attributes: the following attributes can be used
	//      id:int64, name:string, type:string, create_time_since_epoch:int64,
	//      last_update_time_since_epoch: int64
	//
	// - Parent and Child Contexts (for Contexts):
	//   syntax: parent_contexts_$alias( $alias can be [0-9A-Za-z_]
	//           child_contexts_$alias( $alias can be [0-9A-Za-z_]
	//   attributes: the following attributes can be used
	//      id:int64, name: string, type:string
	//
	// - Event (for Artifact and Execution)
	//   syntax: events_$alias ($alias can be [0-9A-Za-z_])
	//   attributes: the following attributes can be used
	//     artifact_id: int64(Execution only), execution_id: int64(Artifact only),
	//     type: ENUM, milliseconds_since_epoch: int64
	//
	// Examples:
	// a) to filter nodes attributes:
	//    - id != 1
	//    - id IN (1, 3)
	//    - type_id = 5
	//    - type = 'my_type_name'
	//    - name = 'foo'
	//    - type = 'bar' AND name LIKE 'foo%'
	//    - external_id = 'my_external_id'
	//    - NOT(create_time_since_epoch < 1 OR last_update_time_since_epoch < 1)
	//
	// b) to filter artifacts' uri
	//    - uri = 'exact_path_string'
	//    - uri LIKE 'path_like_this%'
	//    - uri IS NOT NULL
	//
	// c) to filter artifact's state or execution's last_known_state
	//    - state = LIVE
	//    - state IS NULL
	//    - state IN (PENDING, LIVE)
	//    - last_known_state = RUNNING
	//    - last_known_state != RUNNING
	//    - last_known_state NOT IN (FAILED, CANCELED)
	//
	// d) to filter nodes having a specific context, artifact, or execution
	//    - contexts_a.id = 5
	//    - contexts_a.type = 'RunContext'
	//    - contexts_a.name = 'my_run'
	//    - contexts_a.create_time_since_epoch = 1626761453
	//    - contexts_a.last_update_time_since_epoch = 1626761453
	//    To filter nodes with conditions on multiple contexts:
	//    - contexts_a.name = 'my_run' AND contexts_b.name = 'my_pipeline'
	//    To filter context with artifacts:
	//    - artifacts_a.id = 5
	//    - artifacts_a.type = 'Dataset'
	//    - artifacts_a.name = 'my_dataset'
	//    - artifacts_a.uri = 'exact_path_string'
	//    - artifacts_a.state = LIVE
	//    - artifacts_a.state IN (PENDING, LIVE)
	//    - artifacts_a.external_id = "my_external_id"
	//    - artifacts_a.create_time_since_epoch = 1626761453
	//    - artifacts_a.last_update_time_since_epoch = 1626761453
	//    To filter contexts with conditions on multiple artifacts:
	//    - artifacts_a.name = 'my_run' AND artifacts_b.name = 'my_pipeline'
	//    To filter context with executions:
	//    - executions_a.id = 5
	//    - executions_a.type = 'Dataset'
	//    - executions_a.name = 'my_dataset'
	//    - executions_a.last_known_state = RUNNING
	//.   - executions_a.last_known_state IN (NEW, RUNNING)
	//    - executions_a.external_id = "my_external_id"
	//    - executions_a.create_time_since_epoch = 1626761453
	//    - executions_a.last_update_time_since_epoch = 1626761453
	//    To filter contexts with conditions on multiple executions:
	//    - executions_a.name = 'my_run' AND executions_b.name = 'my_pipeline'
	//
	// e) to filter nodes condition on their properties
	//    - properties.accuracy.double_value > 0.95
	//    - custom_properties.my_param.string_value = "foo"
	//    If the name of the property or custom property includes characters
	//    other than [0-9A-Za-z_], then the name need to be backquoted,
	//    e.g.,
	//    - properties.`my property`.int_value > 0
	//    - custom_properties.`my:custom.property`.bool_value = true
	//
	// f) complex query to filter both node attributes and neighborhood
	//    - type = 'DataSet' AND
	//      (contexts_a.type = 'RunContext' AND contexts_a.name = 'my_run') AND
	//      (properties.span = 1 OR custom_properties.span = 1)
	//
	// g) to filter parent/child context
	//    - parent_contexts_a.id = 5
	//    - child_contexts_a.type = 'RunContext'
	//    - parent_contexts_a.name = 'parent_context_1'
	//
	// h) to filter Artifacts on Events
	//    - events_0.execution_id = 1
	//    - events_0.type = INPUT
	//    - events_0.milliseconds_since_epoch = 1
	//    to filter Executions on Events
	//    - events_0.artifact_id = 1
	//    - events_0.type IN (INPUT, INTERNAL_INPUT)
	//    - events_0.milliseconds_since_epoch = 1
	// TODO(b/145945460) Support filtering on event step fields.
	FilterQuery *string `protobuf:"bytes,4,opt,name=filter_query,json=filterQuery" json:"filter_query,omitempty"`
}

// Default values for ListOperationOptions fields.
const (
	Default_ListOperationOptions_MaxResultSize = int32(20)
)

func (x *ListOperationOptions) Reset() {
	*x = ListOperationOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListOperationOptions) ProtoMessage() {}

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

// Deprecated: Use ListOperationOptions.ProtoReflect.Descriptor instead.
func (*ListOperationOptions) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{31}
}

func (x *ListOperationOptions) GetMaxResultSize() int32 {
	if x != nil && x.MaxResultSize != nil {
		return *x.MaxResultSize
	}
	return Default_ListOperationOptions_MaxResultSize
}

func (x *ListOperationOptions) GetOrderByField() *ListOperationOptions_OrderByField {
	if x != nil {
		return x.OrderByField
	}
	return nil
}

func (x *ListOperationOptions) GetNextPageToken() string {
	if x != nil && x.NextPageToken != nil {
		return *x.NextPageToken
	}
	return ""
}

func (x *ListOperationOptions) GetFilterQuery() string {
	if x != nil && x.FilterQuery != nil {
		return *x.FilterQuery
	}
	return ""
}

// Encapsulates information to identify the next page of resources in
// ListOperation.
type ListOperationNextPageToken struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Id offset within the resultset to start next page.
	// Id offset is returned as Id is the unique field used to break ties for
	// fields that might have duplicate entries, e.g. there could be two
	// resources with same create_time. In such cases to  break the tie in
	// ordering, id offset is used.
	// This field is currently only set whe order_by field is CREATE_TIME.
	IdOffset *int64 `protobuf:"varint,1,opt,name=id_offset,json=idOffset" json:"id_offset,omitempty"`
	// Offset value of the order by field. If ID is used this value is same as
	// id_offset.
	FieldOffset *int64 `protobuf:"varint,2,opt,name=field_offset,json=fieldOffset" json:"field_offset,omitempty"`
	// Options set in the first call to ListOperation. This ensures that if
	// next_page_token is set by the caller then ListPipelineJobs API will always
	// use options set in the first call.
	SetOptions *ListOperationOptions `protobuf:"bytes,3,opt,name=set_options,json=setOptions" json:"set_options,omitempty"`
	// List of ids that have the same order_by field values. This is used to
	// ensure List Operation does not return duplicate entries for nodes that have
	// the same order_by field value.
	// This field is currently only set whe order_by field is LAST_UPDATE_TIME.
	ListedIds []int64 `protobuf:"varint,4,rep,name=listed_ids,json=listedIds" json:"listed_ids,omitempty"`
}

func (x *ListOperationNextPageToken) Reset() {
	*x = ListOperationNextPageToken{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListOperationNextPageToken) ProtoMessage() {}

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

// Deprecated: Use ListOperationNextPageToken.ProtoReflect.Descriptor instead.
func (*ListOperationNextPageToken) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{32}
}

func (x *ListOperationNextPageToken) GetIdOffset() int64 {
	if x != nil && x.IdOffset != nil {
		return *x.IdOffset
	}
	return 0
}

func (x *ListOperationNextPageToken) GetFieldOffset() int64 {
	if x != nil && x.FieldOffset != nil {
		return *x.FieldOffset
	}
	return 0
}

func (x *ListOperationNextPageToken) GetSetOptions() *ListOperationOptions {
	if x != nil {
		return x.SetOptions
	}
	return nil
}

func (x *ListOperationNextPageToken) GetListedIds() []int64 {
	if x != nil {
		return x.ListedIds
	}
	return nil
}

// Options for transactions.
// Note: This is under development. Clients should not use it.
type TransactionOptions struct {
	state           protoimpl.MessageState
	sizeCache       protoimpl.SizeCache
	unknownFields   protoimpl.UnknownFields
	extensionFields protoimpl.ExtensionFields

	// Transaction tag for debug use only.
	Tag *string `protobuf:"bytes,1,opt,name=tag" json:"tag,omitempty"`
}

func (x *TransactionOptions) Reset() {
	*x = TransactionOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TransactionOptions) ProtoMessage() {}

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

// Deprecated: Use TransactionOptions.ProtoReflect.Descriptor instead.
func (*TransactionOptions) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{33}
}

var extRange_TransactionOptions = []protoiface.ExtensionRangeV1{
	{Start: 1000, End: 536870911},
}

// Deprecated: Use TransactionOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
func (*TransactionOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
	return extRange_TransactionOptions
}

func (x *TransactionOptions) GetTag() string {
	if x != nil && x.Tag != nil {
		return *x.Tag
	}
	return ""
}

// TODO(b/283852485): Deprecate GetLineageGraph API after migration to
// GetLineageSubgraph API.
// The query options for `get_lineage_graph` operation.
// `query_nodes` is a list of nodes of interest.
// Currently only artifacts are supported as `query_nodes`.
// `stop_conditions` defines the filtering rules when querying a lineage graph.
// `max_node_size` defines the total number of artifacts and executions returned
// in the subgraph.
type LineageGraphQueryOptions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A query to specify the nodes of interest.
	// `ListOperationOptions.max_result_size` sets the maximum number of nodes to
	// begin with the graph search.
	// TODO(b/178491112) Support query_nodes for Executions.
	//
	// Types that are assignable to QueryNodes:
	//	*LineageGraphQueryOptions_ArtifactsOptions
	QueryNodes isLineageGraphQueryOptions_QueryNodes `protobuf_oneof:"query_nodes"`
	// A constraint option to define the filtering rules when querying a lineage
	// graph.
	StopConditions *LineageGraphQueryOptions_BoundaryConstraint `protobuf:"bytes,2,opt,name=stop_conditions,json=stopConditions" json:"stop_conditions,omitempty"`
	// Maximum total number of artifacts and executions in the whole returned
	// lineage graph.
	// If set to 0 or below, all related nodes will be returned without any
	// number limitation.
	// The number counts toward Artifacts and Executions. Nothing else considered.
	//
	// NOTE: There is no pagination supported.
	MaxNodeSize *int64 `protobuf:"varint,3,opt,name=max_node_size,json=maxNodeSize,def=20" json:"max_node_size,omitempty"`
}

// Default values for LineageGraphQueryOptions fields.
const (
	Default_LineageGraphQueryOptions_MaxNodeSize = int64(20)
)

func (x *LineageGraphQueryOptions) Reset() {
	*x = LineageGraphQueryOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LineageGraphQueryOptions) ProtoMessage() {}

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

// Deprecated: Use LineageGraphQueryOptions.ProtoReflect.Descriptor instead.
func (*LineageGraphQueryOptions) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{34}
}

func (m *LineageGraphQueryOptions) GetQueryNodes() isLineageGraphQueryOptions_QueryNodes {
	if m != nil {
		return m.QueryNodes
	}
	return nil
}

func (x *LineageGraphQueryOptions) GetArtifactsOptions() *ListOperationOptions {
	if x, ok := x.GetQueryNodes().(*LineageGraphQueryOptions_ArtifactsOptions); ok {
		return x.ArtifactsOptions
	}
	return nil
}

func (x *LineageGraphQueryOptions) GetStopConditions() *LineageGraphQueryOptions_BoundaryConstraint {
	if x != nil {
		return x.StopConditions
	}
	return nil
}

func (x *LineageGraphQueryOptions) GetMaxNodeSize() int64 {
	if x != nil && x.MaxNodeSize != nil {
		return *x.MaxNodeSize
	}
	return Default_LineageGraphQueryOptions_MaxNodeSize
}

type isLineageGraphQueryOptions_QueryNodes interface {
	isLineageGraphQueryOptions_QueryNodes()
}

type LineageGraphQueryOptions_ArtifactsOptions struct {
	ArtifactsOptions *ListOperationOptions `protobuf:"bytes,1,opt,name=artifacts_options,json=artifactsOptions,oneof"`
}

func (*LineageGraphQueryOptions_ArtifactsOptions) isLineageGraphQueryOptions_QueryNodes() {}

// The query options for lineage graph tracing from a list of interested nodes.
type LineageSubgraphQueryOptions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to StartingNodes:
	//	*LineageSubgraphQueryOptions_StartingArtifacts
	//	*LineageSubgraphQueryOptions_StartingExecutions
	StartingNodes isLineageSubgraphQueryOptions_StartingNodes `protobuf_oneof:"starting_nodes"`
	// The maximum number of hops from the `starting_nodes` to traverse.
	// A hop is defined as a jump to the next node following the path of
	// node -> event -> next_node.
	// For example, in the lineage graph a_1 -> e_1 -> a_2:
	// a_2 is 2 hops away from a_1, and e_1 is 1 hop away from a_1.
	// `max_num_hops` should be non-negative.
	// When its value is set to 0, only the `starting_nodes` are returned.
	MaxNumHops *int64 `protobuf:"varint,3,opt,name=max_num_hops,json=maxNumHops" json:"max_num_hops,omitempty"`
	// The direction of lineage graph tracing, which means the direction of all
	// hops in the tracing.
	//   An UPSTREAM hop means an expansion following the path of
	//     execution -> output_event -> artifact or
	//     artifact -> input_event -> execution
	//   A DOWNSTREAM hop means an expansion following the path of
	//     execution -> input_event -> artifact or
	//     artifact -> output_event -> execution
	// Please refer to `Direction` for more details.
	Direction *LineageSubgraphQueryOptions_Direction `protobuf:"varint,4,opt,name=direction,enum=ml_metadata.LineageSubgraphQueryOptions_Direction" json:"direction,omitempty"`
}

func (x *LineageSubgraphQueryOptions) Reset() {
	*x = LineageSubgraphQueryOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LineageSubgraphQueryOptions) ProtoMessage() {}

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

// Deprecated: Use LineageSubgraphQueryOptions.ProtoReflect.Descriptor instead.
func (*LineageSubgraphQueryOptions) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{35}
}

func (m *LineageSubgraphQueryOptions) GetStartingNodes() isLineageSubgraphQueryOptions_StartingNodes {
	if m != nil {
		return m.StartingNodes
	}
	return nil
}

func (x *LineageSubgraphQueryOptions) GetStartingArtifacts() *LineageSubgraphQueryOptions_StartingNodes {
	if x, ok := x.GetStartingNodes().(*LineageSubgraphQueryOptions_StartingArtifacts); ok {
		return x.StartingArtifacts
	}
	return nil
}

func (x *LineageSubgraphQueryOptions) GetStartingExecutions() *LineageSubgraphQueryOptions_StartingNodes {
	if x, ok := x.GetStartingNodes().(*LineageSubgraphQueryOptions_StartingExecutions); ok {
		return x.StartingExecutions
	}
	return nil
}

func (x *LineageSubgraphQueryOptions) GetMaxNumHops() int64 {
	if x != nil && x.MaxNumHops != nil {
		return *x.MaxNumHops
	}
	return 0
}

func (x *LineageSubgraphQueryOptions) GetDirection() LineageSubgraphQueryOptions_Direction {
	if x != nil && x.Direction != nil {
		return *x.Direction
	}
	return LineageSubgraphQueryOptions_DIRECTION_UNSPECIFIED
}

type isLineageSubgraphQueryOptions_StartingNodes interface {
	isLineageSubgraphQueryOptions_StartingNodes()
}

type LineageSubgraphQueryOptions_StartingArtifacts struct {
	StartingArtifacts *LineageSubgraphQueryOptions_StartingNodes `protobuf:"bytes,1,opt,name=starting_artifacts,json=startingArtifacts,oneof"`
}

type LineageSubgraphQueryOptions_StartingExecutions struct {
	StartingExecutions *LineageSubgraphQueryOptions_StartingNodes `protobuf:"bytes,2,opt,name=starting_executions,json=startingExecutions,oneof"`
}

func (*LineageSubgraphQueryOptions_StartingArtifacts) isLineageSubgraphQueryOptions_StartingNodes() {}

func (*LineageSubgraphQueryOptions_StartingExecutions) isLineageSubgraphQueryOptions_StartingNodes() {
}

// A simple path (e.g. {step{key:"foo"}}) can name an artifact in the context
// of an execution.
type Event_Path struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A simple path (e.g. {step{key:"foo"}}) can name an artifact in the
	// context of an execution.
	Steps []*Event_Path_Step `protobuf:"bytes,1,rep,name=steps" json:"steps,omitempty"`
}

func (x *Event_Path) Reset() {
	*x = Event_Path{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Event_Path) ProtoMessage() {}

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

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

func (x *Event_Path) GetSteps() []*Event_Path_Step {
	if x != nil {
		return x.Steps
	}
	return nil
}

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

	// Types that are assignable to Value:
	//	*Event_Path_Step_Index
	//	*Event_Path_Step_Key
	Value isEvent_Path_Step_Value `protobuf_oneof:"value"`
}

func (x *Event_Path_Step) Reset() {
	*x = Event_Path_Step{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Event_Path_Step) ProtoMessage() {}

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

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

func (m *Event_Path_Step) GetValue() isEvent_Path_Step_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *Event_Path_Step) GetIndex() int64 {
	if x, ok := x.GetValue().(*Event_Path_Step_Index); ok {
		return x.Index
	}
	return 0
}

func (x *Event_Path_Step) GetKey() string {
	if x, ok := x.GetValue().(*Event_Path_Step_Key); ok {
		return x.Key
	}
	return ""
}

type isEvent_Path_Step_Value interface {
	isEvent_Path_Step_Value()
}

type Event_Path_Step_Index struct {
	Index int64 `protobuf:"varint,1,opt,name=index,oneof"`
}

type Event_Path_Step_Key struct {
	Key string `protobuf:"bytes,2,opt,name=key,oneof"`
}

func (*Event_Path_Step_Index) isEvent_Path_Step_Value() {}

func (*Event_Path_Step_Key) isEvent_Path_Step_Value() {}

// The options to establish encrypted connections to MySQL using SSL.
type MySQLDatabaseConfig_SSLOptions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The path name of the client private key file.
	Key *string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
	// The path name of the client public key certificate file.
	Cert *string `protobuf:"bytes,2,opt,name=cert" json:"cert,omitempty"`
	// The path name of the CA certificate file.
	Ca *string `protobuf:"bytes,3,opt,name=ca" json:"ca,omitempty"`
	// The path name of the directory that contains trusted SSL CA certificates.
	Capath *string `protobuf:"bytes,4,opt,name=capath" json:"capath,omitempty"`
	// The list of permissible ciphers for SSL encryption.
	Cipher *string `protobuf:"bytes,5,opt,name=cipher" json:"cipher,omitempty"`
	// If set, enable verification of the server certificate against the host
	// name used when connecting to the server.
	VerifyServerCert *bool `protobuf:"varint,6,opt,name=verify_server_cert,json=verifyServerCert" json:"verify_server_cert,omitempty"`
}

func (x *MySQLDatabaseConfig_SSLOptions) Reset() {
	*x = MySQLDatabaseConfig_SSLOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MySQLDatabaseConfig_SSLOptions) ProtoMessage() {}

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

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

func (x *MySQLDatabaseConfig_SSLOptions) GetKey() string {
	if x != nil && x.Key != nil {
		return *x.Key
	}
	return ""
}

func (x *MySQLDatabaseConfig_SSLOptions) GetCert() string {
	if x != nil && x.Cert != nil {
		return *x.Cert
	}
	return ""
}

func (x *MySQLDatabaseConfig_SSLOptions) GetCa() string {
	if x != nil && x.Ca != nil {
		return *x.Ca
	}
	return ""
}

func (x *MySQLDatabaseConfig_SSLOptions) GetCapath() string {
	if x != nil && x.Capath != nil {
		return *x.Capath
	}
	return ""
}

func (x *MySQLDatabaseConfig_SSLOptions) GetCipher() string {
	if x != nil && x.Cipher != nil {
		return *x.Cipher
	}
	return ""
}

func (x *MySQLDatabaseConfig_SSLOptions) GetVerifyServerCert() bool {
	if x != nil && x.VerifyServerCert != nil {
		return *x.VerifyServerCert
	}
	return false
}

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

	// disable, allow, verify-ca, verify-full, etc. Reference:
	// https://www.postgresql.org/docs/current/libpq-connect.html
	Sslmode *string `protobuf:"bytes,1,opt,name=sslmode" json:"sslmode,omitempty"`
	// This parameter specifies the file name of the client SSL certificate,
	// replacing the default ~/.postgresql/postgresql.crt. This parameter is
	// ignored if an SSL connection is not made.
	Sslcert *string `protobuf:"bytes,2,opt,name=sslcert" json:"sslcert,omitempty"`
	// This parameter specifies the location for the secret key used for the
	// client certificate. It can either specify a file name that will be used
	// instead of the default ~/.postgresql/postgresql.key, this parameter is
	// ignored if an SSL connection is not made.
	Sslkey *string `protobuf:"bytes,3,opt,name=sslkey" json:"sslkey,omitempty"`
	// This parameter specifies the password for the secret key specified in
	// sslkey, allowing client certificate private keys to be stored in
	// encrypted form on disk even when interactive passphrase input is not
	// practical.
	Sslpassword *string `protobuf:"bytes,4,opt,name=sslpassword" json:"sslpassword,omitempty"`
	// This parameter specifies the name of a file containing SSL certificate
	// authority (CA) certificate(s). If the file exists, the server's
	// certificate will be verified to be signed by one of these authorities.
	// The default is ~/.postgresql/root.crt.
	Sslrootcert *string `protobuf:"bytes,5,opt,name=sslrootcert" json:"sslrootcert,omitempty"`
}

func (x *PostgreSQLDatabaseConfig_SSLOptions) Reset() {
	*x = PostgreSQLDatabaseConfig_SSLOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostgreSQLDatabaseConfig_SSLOptions) ProtoMessage() {}

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

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

func (x *PostgreSQLDatabaseConfig_SSLOptions) GetSslmode() string {
	if x != nil && x.Sslmode != nil {
		return *x.Sslmode
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig_SSLOptions) GetSslcert() string {
	if x != nil && x.Sslcert != nil {
		return *x.Sslcert
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig_SSLOptions) GetSslkey() string {
	if x != nil && x.Sslkey != nil {
		return *x.Sslkey
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig_SSLOptions) GetSslpassword() string {
	if x != nil && x.Sslpassword != nil {
		return *x.Sslpassword
	}
	return ""
}

func (x *PostgreSQLDatabaseConfig_SSLOptions) GetSslrootcert() string {
	if x != nil && x.Sslrootcert != nil {
		return *x.Sslrootcert
	}
	return ""
}

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

	// The PEM-encoded private key as a byte string, or Empty if no private key
	// should be used.
	ClientKey *string `protobuf:"bytes,1,opt,name=client_key,json=clientKey" json:"client_key,omitempty"`
	// The PEM-encoded certificate chain as a byte string to use or or Empty if
	// no certificate chain should be used.
	ServerCert *string `protobuf:"bytes,2,opt,name=server_cert,json=serverCert" json:"server_cert,omitempty"`
	// The PEM-encoded root certificates as a byte string, or Empty to retrieve
	// them from a default location chosen by gRPC runtime.
	CustomCa *string `protobuf:"bytes,3,opt,name=custom_ca,json=customCa" json:"custom_ca,omitempty"`
}

func (x *MetadataStoreClientConfig_SSLConfig) Reset() {
	*x = MetadataStoreClientConfig_SSLConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MetadataStoreClientConfig_SSLConfig) ProtoMessage() {}

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

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

func (x *MetadataStoreClientConfig_SSLConfig) GetClientKey() string {
	if x != nil && x.ClientKey != nil {
		return *x.ClientKey
	}
	return ""
}

func (x *MetadataStoreClientConfig_SSLConfig) GetServerCert() string {
	if x != nil && x.ServerCert != nil {
		return *x.ServerCert
	}
	return ""
}

func (x *MetadataStoreClientConfig_SSLConfig) GetCustomCa() string {
	if x != nil && x.CustomCa != nil {
		return *x.CustomCa
	}
	return ""
}

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

	// Private server key for SSL
	ServerKey *string `protobuf:"bytes,1,opt,name=server_key,json=serverKey" json:"server_key,omitempty"`
	// Public server certificate
	ServerCert *string `protobuf:"bytes,2,opt,name=server_cert,json=serverCert" json:"server_cert,omitempty"`
	// Custom certificate authority
	CustomCa *string `protobuf:"bytes,3,opt,name=custom_ca,json=customCa" json:"custom_ca,omitempty"`
	// Valid client certificate required?
	ClientVerify *bool `protobuf:"varint,4,opt,name=client_verify,json=clientVerify" json:"client_verify,omitempty"`
}

func (x *MetadataStoreServerConfig_SSLConfig) Reset() {
	*x = MetadataStoreServerConfig_SSLConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[51]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MetadataStoreServerConfig_SSLConfig) ProtoMessage() {}

func (x *MetadataStoreServerConfig_SSLConfig) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[51]
	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 MetadataStoreServerConfig_SSLConfig.ProtoReflect.Descriptor instead.
func (*MetadataStoreServerConfig_SSLConfig) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{30, 0}
}

func (x *MetadataStoreServerConfig_SSLConfig) GetServerKey() string {
	if x != nil && x.ServerKey != nil {
		return *x.ServerKey
	}
	return ""
}

func (x *MetadataStoreServerConfig_SSLConfig) GetServerCert() string {
	if x != nil && x.ServerCert != nil {
		return *x.ServerCert
	}
	return ""
}

func (x *MetadataStoreServerConfig_SSLConfig) GetCustomCa() string {
	if x != nil && x.CustomCa != nil {
		return *x.CustomCa
	}
	return ""
}

func (x *MetadataStoreServerConfig_SSLConfig) GetClientVerify() bool {
	if x != nil && x.ClientVerify != nil {
		return *x.ClientVerify
	}
	return false
}

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

	// Field to order.
	Field *ListOperationOptions_OrderByField_Field `protobuf:"varint,1,opt,name=field,enum=ml_metadata.ListOperationOptions_OrderByField_Field,def=3" json:"field,omitempty"`
	// Direction of ordering.
	IsAsc *bool `protobuf:"varint,2,opt,name=is_asc,json=isAsc,def=1" json:"is_asc,omitempty"`
}

// Default values for ListOperationOptions_OrderByField fields.
const (
	Default_ListOperationOptions_OrderByField_Field = ListOperationOptions_OrderByField_ID
	Default_ListOperationOptions_OrderByField_IsAsc = bool(true)
)

func (x *ListOperationOptions_OrderByField) Reset() {
	*x = ListOperationOptions_OrderByField{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListOperationOptions_OrderByField) ProtoMessage() {}

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

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

func (x *ListOperationOptions_OrderByField) GetField() ListOperationOptions_OrderByField_Field {
	if x != nil && x.Field != nil {
		return *x.Field
	}
	return Default_ListOperationOptions_OrderByField_Field
}

func (x *ListOperationOptions_OrderByField) GetIsAsc() bool {
	if x != nil && x.IsAsc != nil {
		return *x.IsAsc
	}
	return Default_ListOperationOptions_OrderByField_IsAsc
}

// Filtering conditions for retrieving the lineage graph.
type LineageGraphQueryOptions_BoundaryConstraint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The maximum number of hops from the `query_nodes` to traverse.
	// A hop is defined as a jump to the next node following the path of
	// node -> event -> next_node.
	// For example, in the lineage graph a_1 -> e_1 -> a_2:
	// a_2 is 2 hops away from a_1, and e_1 is 1 hop away from a_1.
	// `max_num_hops` should be non-negative.
	// When its value is set to 0, only the `query_nodes` are returned.
	MaxNumHops *int64 `protobuf:"varint,1,opt,name=max_num_hops,json=maxNumHops" json:"max_num_hops,omitempty"`
	// Filtering conditions for retrieving the lineage graph.
	// Please refer to `ListOperationOptions.filter_query` for the syntax.
	//
	// If set, the `boundary_artifacts` defines which artifacts to keep in the
	// returned lineage graph during the graph search.
	// Artifacts that do not satisfy the `boundary_artifacts` are filtered out,
	// and the subgraphs starting at them will be pruned.
	// If not set, no artifacts will be filtered out.
	// Taking the following lineage graph as example:
	// (`a` represents an Artifact, `e` represents an Execution, each arrow
	// represents a hop.)
	//  a_0   a_1     a_3
	//   |      \   /     \
	//  \/      \/ \/     \/
	//  e_0      e_1      e_3
	//                   /   \
	//                  \/   \/
	//        a_2     a_4     a_5
	//           \   /
	//           \/ \/
	//            e_2
	// To query all the upstream and downstream nodes 3 hops away from a_4,
	// while excluding the upstream subgraph starting at a_3, then
	// `stop_conditions` can be set as:
	// {
	//   max_num_hops: 3
	//   boundary_artifacts: 'id != 3'
	// }
	// With the `stop_conditions`, {a_3, e_1, a_1, a_0, e_0} will be filtered
	// out.
	// The returned lineage graph looks like:
	//                    e_3
	//                   /   \
	//                  \/   \/
	//        a_2     a_4     a_5
	//           \   /
	//           \/ \/
	//            e_2
	BoundaryArtifacts *string `protobuf:"bytes,2,opt,name=boundary_artifacts,json=boundaryArtifacts" json:"boundary_artifacts,omitempty"`
	// If set, the `boundary_executions` defines which executions to keep in the
	// returned lineage graph during the graph search.
	// Executions that do not satisfy the `boundary_executions` are filtered out
	// and the subgraphs starting at them will be pruned.
	// If not set, no executions will be filtered out.
	// In the example above, to query for all the upstream and downstream nodes
	// 3 hops away from a_4, while excluding the upstream subgraph and the
	// downstream subgraph starting at e_3, then `stop_conditions` can be set as
	// {
	//   max_num_hops: 3
	//   boundary_executions: 'id != 3'
	// }
	// With the `stop_conditions`, {e_3, a_5, a_3, e_1, a_1, a_0, e_0} will be
	// filtered out.
	// The returned lineage graph looks like:
	//        a_2     a_4
	//           \   /
	//           \/ \/
	//            e_2
	// However, for the following graph:
	//  a_0   a_1     a_3
	//   |      \   /     \
	//  \/      \/ \/     \/
	//  e_0      e_1      e_3
	//              \    /   \
	//               \/ \/   \/
	//        a_2     a_4     a_5
	//           \   /
	//           \/ \/
	//            e_2
	// With the same `stop_conditions`, only {e_3, a_5, a_0, e_0} will be
	// filtered out.
	// The returned lineage graph looks like:
	//       a_1     a_3
	//          \   /
	//          \/ \/
	//           e_1
	//              \
	//               \/
	//        a_2     a_4
	//           \   /
	//           \/ \/
	//            e_2
	BoundaryExecutions *string `protobuf:"bytes,3,opt,name=boundary_executions,json=boundaryExecutions" json:"boundary_executions,omitempty"`
}

func (x *LineageGraphQueryOptions_BoundaryConstraint) Reset() {
	*x = LineageGraphQueryOptions_BoundaryConstraint{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LineageGraphQueryOptions_BoundaryConstraint) ProtoMessage() {}

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

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

func (x *LineageGraphQueryOptions_BoundaryConstraint) GetMaxNumHops() int64 {
	if x != nil && x.MaxNumHops != nil {
		return *x.MaxNumHops
	}
	return 0
}

func (x *LineageGraphQueryOptions_BoundaryConstraint) GetBoundaryArtifacts() string {
	if x != nil && x.BoundaryArtifacts != nil {
		return *x.BoundaryArtifacts
	}
	return ""
}

func (x *LineageGraphQueryOptions_BoundaryConstraint) GetBoundaryExecutions() string {
	if x != nil && x.BoundaryExecutions != nil {
		return *x.BoundaryExecutions
	}
	return ""
}

// `starting_nodes` is a list of nodes of interest to start graph tracing.
// NOTE: The maximum number of starting nodes is 100 at most.
type LineageSubgraphQueryOptions_StartingNodes struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// `filter_query` is a boolean expression in SQL syntax that is used to
	// specify the conditions on starting nodes.
	// Please refer to ListOperationOptions.filter_query for more details.
	FilterQuery *string `protobuf:"bytes,1,opt,name=filter_query,json=filterQuery" json:"filter_query,omitempty"`
}

func (x *LineageSubgraphQueryOptions_StartingNodes) Reset() {
	*x = LineageSubgraphQueryOptions_StartingNodes{}
	if protoimpl.UnsafeEnabled {
		mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[54]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LineageSubgraphQueryOptions_StartingNodes) ProtoMessage() {}

func (x *LineageSubgraphQueryOptions_StartingNodes) ProtoReflect() protoreflect.Message {
	mi := &file_ml_metadata_proto_metadata_store_proto_msgTypes[54]
	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 LineageSubgraphQueryOptions_StartingNodes.ProtoReflect.Descriptor instead.
func (*LineageSubgraphQueryOptions_StartingNodes) Descriptor() ([]byte, []int) {
	return file_ml_metadata_proto_metadata_store_proto_rawDescGZIP(), []int{35, 0}
}

func (x *LineageSubgraphQueryOptions_StartingNodes) GetFilterQuery() string {
	if x != nil && x.FilterQuery != nil {
		return *x.FilterQuery
	}
	return ""
}

var file_ml_metadata_proto_metadata_store_proto_extTypes = []protoimpl.ExtensionInfo{
	{
		ExtendedType:  (*descriptorpb.EnumValueOptions)(nil),
		ExtensionType: (*SystemTypeExtension)(nil),
		Field:         384560917,
		Name:          "ml_metadata.system_type_extension",
		Tag:           "bytes,384560917,opt,name=system_type_extension",
		Filename:      "ml_metadata/proto/metadata_store.proto",
	},
}

// Extension fields to descriptorpb.EnumValueOptions.
var (
	// The system type information of each simple type enum refers to.
	//
	// optional ml_metadata.SystemTypeExtension system_type_extension = 384560917;
	E_SystemTypeExtension = &file_ml_metadata_proto_metadata_store_proto_extTypes[0]
)

var File_ml_metadata_proto_metadata_store_proto protoreflect.FileDescriptor

var file_ml_metadata_proto_metadata_store_proto_rawDesc = []byte{
	0x0a, 0x26, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x74, 0x6f,
	0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x22, 0x32, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78,
	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65,
	0x4e, 0x61, 0x6d, 0x65, 0x22, 0x91, 0x02, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d,
	0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a,
	0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x75, 0x63,
	0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79,
	0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f,
	0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42,
	0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb5, 0x06, 0x0a, 0x08, 0x41, 0x72, 0x74,
	0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70,
	0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65,
	0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65,
	0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65,
	0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x72, 0x6f,
	0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69,
	0x66, 0x61, 0x63, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
	0x12, 0x58, 0x0a, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65,
	0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6d, 0x6c,
	0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
	0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74,
	0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
	0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a,
	0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e,
	0x63, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14,
	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x45,
	0x70, 0x6f, 0x63, 0x68, 0x12, 0x3e, 0x0a, 0x1c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x65,
	0x70, 0x6f, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x45,
	0x70, 0x6f, 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x41, 0x6e, 0x79, 0x52, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x1a, 0x51, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x12, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
	0x6f, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47,
	0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13,
	0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54,
	0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44,
	0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x45, 0x44, 0x10,
	0x05, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x06,
	0x22, 0xd2, 0x04, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
	0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
	0x49, 0x64, 0x12, 0x49, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x4c, 0x0a,
	0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x2f, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41,
	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74,
	0x65, 0x6d, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x58, 0x0a, 0x0f, 0x50,
	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x19, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72,
	0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd, 0x01, 0x0a, 0x15, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
	0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x26, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x1a, 0x1b, 0xaa, 0xf1, 0xfd, 0xba,
	0x0b, 0x15, 0x0a, 0x13, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x07, 0x44, 0x41, 0x54, 0x41, 0x53,
	0x45, 0x54, 0x10, 0x01, 0x1a, 0x14, 0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x0e, 0x0a, 0x0c, 0x6d, 0x6c,
	0x6d, 0x64, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x4d, 0x4f,
	0x44, 0x45, 0x4c, 0x10, 0x02, 0x1a, 0x12, 0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x0c, 0x0a, 0x0a, 0x6d,
	0x6c, 0x6d, 0x64, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x07, 0x4d, 0x45, 0x54,
	0x52, 0x49, 0x43, 0x53, 0x10, 0x03, 0x1a, 0x14, 0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x0e, 0x0a, 0x0c,
	0x6d, 0x6c, 0x6d, 0x64, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0a,
	0x53, 0x54, 0x41, 0x54, 0x49, 0x53, 0x54, 0x49, 0x43, 0x53, 0x10, 0x04, 0x1a, 0x17, 0xaa, 0xf1,
	0xfd, 0xba, 0x0b, 0x11, 0x0a, 0x0f, 0x6d, 0x6c, 0x6d, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69,
	0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0xaa, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12,
	0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64,
	0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f,
	0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
	0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68,
	0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17,
	0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x65,
	0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a,
	0x18, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x5f, 0x73, 0x69,
	0x6e, 0x63, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x16, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e,
	0x63, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65,
	0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x77, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x32,
	0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x65, 0x6e,
	0x74, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x2e, 0x53, 0x74, 0x65, 0x70, 0x52, 0x05, 0x73, 0x74, 0x65,
	0x70, 0x73, 0x1a, 0x3b, 0x0a, 0x04, 0x53, 0x74, 0x65, 0x70, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6e,
	0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x64,
	0x65, 0x78, 0x12, 0x12, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
	0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
	0x90, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x45,
	0x44, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45,
	0x43, 0x4c, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x02, 0x12, 0x09,
	0x0a, 0x05, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x55, 0x54,
	0x50, 0x55, 0x54, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41,
	0x4c, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x54,
	0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x10, 0x06, 0x12, 0x12,
	0x0a, 0x0e, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54,
	0x10, 0x07, 0x22, 0xaa, 0x06, 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64,
	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
	0x49, 0x64, 0x12, 0x46, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
	0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6d,
	0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74,
	0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x72,
	0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
	0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x65,
	0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69,
	0x65, 0x73, 0x12, 0x59, 0x0a, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x6f,
	0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x65, 0x63,
	0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x70,
	0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x63, 0x75, 0x73,
	0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a,
	0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e,
	0x63, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14,
	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x45,
	0x70, 0x6f, 0x63, 0x68, 0x12, 0x3e, 0x0a, 0x1c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x65,
	0x70, 0x6f, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x45,
	0x70, 0x6f, 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x41, 0x6e, 0x79, 0x52, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x1a, 0x51, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x12, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
	0x5e, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x0b,
	0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x43,
	0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49,
	0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x41, 0x43, 0x48, 0x45, 0x44, 0x10,
	0x05, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x22,
	0xf9, 0x05, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
	0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
	0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
	0x70, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x3e,
	0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40,
	0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x4d, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e,
	0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x73,
	0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x1a,
	0x58, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xef, 0x01, 0x0a, 0x15, 0x53, 0x79,
	0x73, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x73, 0x65, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x1a, 0x1c,
	0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x16, 0x0a, 0x14, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
	0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x05,
	0x54, 0x52, 0x41, 0x49, 0x4e, 0x10, 0x01, 0x1a, 0x12, 0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x0c, 0x0a,
	0x0a, 0x6d, 0x6c, 0x6d, 0x64, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x09, 0x54,
	0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x02, 0x1a, 0x16, 0xaa, 0xf1, 0xfd, 0xba,
	0x0b, 0x10, 0x0a, 0x0e, 0x6d, 0x6c, 0x6d, 0x64, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f,
	0x72, 0x6d, 0x12, 0x21, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x1a,
	0x14, 0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x0e, 0x0a, 0x0c, 0x6d, 0x6c, 0x6d, 0x64, 0x2e, 0x50, 0x72,
	0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x08, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54,
	0x45, 0x10, 0x04, 0x1a, 0x15, 0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x0f, 0x0a, 0x0d, 0x6d, 0x6c, 0x6d,
	0x64, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x44, 0x45,
	0x50, 0x4c, 0x4f, 0x59, 0x10, 0x05, 0x1a, 0x13, 0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x0d, 0x0a, 0x0b,
	0x6d, 0x6c, 0x6d, 0x64, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x22, 0xbf, 0x03, 0x0a, 0x0b,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x65,
	0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x0a,
	0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x28, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65,
	0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70,
	0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65,
	0x64, 0x42, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x54,
	0x79, 0x70, 0x65, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3e, 0x0a,
	0x15, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x42, 0x61,
	0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10,
	0x00, 0x1a, 0x1a, 0xaa, 0xf1, 0xfd, 0xba, 0x0b, 0x14, 0x0a, 0x12, 0x75, 0x6e, 0x73, 0x65, 0x74,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xfc, 0x04,
	0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a,
	0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
	0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78,
	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70,
	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x24, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65,
	0x73, 0x12, 0x57, 0x0a, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x70,
	0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6d,
	0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x78, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
	0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f,
	0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x45, 0x70, 0x6f, 0x63,
	0x68, 0x12, 0x3e, 0x0a, 0x1c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63,
	0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x45, 0x70, 0x6f, 0x63,
	0x68, 0x12, 0x3d, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79,
	0x52, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x1a, 0x51, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f,
	0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x28,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4d, 0x0a, 0x0b,
	0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x61,
	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x0b, 0x41,
	0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78,
	0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a,
	0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0d,
	0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x19, 0x0a,
	0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x07, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65,
	0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x9b, 0x04, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x67,
	0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74,
	0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66,
	0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63,
	0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
	0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x65,
	0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3d, 0x0a,
	0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x09,
	0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x15, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72,
	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
	0x73, 0x12, 0x36, 0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65,
	0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x78, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6c,
	0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
	0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x65,
	0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6c,
	0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52,
	0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69,
	0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72,
	0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x6c,
	0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x22, 0x92, 0x04, 0x0a, 0x12, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
	0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x69,
	0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x6c, 0x5f,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63,
	0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12,
	0x45, 0x0a, 0x0a, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53,
	0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x73,
	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6d,
	0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72,
	0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53,
	0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74,
	0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x04, 0x6c, 0x69, 0x73,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04,
	0x6c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x2e, 0x4e, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72,
	0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12,
	0x36, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d,
	0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x79, 0x41, 0x72,
	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65,
	0x48, 0x00, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x75, 0x70, 0x6c, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x05,
	0x74, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x64, 0x69, 0x63, 0x74, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74,
	0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x69, 0x63, 0x74,
	0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x5a, 0x0a, 0x17, 0x55, 0x6e, 0x69, 0x6f,
	0x6e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74,
	0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64,
	0x61, 0x74, 0x65, 0x73, 0x22, 0x63, 0x0a, 0x1e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75,
	0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72,
	0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6c,
	0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f,
	0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x53, 0x0a, 0x16, 0x4c, 0x69, 0x73,
	0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63,
	0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x18,
	0x0a, 0x16, 0x4e, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74,
	0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x41, 0x6e, 0x79, 0x41,
	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x22, 0x56, 0x0a, 0x17, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x08,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
	0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74,
	0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52,
	0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd7, 0x02, 0x0a, 0x16, 0x44, 0x69,
	0x63, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x53, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66,
	0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x72,
	0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70,
	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x6f, 0x6e,
	0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69,
	0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6e, 0x6f, 0x6e, 0x65, 0x54,
	0x79, 0x70, 0x65, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x53,
	0x0a, 0x15, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69,
	0x65, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69,
	0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x13,
	0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x54,
	0x79, 0x70, 0x65, 0x1a, 0x5e, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 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, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74,
	0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x22, 0x14, 0x0a, 0x12, 0x46, 0x61, 0x6b, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62,
	0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xbc, 0x03, 0x0a, 0x13, 0x4d, 0x79,
	0x53, 0x51, 0x4c, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74,
	0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74,
	0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73,
	0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73,
	0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x4c, 0x0a,
	0x0b, 0x73, 0x73, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x53, 0x4c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
	0x0a, 0x73, 0x73, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73,
	0x6b, 0x69, 0x70, 0x5f, 0x64, 0x62, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x44, 0x62, 0x43, 0x72, 0x65,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa0, 0x01, 0x0a, 0x0a, 0x53, 0x53, 0x4c, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x61,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x63, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x61,
	0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x70, 0x61,
	0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x76, 0x65,
	0x72, 0x69, 0x66, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x22, 0xf6, 0x01, 0x0a, 0x1a, 0x53, 0x71, 0x6c,
	0x69, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x6e,
	0x61, 0x6d, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66,
	0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x55, 0x72, 0x69, 0x12, 0x5f, 0x0a, 0x0f, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x53, 0x71, 0x6c, 0x69, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x54, 0x0a, 0x0e, 0x43,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a,
	0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45,
	0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x41, 0x44,
	0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x41, 0x44, 0x57,
	0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10,
	0x03, 0x22, 0xdb, 0x03, 0x0a, 0x18, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c,
	0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12,
	0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f,
	0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x61, 0x64, 0x64, 0x72, 0x12, 0x12,
	0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f,
	0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
	0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
	0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16,
	0x0a, 0x06, 0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x64,
	0x62, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x44, 0x62, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x4e, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x44, 0x61, 0x74, 0x61,
	0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x53, 0x4c, 0x4f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x1a, 0x9c, 0x01, 0x0a, 0x0a, 0x53, 0x53, 0x4c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
	0x18, 0x0a, 0x07, 0x73, 0x73, 0x6c, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x73, 0x73, 0x6c, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x73, 0x6c,
	0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x73, 0x6c, 0x63,
	0x65, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x73, 0x6c, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x6c, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x73,
	0x73, 0x6c, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x73, 0x73, 0x6c, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a,
	0x0b, 0x73, 0x73, 0x6c, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x65, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x6c, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x65, 0x72, 0x74, 0x22,
	0x95, 0x01, 0x0a, 0x10, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75,
	0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x70,
	0x67, 0x72, 0x61, 0x64, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41,
	0x0a, 0x1b, 0x64, 0x6f, 0x77, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x73,
	0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x67, 0x72, 0x61,
	0x64, 0x65, 0x54, 0x6f, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x36, 0x0a, 0x0c, 0x52, 0x65, 0x74, 0x72, 0x79,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x6e,
	0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0d, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22,
	0xea, 0x02, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x0d, 0x66, 0x61, 0x6b, 0x65, 0x5f, 0x64, 0x61, 0x74,
	0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6c,
	0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x44, 0x61,
	0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c,
	0x66, 0x61, 0x6b, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x05,
	0x6d, 0x79, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x6c,
	0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x44,
	0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52,
	0x05, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x12, 0x41, 0x0a, 0x06, 0x73, 0x71, 0x6c, 0x69, 0x74, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x71, 0x6c, 0x69, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48,
	0x00, 0x52, 0x06, 0x73, 0x71, 0x6c, 0x69, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x6f, 0x73,
	0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73,
	0x71, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x88, 0x01, 0x0a,
	0x14, 0x47, 0x72, 0x70, 0x63, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x75,
	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x63,
	0x65, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x65, 0x6e,
	0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x6d, 0x61, 0x78, 0x52, 0x65,
	0x63, 0x65, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67,
	0x74, 0x68, 0x12, 0x33, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
	0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x13, 0x68, 0x74, 0x74, 0x70, 0x32, 0x4d, 0x61, 0x78, 0x50, 0x69, 0x6e, 0x67,
	0x53, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x19, 0x4d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4f, 0x0a,
	0x0a, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x53, 0x4c, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e,
	0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65,
	0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x43, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x10, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c,
	0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x5f, 0x73, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x1a, 0x68, 0x0a, 0x09,
	0x53, 0x53, 0x4c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73,
	0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x75, 0x73,
	0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75,
	0x73, 0x74, 0x6f, 0x6d, 0x43, 0x61, 0x22, 0x94, 0x03, 0x0a, 0x19, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1d, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x12, 0x4a, 0x0a, 0x11, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x6c,
	0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x10, 0x6d, 0x69, 0x67, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0a,
	0x73, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x30, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x53, 0x4c, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x8d, 0x01,
	0x0a, 0x09, 0x53, 0x53, 0x4c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
	0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, 0xb0, 0x03,
	0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
	0x02, 0x32, 0x30, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x69,
	0x7a, 0x65, 0x12, 0x54, 0x0a, 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x66,
	0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x6c, 0x5f,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x72,
	0x64, 0x65, 0x72, 0x42, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65,
	0x72, 0x42, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74,
	0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x51, 0x75,
	0x65, 0x72, 0x79, 0x1a, 0xca, 0x01, 0x0a, 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x12, 0x4e, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x46, 0x69,
	0x65, 0x6c, 0x64, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x02, 0x49, 0x44, 0x52, 0x05, 0x66,
	0x69, 0x65, 0x6c, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x61, 0x73, 0x63, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x05, 0x69, 0x73, 0x41, 0x73,
	0x63, 0x22, 0x4d, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x49,
	0x45, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45,
	0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54,
	0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x44, 0x10, 0x03,
	0x22, 0xbf, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
	0x1b, 0x0a, 0x09, 0x69, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x08, 0x69, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12,
	0x42, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64,
	0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x49,
	0x64, 0x73, 0x22, 0x31, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10,
	0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9f, 0x03, 0x0a, 0x18, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x67,
	0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x5f,
	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74,
	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x48, 0x00, 0x52, 0x10, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x6e,
	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x6e, 0x65,
	0x61, 0x67, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e,
	0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e,
	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x6e,
	0x6f, 0x64, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x3a, 0x02,
	0x32, 0x30, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a,
	0x96, 0x01, 0x0a, 0x12, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x73,
	0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75,
	0x6d, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61,
	0x78, 0x4e, 0x75, 0x6d, 0x48, 0x6f, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x62, 0x6f, 0x75, 0x6e,
	0x64, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x41, 0x72,
	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x62, 0x6f, 0x75, 0x6e, 0x64,
	0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x45, 0x78,
	0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x72,
	0x79, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x84, 0x04, 0x0a, 0x1b, 0x4c, 0x69, 0x6e, 0x65,
	0x61, 0x67, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x67, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x69, 0x6e, 0x67, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x67, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70,
	0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x74,
	0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x48, 0x00, 0x52, 0x11, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73,
	0x12, 0x69, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x65,
	0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e,
	0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x6e, 0x65,
	0x61, 0x67, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67,
	0x4e, 0x6f, 0x64, 0x65, 0x73, 0x48, 0x00, 0x52, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e,
	0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x6d,
	0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x48, 0x6f, 0x70, 0x73, 0x12, 0x50, 0x0a,
	0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x32, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c,
	0x69, 0x6e, 0x65, 0x61, 0x67, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x51, 0x75,
	0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a,
	0x32, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x73,
	0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x51, 0x75,
	0x65, 0x72, 0x79, 0x22, 0x57, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x19, 0x0a, 0x15, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e,
	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x55,
	0x50, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f, 0x57,
	0x4e, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x49, 0x44,
	0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x03, 0x42, 0x10, 0x0a, 0x0e,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2a, 0x60,
	0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b,
	0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49,
	0x4e, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x02,
	0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06,
	0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x54,
	0x4f, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x06,
	0x3a, 0x7b, 0x0a, 0x15, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f,
	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x95, 0xde, 0xaf,
	0xb7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
	0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
}

var (
	file_ml_metadata_proto_metadata_store_proto_rawDescOnce sync.Once
	file_ml_metadata_proto_metadata_store_proto_rawDescData = file_ml_metadata_proto_metadata_store_proto_rawDesc
)

func file_ml_metadata_proto_metadata_store_proto_rawDescGZIP() []byte {
	file_ml_metadata_proto_metadata_store_proto_rawDescOnce.Do(func() {
		file_ml_metadata_proto_metadata_store_proto_rawDescData = protoimpl.X.CompressGZIP(file_ml_metadata_proto_metadata_store_proto_rawDescData)
	})
	return file_ml_metadata_proto_metadata_store_proto_rawDescData
}

var file_ml_metadata_proto_metadata_store_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_ml_metadata_proto_metadata_store_proto_msgTypes = make([]protoimpl.MessageInfo, 55)
var file_ml_metadata_proto_metadata_store_proto_goTypes = []interface{}{
	(PropertyType)(0),                              // 0: ml_metadata.PropertyType
	(Artifact_State)(0),                            // 1: ml_metadata.Artifact.State
	(ArtifactType_SystemDefinedBaseType)(0),        // 2: ml_metadata.ArtifactType.SystemDefinedBaseType
	(Event_Type)(0),                                // 3: ml_metadata.Event.Type
	(Execution_State)(0),                           // 4: ml_metadata.Execution.State
	(ExecutionType_SystemDefinedBaseType)(0),       // 5: ml_metadata.ExecutionType.SystemDefinedBaseType
	(ContextType_SystemDefinedBaseType)(0),         // 6: ml_metadata.ContextType.SystemDefinedBaseType
	(SqliteMetadataSourceConfig_ConnectionMode)(0), // 7: ml_metadata.SqliteMetadataSourceConfig.ConnectionMode
	(ListOperationOptions_OrderByField_Field)(0),   // 8: ml_metadata.ListOperationOptions.OrderByField.Field
	(LineageSubgraphQueryOptions_Direction)(0),     // 9: ml_metadata.LineageSubgraphQueryOptions.Direction
	(*SystemTypeExtension)(nil),                    // 10: ml_metadata.SystemTypeExtension
	(*Value)(nil),                                  // 11: ml_metadata.Value
	(*Artifact)(nil),                               // 12: ml_metadata.Artifact
	(*ArtifactType)(nil),                           // 13: ml_metadata.ArtifactType
	(*Event)(nil),                                  // 14: ml_metadata.Event
	(*Execution)(nil),                              // 15: ml_metadata.Execution
	(*ExecutionType)(nil),                          // 16: ml_metadata.ExecutionType
	(*ContextType)(nil),                            // 17: ml_metadata.ContextType
	(*Context)(nil),                                // 18: ml_metadata.Context
	(*Attribution)(nil),                            // 19: ml_metadata.Attribution
	(*Association)(nil),                            // 20: ml_metadata.Association
	(*ParentContext)(nil),                          // 21: ml_metadata.ParentContext
	(*LineageGraph)(nil),                           // 22: ml_metadata.LineageGraph
	(*ArtifactStructType)(nil),                     // 23: ml_metadata.ArtifactStructType
	(*UnionArtifactStructType)(nil),                // 24: ml_metadata.UnionArtifactStructType
	(*IntersectionArtifactStructType)(nil),         // 25: ml_metadata.IntersectionArtifactStructType
	(*ListArtifactStructType)(nil),                 // 26: ml_metadata.ListArtifactStructType
	(*NoneArtifactStructType)(nil),                 // 27: ml_metadata.NoneArtifactStructType
	(*AnyArtifactStructType)(nil),                  // 28: ml_metadata.AnyArtifactStructType
	(*TupleArtifactStructType)(nil),                // 29: ml_metadata.TupleArtifactStructType
	(*DictArtifactStructType)(nil),                 // 30: ml_metadata.DictArtifactStructType
	(*FakeDatabaseConfig)(nil),                     // 31: ml_metadata.FakeDatabaseConfig
	(*MySQLDatabaseConfig)(nil),                    // 32: ml_metadata.MySQLDatabaseConfig
	(*SqliteMetadataSourceConfig)(nil),             // 33: ml_metadata.SqliteMetadataSourceConfig
	(*PostgreSQLDatabaseConfig)(nil),               // 34: ml_metadata.PostgreSQLDatabaseConfig
	(*MigrationOptions)(nil),                       // 35: ml_metadata.MigrationOptions
	(*RetryOptions)(nil),                           // 36: ml_metadata.RetryOptions
	(*ConnectionConfig)(nil),                       // 37: ml_metadata.ConnectionConfig
	(*GrpcChannelArguments)(nil),                   // 38: ml_metadata.GrpcChannelArguments
	(*MetadataStoreClientConfig)(nil),              // 39: ml_metadata.MetadataStoreClientConfig
	(*MetadataStoreServerConfig)(nil),              // 40: ml_metadata.MetadataStoreServerConfig
	(*ListOperationOptions)(nil),                   // 41: ml_metadata.ListOperationOptions
	(*ListOperationNextPageToken)(nil),             // 42: ml_metadata.ListOperationNextPageToken
	(*TransactionOptions)(nil),                     // 43: ml_metadata.TransactionOptions
	(*LineageGraphQueryOptions)(nil),               // 44: ml_metadata.LineageGraphQueryOptions
	(*LineageSubgraphQueryOptions)(nil),            // 45: ml_metadata.LineageSubgraphQueryOptions
	nil,                                            // 46: ml_metadata.Artifact.PropertiesEntry
	nil,                                            // 47: ml_metadata.Artifact.CustomPropertiesEntry
	nil,                                            // 48: ml_metadata.ArtifactType.PropertiesEntry
	(*Event_Path)(nil),                             // 49: ml_metadata.Event.Path
	(*Event_Path_Step)(nil),                        // 50: ml_metadata.Event.Path.Step
	nil,                                            // 51: ml_metadata.Execution.PropertiesEntry
	nil,                                            // 52: ml_metadata.Execution.CustomPropertiesEntry
	nil,                                            // 53: ml_metadata.ExecutionType.PropertiesEntry
	nil,                                            // 54: ml_metadata.ContextType.PropertiesEntry
	nil,                                            // 55: ml_metadata.Context.PropertiesEntry
	nil,                                            // 56: ml_metadata.Context.CustomPropertiesEntry
	nil,                                            // 57: ml_metadata.DictArtifactStructType.PropertiesEntry
	(*MySQLDatabaseConfig_SSLOptions)(nil),         // 58: ml_metadata.MySQLDatabaseConfig.SSLOptions
	(*PostgreSQLDatabaseConfig_SSLOptions)(nil),    // 59: ml_metadata.PostgreSQLDatabaseConfig.SSLOptions
	(*MetadataStoreClientConfig_SSLConfig)(nil),    // 60: ml_metadata.MetadataStoreClientConfig.SSLConfig
	(*MetadataStoreServerConfig_SSLConfig)(nil),    // 61: ml_metadata.MetadataStoreServerConfig.SSLConfig
	(*ListOperationOptions_OrderByField)(nil),      // 62: ml_metadata.ListOperationOptions.OrderByField
	(*LineageGraphQueryOptions_BoundaryConstraint)(nil), // 63: ml_metadata.LineageGraphQueryOptions.BoundaryConstraint
	(*LineageSubgraphQueryOptions_StartingNodes)(nil),   // 64: ml_metadata.LineageSubgraphQueryOptions.StartingNodes
	(*structpb.Struct)(nil),                             // 65: google.protobuf.Struct
	(*anypb.Any)(nil),                                   // 66: google.protobuf.Any
	(*descriptorpb.EnumValueOptions)(nil),               // 67: google.protobuf.EnumValueOptions
}
var file_ml_metadata_proto_metadata_store_proto_depIdxs = []int32{
	65, // 0: ml_metadata.Value.struct_value:type_name -> google.protobuf.Struct
	66, // 1: ml_metadata.Value.proto_value:type_name -> google.protobuf.Any
	46, // 2: ml_metadata.Artifact.properties:type_name -> ml_metadata.Artifact.PropertiesEntry
	47, // 3: ml_metadata.Artifact.custom_properties:type_name -> ml_metadata.Artifact.CustomPropertiesEntry
	1,  // 4: ml_metadata.Artifact.state:type_name -> ml_metadata.Artifact.State
	66, // 5: ml_metadata.Artifact.system_metadata:type_name -> google.protobuf.Any
	48, // 6: ml_metadata.ArtifactType.properties:type_name -> ml_metadata.ArtifactType.PropertiesEntry
	2,  // 7: ml_metadata.ArtifactType.base_type:type_name -> ml_metadata.ArtifactType.SystemDefinedBaseType
	49, // 8: ml_metadata.Event.path:type_name -> ml_metadata.Event.Path
	3,  // 9: ml_metadata.Event.type:type_name -> ml_metadata.Event.Type
	66, // 10: ml_metadata.Event.system_metadata:type_name -> google.protobuf.Any
	4,  // 11: ml_metadata.Execution.last_known_state:type_name -> ml_metadata.Execution.State
	51, // 12: ml_metadata.Execution.properties:type_name -> ml_metadata.Execution.PropertiesEntry
	52, // 13: ml_metadata.Execution.custom_properties:type_name -> ml_metadata.Execution.CustomPropertiesEntry
	66, // 14: ml_metadata.Execution.system_metadata:type_name -> google.protobuf.Any
	53, // 15: ml_metadata.ExecutionType.properties:type_name -> ml_metadata.ExecutionType.PropertiesEntry
	23, // 16: ml_metadata.ExecutionType.input_type:type_name -> ml_metadata.ArtifactStructType
	23, // 17: ml_metadata.ExecutionType.output_type:type_name -> ml_metadata.ArtifactStructType
	5,  // 18: ml_metadata.ExecutionType.base_type:type_name -> ml_metadata.ExecutionType.SystemDefinedBaseType
	54, // 19: ml_metadata.ContextType.properties:type_name -> ml_metadata.ContextType.PropertiesEntry
	6,  // 20: ml_metadata.ContextType.base_type:type_name -> ml_metadata.ContextType.SystemDefinedBaseType
	55, // 21: ml_metadata.Context.properties:type_name -> ml_metadata.Context.PropertiesEntry
	56, // 22: ml_metadata.Context.custom_properties:type_name -> ml_metadata.Context.CustomPropertiesEntry
	66, // 23: ml_metadata.Context.system_metadata:type_name -> google.protobuf.Any
	13, // 24: ml_metadata.LineageGraph.artifact_types:type_name -> ml_metadata.ArtifactType
	16, // 25: ml_metadata.LineageGraph.execution_types:type_name -> ml_metadata.ExecutionType
	17, // 26: ml_metadata.LineageGraph.context_types:type_name -> ml_metadata.ContextType
	12, // 27: ml_metadata.LineageGraph.artifacts:type_name -> ml_metadata.Artifact
	15, // 28: ml_metadata.LineageGraph.executions:type_name -> ml_metadata.Execution
	18, // 29: ml_metadata.LineageGraph.contexts:type_name -> ml_metadata.Context
	14, // 30: ml_metadata.LineageGraph.events:type_name -> ml_metadata.Event
	19, // 31: ml_metadata.LineageGraph.attributions:type_name -> ml_metadata.Attribution
	20, // 32: ml_metadata.LineageGraph.associations:type_name -> ml_metadata.Association
	13, // 33: ml_metadata.ArtifactStructType.simple:type_name -> ml_metadata.ArtifactType
	24, // 34: ml_metadata.ArtifactStructType.union_type:type_name -> ml_metadata.UnionArtifactStructType
	25, // 35: ml_metadata.ArtifactStructType.intersection:type_name -> ml_metadata.IntersectionArtifactStructType
	26, // 36: ml_metadata.ArtifactStructType.list:type_name -> ml_metadata.ListArtifactStructType
	27, // 37: ml_metadata.ArtifactStructType.none:type_name -> ml_metadata.NoneArtifactStructType
	28, // 38: ml_metadata.ArtifactStructType.any:type_name -> ml_metadata.AnyArtifactStructType
	29, // 39: ml_metadata.ArtifactStructType.tuple:type_name -> ml_metadata.TupleArtifactStructType
	30, // 40: ml_metadata.ArtifactStructType.dict:type_name -> ml_metadata.DictArtifactStructType
	23, // 41: ml_metadata.UnionArtifactStructType.candidates:type_name -> ml_metadata.ArtifactStructType
	23, // 42: ml_metadata.IntersectionArtifactStructType.constraints:type_name -> ml_metadata.ArtifactStructType
	23, // 43: ml_metadata.ListArtifactStructType.element:type_name -> ml_metadata.ArtifactStructType
	23, // 44: ml_metadata.TupleArtifactStructType.elements:type_name -> ml_metadata.ArtifactStructType
	57, // 45: ml_metadata.DictArtifactStructType.properties:type_name -> ml_metadata.DictArtifactStructType.PropertiesEntry
	23, // 46: ml_metadata.DictArtifactStructType.extra_properties_type:type_name -> ml_metadata.ArtifactStructType
	58, // 47: ml_metadata.MySQLDatabaseConfig.ssl_options:type_name -> ml_metadata.MySQLDatabaseConfig.SSLOptions
	7,  // 48: ml_metadata.SqliteMetadataSourceConfig.connection_mode:type_name -> ml_metadata.SqliteMetadataSourceConfig.ConnectionMode
	59, // 49: ml_metadata.PostgreSQLDatabaseConfig.ssloption:type_name -> ml_metadata.PostgreSQLDatabaseConfig.SSLOptions
	31, // 50: ml_metadata.ConnectionConfig.fake_database:type_name -> ml_metadata.FakeDatabaseConfig
	32, // 51: ml_metadata.ConnectionConfig.mysql:type_name -> ml_metadata.MySQLDatabaseConfig
	33, // 52: ml_metadata.ConnectionConfig.sqlite:type_name -> ml_metadata.SqliteMetadataSourceConfig
	34, // 53: ml_metadata.ConnectionConfig.postgresql:type_name -> ml_metadata.PostgreSQLDatabaseConfig
	36, // 54: ml_metadata.ConnectionConfig.retry_options:type_name -> ml_metadata.RetryOptions
	60, // 55: ml_metadata.MetadataStoreClientConfig.ssl_config:type_name -> ml_metadata.MetadataStoreClientConfig.SSLConfig
	38, // 56: ml_metadata.MetadataStoreClientConfig.channel_arguments:type_name -> ml_metadata.GrpcChannelArguments
	37, // 57: ml_metadata.MetadataStoreServerConfig.connection_config:type_name -> ml_metadata.ConnectionConfig
	35, // 58: ml_metadata.MetadataStoreServerConfig.migration_options:type_name -> ml_metadata.MigrationOptions
	61, // 59: ml_metadata.MetadataStoreServerConfig.ssl_config:type_name -> ml_metadata.MetadataStoreServerConfig.SSLConfig
	62, // 60: ml_metadata.ListOperationOptions.order_by_field:type_name -> ml_metadata.ListOperationOptions.OrderByField
	41, // 61: ml_metadata.ListOperationNextPageToken.set_options:type_name -> ml_metadata.ListOperationOptions
	41, // 62: ml_metadata.LineageGraphQueryOptions.artifacts_options:type_name -> ml_metadata.ListOperationOptions
	63, // 63: ml_metadata.LineageGraphQueryOptions.stop_conditions:type_name -> ml_metadata.LineageGraphQueryOptions.BoundaryConstraint
	64, // 64: ml_metadata.LineageSubgraphQueryOptions.starting_artifacts:type_name -> ml_metadata.LineageSubgraphQueryOptions.StartingNodes
	64, // 65: ml_metadata.LineageSubgraphQueryOptions.starting_executions:type_name -> ml_metadata.LineageSubgraphQueryOptions.StartingNodes
	9,  // 66: ml_metadata.LineageSubgraphQueryOptions.direction:type_name -> ml_metadata.LineageSubgraphQueryOptions.Direction
	11, // 67: ml_metadata.Artifact.PropertiesEntry.value:type_name -> ml_metadata.Value
	11, // 68: ml_metadata.Artifact.CustomPropertiesEntry.value:type_name -> ml_metadata.Value
	0,  // 69: ml_metadata.ArtifactType.PropertiesEntry.value:type_name -> ml_metadata.PropertyType
	50, // 70: ml_metadata.Event.Path.steps:type_name -> ml_metadata.Event.Path.Step
	11, // 71: ml_metadata.Execution.PropertiesEntry.value:type_name -> ml_metadata.Value
	11, // 72: ml_metadata.Execution.CustomPropertiesEntry.value:type_name -> ml_metadata.Value
	0,  // 73: ml_metadata.ExecutionType.PropertiesEntry.value:type_name -> ml_metadata.PropertyType
	0,  // 74: ml_metadata.ContextType.PropertiesEntry.value:type_name -> ml_metadata.PropertyType
	11, // 75: ml_metadata.Context.PropertiesEntry.value:type_name -> ml_metadata.Value
	11, // 76: ml_metadata.Context.CustomPropertiesEntry.value:type_name -> ml_metadata.Value
	23, // 77: ml_metadata.DictArtifactStructType.PropertiesEntry.value:type_name -> ml_metadata.ArtifactStructType
	8,  // 78: ml_metadata.ListOperationOptions.OrderByField.field:type_name -> ml_metadata.ListOperationOptions.OrderByField.Field
	67, // 79: ml_metadata.system_type_extension:extendee -> google.protobuf.EnumValueOptions
	10, // 80: ml_metadata.system_type_extension:type_name -> ml_metadata.SystemTypeExtension
	81, // [81:81] is the sub-list for method output_type
	81, // [81:81] is the sub-list for method input_type
	80, // [80:81] is the sub-list for extension type_name
	79, // [79:80] is the sub-list for extension extendee
	0,  // [0:79] is the sub-list for field type_name
}

func init() { file_ml_metadata_proto_metadata_store_proto_init() }
func file_ml_metadata_proto_metadata_store_proto_init() {
	if File_ml_metadata_proto_metadata_store_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_ml_metadata_proto_metadata_store_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SystemTypeExtension); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Value); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Artifact); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ArtifactType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Event); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Execution); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExecutionType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ContextType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Context); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Attribution); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Association); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParentContext); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LineageGraph); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ArtifactStructType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UnionArtifactStructType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntersectionArtifactStructType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListArtifactStructType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NoneArtifactStructType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AnyArtifactStructType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TupleArtifactStructType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DictArtifactStructType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FakeDatabaseConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MySQLDatabaseConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SqliteMetadataSourceConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostgreSQLDatabaseConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MigrationOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RetryOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ConnectionConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GrpcChannelArguments); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MetadataStoreClientConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MetadataStoreServerConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListOperationOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListOperationNextPageToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransactionOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			case 3:
				return &v.extensionFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LineageGraphQueryOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LineageSubgraphQueryOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Event_Path); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Event_Path_Step); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MySQLDatabaseConfig_SSLOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostgreSQLDatabaseConfig_SSLOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MetadataStoreClientConfig_SSLConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MetadataStoreServerConfig_SSLConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListOperationOptions_OrderByField); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LineageGraphQueryOptions_BoundaryConstraint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_ml_metadata_proto_metadata_store_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LineageSubgraphQueryOptions_StartingNodes); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_ml_metadata_proto_metadata_store_proto_msgTypes[1].OneofWrappers = []interface{}{
		(*Value_IntValue)(nil),
		(*Value_DoubleValue)(nil),
		(*Value_StringValue)(nil),
		(*Value_StructValue)(nil),
		(*Value_ProtoValue)(nil),
		(*Value_BoolValue)(nil),
	}
	file_ml_metadata_proto_metadata_store_proto_msgTypes[13].OneofWrappers = []interface{}{
		(*ArtifactStructType_Simple)(nil),
		(*ArtifactStructType_UnionType)(nil),
		(*ArtifactStructType_Intersection)(nil),
		(*ArtifactStructType_List)(nil),
		(*ArtifactStructType_None)(nil),
		(*ArtifactStructType_Any)(nil),
		(*ArtifactStructType_Tuple)(nil),
		(*ArtifactStructType_Dict)(nil),
	}
	file_ml_metadata_proto_metadata_store_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*ConnectionConfig_FakeDatabase)(nil),
		(*ConnectionConfig_Mysql)(nil),
		(*ConnectionConfig_Sqlite)(nil),
		(*ConnectionConfig_Postgresql)(nil),
	}
	file_ml_metadata_proto_metadata_store_proto_msgTypes[34].OneofWrappers = []interface{}{
		(*LineageGraphQueryOptions_ArtifactsOptions)(nil),
	}
	file_ml_metadata_proto_metadata_store_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*LineageSubgraphQueryOptions_StartingArtifacts)(nil),
		(*LineageSubgraphQueryOptions_StartingExecutions)(nil),
	}
	file_ml_metadata_proto_metadata_store_proto_msgTypes[40].OneofWrappers = []interface{}{
		(*Event_Path_Step_Index)(nil),
		(*Event_Path_Step_Key)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_ml_metadata_proto_metadata_store_proto_rawDesc,
			NumEnums:      10,
			NumMessages:   55,
			NumExtensions: 1,
			NumServices:   0,
		},
		GoTypes:           file_ml_metadata_proto_metadata_store_proto_goTypes,
		DependencyIndexes: file_ml_metadata_proto_metadata_store_proto_depIdxs,
		EnumInfos:         file_ml_metadata_proto_metadata_store_proto_enumTypes,
		MessageInfos:      file_ml_metadata_proto_metadata_store_proto_msgTypes,
		ExtensionInfos:    file_ml_metadata_proto_metadata_store_proto_extTypes,
	}.Build()
	File_ml_metadata_proto_metadata_store_proto = out.File
	file_ml_metadata_proto_metadata_store_proto_rawDesc = nil
	file_ml_metadata_proto_metadata_store_proto_goTypes = nil
	file_ml_metadata_proto_metadata_store_proto_depIdxs = nil
}
