// Copyright 2018-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//  * Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//  * Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//  * Neither the name of NVIDIA CORPORATION nor the names of its
//    contributors may be used to endorse or promote products derived
//    from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Copyright (c) 2018, TensorFlow Authors. All rights reserved.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.1
// 	protoc        v3.21.6
// source: pkg/apis/inference/v1/model_config.proto

package inference

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

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

// @@
// @@.. cpp:enum:: DataType
// @@
// @@   Data types supported for input and output tensors.
// @@
type DataType int32

const (
	// @@  .. cpp:enumerator:: DataType::INVALID = 0
	DataType_TYPE_INVALID DataType = 0
	// @@  .. cpp:enumerator:: DataType::BOOL = 1
	DataType_TYPE_BOOL DataType = 1
	// @@  .. cpp:enumerator:: DataType::UINT8 = 2
	DataType_TYPE_UINT8 DataType = 2
	// @@  .. cpp:enumerator:: DataType::UINT16 = 3
	DataType_TYPE_UINT16 DataType = 3
	// @@  .. cpp:enumerator:: DataType::UINT32 = 4
	DataType_TYPE_UINT32 DataType = 4
	// @@  .. cpp:enumerator:: DataType::UINT64 = 5
	DataType_TYPE_UINT64 DataType = 5
	// @@  .. cpp:enumerator:: DataType::INT8 = 6
	DataType_TYPE_INT8 DataType = 6
	// @@  .. cpp:enumerator:: DataType::INT16 = 7
	DataType_TYPE_INT16 DataType = 7
	// @@  .. cpp:enumerator:: DataType::INT32 = 8
	DataType_TYPE_INT32 DataType = 8
	// @@  .. cpp:enumerator:: DataType::INT64 = 9
	DataType_TYPE_INT64 DataType = 9
	// @@  .. cpp:enumerator:: DataType::FP16 = 10
	DataType_TYPE_FP16 DataType = 10
	// @@  .. cpp:enumerator:: DataType::FP32 = 11
	DataType_TYPE_FP32 DataType = 11
	// @@  .. cpp:enumerator:: DataType::FP64 = 12
	DataType_TYPE_FP64 DataType = 12
	// @@  .. cpp:enumerator:: DataType::STRING = 13
	DataType_TYPE_STRING DataType = 13
	// @@  .. cpp:enumerator:: DataType::BF16 = 14
	DataType_TYPE_BF16 DataType = 14
)

// Enum value maps for DataType.
var (
	DataType_name = map[int32]string{
		0:  "TYPE_INVALID",
		1:  "TYPE_BOOL",
		2:  "TYPE_UINT8",
		3:  "TYPE_UINT16",
		4:  "TYPE_UINT32",
		5:  "TYPE_UINT64",
		6:  "TYPE_INT8",
		7:  "TYPE_INT16",
		8:  "TYPE_INT32",
		9:  "TYPE_INT64",
		10: "TYPE_FP16",
		11: "TYPE_FP32",
		12: "TYPE_FP64",
		13: "TYPE_STRING",
		14: "TYPE_BF16",
	}
	DataType_value = map[string]int32{
		"TYPE_INVALID": 0,
		"TYPE_BOOL":    1,
		"TYPE_UINT8":   2,
		"TYPE_UINT16":  3,
		"TYPE_UINT32":  4,
		"TYPE_UINT64":  5,
		"TYPE_INT8":    6,
		"TYPE_INT16":   7,
		"TYPE_INT32":   8,
		"TYPE_INT64":   9,
		"TYPE_FP16":    10,
		"TYPE_FP32":    11,
		"TYPE_FP64":    12,
		"TYPE_STRING":  13,
		"TYPE_BF16":    14,
	}
)

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

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

func (DataType) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[0].Descriptor()
}

func (DataType) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[0]
}

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

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

// @@
// @@  .. cpp:enum:: Kind
// @@
// @@     Kind of this instance group.
// @@
type ModelInstanceGroup_Kind int32

const (
	// @@    .. cpp:enumerator:: Kind::KIND_AUTO = 0
	// @@
	// @@       This instance group represents instances that can run on either
	// @@       CPU or GPU. If all GPUs listed in 'gpus' are available then
	// @@       instances will be created on GPU(s), otherwise instances will
	// @@       be created on CPU.
	// @@
	ModelInstanceGroup_KIND_AUTO ModelInstanceGroup_Kind = 0
	// @@    .. cpp:enumerator:: Kind::KIND_GPU = 1
	// @@
	// @@       This instance group represents instances that must run on the
	// @@       GPU.
	// @@
	ModelInstanceGroup_KIND_GPU ModelInstanceGroup_Kind = 1
	// @@    .. cpp:enumerator:: Kind::KIND_CPU = 2
	// @@
	// @@       This instance group represents instances that must run on the
	// @@       CPU.
	// @@
	ModelInstanceGroup_KIND_CPU ModelInstanceGroup_Kind = 2
	// @@    .. cpp:enumerator:: Kind::KIND_MODEL = 3
	// @@
	// @@       This instance group represents instances that should run on the
	// @@       CPU and/or GPU(s) as specified by the model or backend itself.
	// @@       The inference server will not override the model/backend
	// @@       settings.
	// @@
	ModelInstanceGroup_KIND_MODEL ModelInstanceGroup_Kind = 3
)

// Enum value maps for ModelInstanceGroup_Kind.
var (
	ModelInstanceGroup_Kind_name = map[int32]string{
		0: "KIND_AUTO",
		1: "KIND_GPU",
		2: "KIND_CPU",
		3: "KIND_MODEL",
	}
	ModelInstanceGroup_Kind_value = map[string]int32{
		"KIND_AUTO":  0,
		"KIND_GPU":   1,
		"KIND_CPU":   2,
		"KIND_MODEL": 3,
	}
)

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

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

func (ModelInstanceGroup_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[1].Descriptor()
}

func (ModelInstanceGroup_Kind) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[1]
}

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

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

// @@
// @@  .. cpp:enum:: SecondaryDeviceKind
// @@
// @@     The kind of the secondary device.
// @@
type ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind int32

const (
	// @@    .. cpp:enumerator:: SecondaryDeviceKind::KIND_NVDLA = 0
	// @@
	// @@       An NVDLA core. http://nvdla.org
	// @@       Currently KIND_NVDLA is only supported by the TensorRT backend.
	// @@
	ModelInstanceGroup_SecondaryDevice_KIND_NVDLA ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind = 0
)

// Enum value maps for ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind.
var (
	ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind_name = map[int32]string{
		0: "KIND_NVDLA",
	}
	ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind_value = map[string]int32{
		"KIND_NVDLA": 0,
	}
)

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

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

func (ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[2].Descriptor()
}

func (ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[2]
}

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

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

// @@
// @@  .. cpp:enum:: Format
// @@
// @@     The format for the input.
// @@
type ModelInput_Format int32

const (
	// @@    .. cpp:enumerator:: Format::FORMAT_NONE = 0
	// @@
	// @@       The input has no specific format. This is the default.
	// @@
	ModelInput_FORMAT_NONE ModelInput_Format = 0
	// @@    .. cpp:enumerator:: Format::FORMAT_NHWC = 1
	// @@
	// @@       HWC image format. Tensors with this format require 3 dimensions
	// @@       if the model does not support batching (max_batch_size = 0) or 4
	// @@       dimensions if the model does support batching (max_batch_size
	// @@       >= 1). In either case the 'dims' below should only specify the
	// @@       3 non-batch dimensions (i.e. HWC or CHW).
	// @@
	ModelInput_FORMAT_NHWC ModelInput_Format = 1
	// @@    .. cpp:enumerator:: Format::FORMAT_NCHW = 2
	// @@
	// @@       CHW image format. Tensors with this format require 3 dimensions
	// @@       if the model does not support batching (max_batch_size = 0) or 4
	// @@       dimensions if the model does support batching (max_batch_size
	// @@       >= 1). In either case the 'dims' below should only specify the
	// @@       3 non-batch dimensions (i.e. HWC or CHW).
	// @@
	ModelInput_FORMAT_NCHW ModelInput_Format = 2
)

// Enum value maps for ModelInput_Format.
var (
	ModelInput_Format_name = map[int32]string{
		0: "FORMAT_NONE",
		1: "FORMAT_NHWC",
		2: "FORMAT_NCHW",
	}
	ModelInput_Format_value = map[string]int32{
		"FORMAT_NONE": 0,
		"FORMAT_NHWC": 1,
		"FORMAT_NCHW": 2,
	}
)

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

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

func (ModelInput_Format) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[3].Descriptor()
}

func (ModelInput_Format) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[3]
}

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

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

// @@
// @@    .. cpp:enum:: Kind
// @@
// @@       The kind of the batch input.
// @@
type BatchInput_Kind int32

const (
	// @@      .. cpp:enumerator:: Kind::BATCH_ELEMENT_COUNT = 0
	// @@
	// @@         The element count of the 'source_input' will be added as
	// @@         input with shape [1].
	// @@
	BatchInput_BATCH_ELEMENT_COUNT BatchInput_Kind = 0
	// @@      .. cpp:enumerator:: Kind::BATCH_ACCUMULATED_ELEMENT_COUNT = 1
	// @@
	// @@         The accumulated element count of the 'source_input' will be
	// @@         added as input with shape [1]. For example, if there is a
	// @@         batch of two request, each with 2 elements, an input of value
	// @@         2 will be added to the first request, and an input of value
	// @@         4 will be added to the second request.
	// @@
	BatchInput_BATCH_ACCUMULATED_ELEMENT_COUNT BatchInput_Kind = 1
	// @@      .. cpp:enumerator::
	// @@         Kind::BATCH_ACCUMULATED_ELEMENT_COUNT_WITH_ZERO = 2
	// @@
	// @@         The accumulated element count of the 'source_input' will be
	// @@         added as input with shape [1], except for the first request
	// @@         in the batch. For the first request in the batch, the input
	// @@         will have shape [2] where the first element is value 0.
	// @@
	BatchInput_BATCH_ACCUMULATED_ELEMENT_COUNT_WITH_ZERO BatchInput_Kind = 2
	// @@      .. cpp:enumerator:: Kind::BATCH_MAX_ELEMENT_COUNT_AS_SHAPE = 3
	// @@
	// @@         Among the requests in the batch, the max element count of the
	// @@         'source_input' will be added as input with shape
	// @@         [max_element_count] for the first request in the batch.
	// @@         For other requests, such input will be with shape [0].
	// @@         The data of the tensor will be uninitialized.
	// @@
	BatchInput_BATCH_MAX_ELEMENT_COUNT_AS_SHAPE BatchInput_Kind = 3
	// @@      .. cpp:enumerator:: Kind::BATCH_ITEM_SHAPE = 4
	// @@
	// @@         Among the requests in the batch, the shape of the
	// @@         'source_input' will be added as input with shape
	// @@         [batch_size, len(input_dim)]. For example, if one
	// @@         batch-2 input with shape [3, 1] and batch-1 input
	// @@         with shape [2, 2] are batched, the batch input will
	// @@         have shape [3, 2] and value [ [3, 1], [3, 1], [2, 2]].
	// @@
	BatchInput_BATCH_ITEM_SHAPE BatchInput_Kind = 4
	// @@      .. cpp:enumerator:: Kind::BATCH_ITEM_SHAPE_FLATTEN = 5
	// @@
	// @@         Among the requests in the batch, the shape of the
	// @@         'source_input' will be added as input with single dimensional
	// @@         shape [batch_size * len(input_dim)]. For example, if one
	// @@         batch-2 input with shape [3, 1] and batch-1 input
	// @@         with shape [2, 2] are batched, the batch input will
	// @@         have shape [6] and value [3, 1, 3, 1, 2, 2].
	// @@
	BatchInput_BATCH_ITEM_SHAPE_FLATTEN BatchInput_Kind = 5
)

// Enum value maps for BatchInput_Kind.
var (
	BatchInput_Kind_name = map[int32]string{
		0: "BATCH_ELEMENT_COUNT",
		1: "BATCH_ACCUMULATED_ELEMENT_COUNT",
		2: "BATCH_ACCUMULATED_ELEMENT_COUNT_WITH_ZERO",
		3: "BATCH_MAX_ELEMENT_COUNT_AS_SHAPE",
		4: "BATCH_ITEM_SHAPE",
		5: "BATCH_ITEM_SHAPE_FLATTEN",
	}
	BatchInput_Kind_value = map[string]int32{
		"BATCH_ELEMENT_COUNT":                       0,
		"BATCH_ACCUMULATED_ELEMENT_COUNT":           1,
		"BATCH_ACCUMULATED_ELEMENT_COUNT_WITH_ZERO": 2,
		"BATCH_MAX_ELEMENT_COUNT_AS_SHAPE":          3,
		"BATCH_ITEM_SHAPE":                          4,
		"BATCH_ITEM_SHAPE_FLATTEN":                  5,
	}
)

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

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

func (BatchInput_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[4].Descriptor()
}

func (BatchInput_Kind) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[4]
}

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

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

// @@
// @@  .. cpp:enum:: Kind
// @@
// @@     The kind of the batch output.
// @@
type BatchOutput_Kind int32

const (
	// @@    .. cpp:enumerator:: Kind::BATCH_SCATTER_WITH_INPUT_SHAPE = 0
	// @@
	// @@       The output should be scattered according to the shape of
	// @@       'source_input'. The dynamic dimension of the output will
	// @@       be set to the value of the same dimension in the input.
	// @@
	BatchOutput_BATCH_SCATTER_WITH_INPUT_SHAPE BatchOutput_Kind = 0
)

// Enum value maps for BatchOutput_Kind.
var (
	BatchOutput_Kind_name = map[int32]string{
		0: "BATCH_SCATTER_WITH_INPUT_SHAPE",
	}
	BatchOutput_Kind_value = map[string]int32{
		"BATCH_SCATTER_WITH_INPUT_SHAPE": 0,
	}
)

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

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

func (BatchOutput_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[5].Descriptor()
}

func (BatchOutput_Kind) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[5]
}

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

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

// @@
// @@  .. cpp:enum:: ModelPriority
// @@
// @@     Model priorities. A model will be given scheduling and execution
// @@     preference over models at lower priorities. Current model
// @@     priorities only work for TensorRT models.
// @@
type ModelOptimizationPolicy_ModelPriority int32

const (
	// @@    .. cpp:enumerator:: ModelPriority::PRIORITY_DEFAULT = 0
	// @@
	// @@       The default model priority.
	// @@
	ModelOptimizationPolicy_PRIORITY_DEFAULT ModelOptimizationPolicy_ModelPriority = 0
	// @@    .. cpp:enumerator:: ModelPriority::PRIORITY_MAX = 1
	// @@
	// @@       The maximum model priority.
	// @@
	ModelOptimizationPolicy_PRIORITY_MAX ModelOptimizationPolicy_ModelPriority = 1
	// @@    .. cpp:enumerator:: ModelPriority::PRIORITY_MIN = 2
	// @@
	// @@       The minimum model priority.
	// @@
	ModelOptimizationPolicy_PRIORITY_MIN ModelOptimizationPolicy_ModelPriority = 2
)

// Enum value maps for ModelOptimizationPolicy_ModelPriority.
var (
	ModelOptimizationPolicy_ModelPriority_name = map[int32]string{
		0: "PRIORITY_DEFAULT",
		1: "PRIORITY_MAX",
		2: "PRIORITY_MIN",
	}
	ModelOptimizationPolicy_ModelPriority_value = map[string]int32{
		"PRIORITY_DEFAULT": 0,
		"PRIORITY_MAX":     1,
		"PRIORITY_MIN":     2,
	}
)

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

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

func (ModelOptimizationPolicy_ModelPriority) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[6].Descriptor()
}

func (ModelOptimizationPolicy_ModelPriority) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[6]
}

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

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

// @@
// @@  .. cpp:enum:: TimeoutAction
// @@
// @@     The action applied to timed-out requests.
// @@
type ModelQueuePolicy_TimeoutAction int32

const (
	// @@    .. cpp:enumerator:: Action::REJECT = 0
	// @@
	// @@       Reject the request and return error message accordingly.
	// @@
	ModelQueuePolicy_REJECT ModelQueuePolicy_TimeoutAction = 0
	// @@    .. cpp:enumerator:: Action::DELAY = 1
	// @@
	// @@       Delay the request until all other requests at the same
	// @@       (or higher) priority levels that have not reached their timeouts
	// @@       are processed. A delayed request will eventually be processed,
	// @@       but may be delayed indefinitely due to newly arriving requests.
	// @@
	ModelQueuePolicy_DELAY ModelQueuePolicy_TimeoutAction = 1
)

// Enum value maps for ModelQueuePolicy_TimeoutAction.
var (
	ModelQueuePolicy_TimeoutAction_name = map[int32]string{
		0: "REJECT",
		1: "DELAY",
	}
	ModelQueuePolicy_TimeoutAction_value = map[string]int32{
		"REJECT": 0,
		"DELAY":  1,
	}
)

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

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

func (ModelQueuePolicy_TimeoutAction) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[7].Descriptor()
}

func (ModelQueuePolicy_TimeoutAction) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[7]
}

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

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

// @@
// @@    .. cpp:enum:: Kind
// @@
// @@       The kind of the control.
// @@
type ModelSequenceBatching_Control_Kind int32

const (
	// @@      .. cpp:enumerator:: Kind::CONTROL_SEQUENCE_START = 0
	// @@
	// @@         A new sequence is/is-not starting. If true a sequence is
	// @@         starting, if false a sequence is continuing. Must
	// @@         specify either int32_false_true, fp32_false_true or
	// @@         bool_false_true for this control. This control is optional.
	// @@
	ModelSequenceBatching_Control_CONTROL_SEQUENCE_START ModelSequenceBatching_Control_Kind = 0
	// @@      .. cpp:enumerator:: Kind::CONTROL_SEQUENCE_READY = 1
	// @@
	// @@         A sequence is/is-not ready for inference. If true the
	// @@         input tensor data is valid and should be used. If false
	// @@         the input tensor data is invalid and inferencing should
	// @@         be "skipped". Must specify either int32_false_true,
	// @@         fp32_false_true or bool_false_true for this control. This
	// @@         control is optional.
	// @@
	ModelSequenceBatching_Control_CONTROL_SEQUENCE_READY ModelSequenceBatching_Control_Kind = 1
	// @@      .. cpp:enumerator:: Kind::CONTROL_SEQUENCE_END = 2
	// @@
	// @@         A sequence is/is-not ending. If true a sequence is
	// @@         ending, if false a sequence is continuing. Must specify
	// @@         either int32_false_true, fp32_false_true or bool_false_true
	// @@         for this control. This control is optional.
	// @@
	ModelSequenceBatching_Control_CONTROL_SEQUENCE_END ModelSequenceBatching_Control_Kind = 2
	// @@      .. cpp:enumerator:: Kind::CONTROL_SEQUENCE_CORRID = 3
	// @@
	// @@         The correlation ID of the sequence. The correlation ID
	// @@         is an uint64_t value that is communicated in whole or
	// @@         in part by the tensor. The tensor's datatype must be
	// @@         specified by data_type and must be TYPE_UINT64, TYPE_INT64,
	// @@         TYPE_UINT32 or TYPE_INT32. If a 32-bit datatype is specified
	// @@         the correlation ID will be truncated to the low-order 32
	// @@         bits. This control is optional.
	// @@
	ModelSequenceBatching_Control_CONTROL_SEQUENCE_CORRID ModelSequenceBatching_Control_Kind = 3
)

// Enum value maps for ModelSequenceBatching_Control_Kind.
var (
	ModelSequenceBatching_Control_Kind_name = map[int32]string{
		0: "CONTROL_SEQUENCE_START",
		1: "CONTROL_SEQUENCE_READY",
		2: "CONTROL_SEQUENCE_END",
		3: "CONTROL_SEQUENCE_CORRID",
	}
	ModelSequenceBatching_Control_Kind_value = map[string]int32{
		"CONTROL_SEQUENCE_START":  0,
		"CONTROL_SEQUENCE_READY":  1,
		"CONTROL_SEQUENCE_END":    2,
		"CONTROL_SEQUENCE_CORRID": 3,
	}
)

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

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

func (ModelSequenceBatching_Control_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_pkg_apis_inference_v1_model_config_proto_enumTypes[8].Descriptor()
}

func (ModelSequenceBatching_Control_Kind) Type() protoreflect.EnumType {
	return &file_pkg_apis_inference_v1_model_config_proto_enumTypes[8]
}

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

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

// @@
// @@  .. cpp:var:: message ModelRateLimiter
// @@
// @@     The specifications required by the rate limiter to properly
// @@     schedule the inference requests across the different models
// @@     and their instances.
// @@
type ModelRateLimiter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: Resource resources (repeated)
	// @@
	// @@     The resources required to execute the request on a model instance.
	// @@     Resources are just names with a corresponding count. The execution
	// @@     of the instance will be blocked until the specificied resources are
	// @@     available. By default an instance uses no rate-limiter resources.
	// @@
	Resources []*ModelRateLimiter_Resource `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"`
	// @@  .. cpp:var:: uint32 priority
	// @@
	// @@     The optional weighting value to be used for prioritizing across
	// @@     instances. An instance with priority 2 will be given 1/2 the
	// @@     number of scheduling chances as an instance_group with priority
	// @@     1. The default priority is 1. The priority of value 0 will be
	// @@     treated as priority 1.
	// @@
	Priority uint32 `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
}

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

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

func (*ModelRateLimiter) ProtoMessage() {}

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

func (x *ModelRateLimiter) GetResources() []*ModelRateLimiter_Resource {
	if x != nil {
		return x.Resources
	}
	return nil
}

func (x *ModelRateLimiter) GetPriority() uint32 {
	if x != nil {
		return x.Priority
	}
	return 0
}

// @@
// @@.. cpp:var:: message ModelInstanceGroup
// @@
// @@   A group of one or more instances of a model and resources made
// @@   available for those instances.
// @@
type ModelInstanceGroup struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string name
	// @@
	// @@     Optional name of this group of instances. If not specified the
	// @@     name will be formed as <model name>_<group number>. The name of
	// @@     individual instances will be further formed by a unique instance
	// @@     number and GPU index:
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@  .. cpp:var:: Kind kind
	// @@
	// @@     The kind of this instance group. Default is KIND_AUTO. If
	// @@     KIND_AUTO or KIND_GPU then both 'count' and 'gpu' are valid and
	// @@     may be specified. If KIND_CPU or KIND_MODEL only 'count' is valid
	// @@     and 'gpu' cannot be specified.
	// @@
	Kind ModelInstanceGroup_Kind `protobuf:"varint,4,opt,name=kind,proto3,enum=inference.v1.ModelInstanceGroup_Kind" json:"kind,omitempty"`
	// @@  .. cpp:var:: int32 count
	// @@
	// @@     For a group assigned to GPU, the number of instances created for
	// @@     each GPU listed in 'gpus'. For a group assigned to CPU the number
	// @@     of instances created. Default is 1.
	Count int32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
	// @@  .. cpp:var:: ModelRateLimiter rate_limiter
	// @@
	// @@     The rate limiter specific settings to be associated with this
	// @@     instance group. Optional, if not specified no rate limiting
	// @@     will be applied to this instance group.
	// @@
	RateLimiter *ModelRateLimiter `protobuf:"bytes,6,opt,name=rate_limiter,json=rateLimiter,proto3" json:"rate_limiter,omitempty"`
	// @@  .. cpp:var:: int32 gpus (repeated)
	// @@
	// @@     GPU(s) where instances should be available. For each GPU listed,
	// @@     'count' instances of the model will be available. Setting 'gpus'
	// @@     to empty (or not specifying at all) is eqivalent to listing all
	// @@     available GPUs.
	// @@
	Gpus []int32 `protobuf:"varint,3,rep,packed,name=gpus,proto3" json:"gpus,omitempty"`
	// @@  .. cpp:var:: SecondaryDevice secondary_devices (repeated)
	// @@
	// @@     Secondary devices that are required by instances specified by this
	// @@     instance group. Optional.
	// @@
	SecondaryDevices []*ModelInstanceGroup_SecondaryDevice `protobuf:"bytes,8,rep,name=secondary_devices,json=secondaryDevices,proto3" json:"secondary_devices,omitempty"`
	// @@  .. cpp:var:: string profile (repeated)
	// @@
	// @@     For TensorRT models containing multiple optimization profile, this
	// @@     parameter specifies a set of optimization profiles available to this
	// @@     instance group. The inference server will choose the optimal profile
	// @@     based on the shapes of the input tensors. This field should lie
	// @@     between 0 and <TotalNumberOfOptimizationProfilesInPlanModel> - 1
	// @@     and be specified only for TensorRT backend, otherwise an error will
	// @@     be generated. If not specified, the server will select the first
	// @@     optimization profile by default.
	// @@
	Profile []string `protobuf:"bytes,5,rep,name=profile,proto3" json:"profile,omitempty"`
	// @@  .. cpp:var:: bool passive
	// @@
	// @@     Whether the instances within this instance group will be accepting
	// @@     inference requests from the scheduler. If true, the instances will
	// @@     not be added to the scheduler. Default value is false.
	// @@
	Passive bool `protobuf:"varint,7,opt,name=passive,proto3" json:"passive,omitempty"`
	// @@  .. cpp:var:: string host_policy
	// @@
	// @@     The host policy name that the instance to be associated with.
	// @@     The default value is set to reflect the device kind of the instance,
	// @@     for instance, KIND_CPU is "cpu", KIND_MODEL is "model" and
	// @@     KIND_GPU is "gpu_<gpu_id>".
	// @@
	HostPolicy string `protobuf:"bytes,9,opt,name=host_policy,json=hostPolicy,proto3" json:"host_policy,omitempty"`
}

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

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

func (*ModelInstanceGroup) ProtoMessage() {}

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

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

func (x *ModelInstanceGroup) GetKind() ModelInstanceGroup_Kind {
	if x != nil {
		return x.Kind
	}
	return ModelInstanceGroup_KIND_AUTO
}

func (x *ModelInstanceGroup) GetCount() int32 {
	if x != nil {
		return x.Count
	}
	return 0
}

func (x *ModelInstanceGroup) GetRateLimiter() *ModelRateLimiter {
	if x != nil {
		return x.RateLimiter
	}
	return nil
}

func (x *ModelInstanceGroup) GetGpus() []int32 {
	if x != nil {
		return x.Gpus
	}
	return nil
}

func (x *ModelInstanceGroup) GetSecondaryDevices() []*ModelInstanceGroup_SecondaryDevice {
	if x != nil {
		return x.SecondaryDevices
	}
	return nil
}

func (x *ModelInstanceGroup) GetProfile() []string {
	if x != nil {
		return x.Profile
	}
	return nil
}

func (x *ModelInstanceGroup) GetPassive() bool {
	if x != nil {
		return x.Passive
	}
	return false
}

func (x *ModelInstanceGroup) GetHostPolicy() string {
	if x != nil {
		return x.HostPolicy
	}
	return ""
}

// @@
// @@.. cpp:var:: message ModelTensorReshape
// @@
// @@   Reshape specification for input and output tensors.
// @@
type ModelTensorReshape struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: int64 shape (repeated)
	// @@
	// @@     The shape to use for reshaping.
	// @@
	Shape []int64 `protobuf:"varint,1,rep,packed,name=shape,proto3" json:"shape,omitempty"`
}

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

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

func (*ModelTensorReshape) ProtoMessage() {}

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

func (x *ModelTensorReshape) GetShape() []int64 {
	if x != nil {
		return x.Shape
	}
	return nil
}

// @@
// @@.. cpp:var:: message ModelInput
// @@
// @@   An input required by the model.
// @@
type ModelInput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string name
	// @@
	// @@     The name of the input.
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@  .. cpp:var:: DataType data_type
	// @@
	// @@     The data-type of the input.
	// @@
	DataType DataType `protobuf:"varint,2,opt,name=data_type,json=dataType,proto3,enum=inference.v1.DataType" json:"data_type,omitempty"`
	// @@  .. cpp:var:: Format format
	// @@
	// @@     The format of the input. Optional.
	// @@
	Format ModelInput_Format `protobuf:"varint,3,opt,name=format,proto3,enum=inference.v1.ModelInput_Format" json:"format,omitempty"`
	// @@  .. cpp:var:: int64 dims (repeated)
	// @@
	// @@     The dimensions/shape of the input tensor that must be provided
	// @@     when invoking the inference API for this model.
	// @@
	Dims []int64 `protobuf:"varint,4,rep,packed,name=dims,proto3" json:"dims,omitempty"`
	// @@  .. cpp:var:: ModelTensorReshape reshape
	// @@
	// @@     The shape expected for this input by the backend. The input will
	// @@     be reshaped to this before being presented to the backend. The
	// @@     reshape must have the same number of elements as the input shape
	// @@     specified by 'dims'. Optional.
	// @@
	Reshape *ModelTensorReshape `protobuf:"bytes,5,opt,name=reshape,proto3" json:"reshape,omitempty"`
	// @@  .. cpp:var:: bool is_shape_tensor
	// @@
	// @@     Whether or not the input is a shape tensor to the model. This field
	// @@     is currently supported only for the TensorRT model. An error will be
	// @@     generated if this specification does not comply with underlying
	// @@     model.
	// @@
	IsShapeTensor bool `protobuf:"varint,6,opt,name=is_shape_tensor,json=isShapeTensor,proto3" json:"is_shape_tensor,omitempty"`
	// @@  .. cpp:var:: bool allow_ragged_batch
	// @@
	// @@     Whether or not the input is allowed to be "ragged" in a dynamically
	// @@     created batch. Default is false indicating that two requests will
	// @@     only be batched if this tensor has the same shape in both requests.
	// @@     True indicates that two requests can be batched even if this tensor
	// @@     has a different shape in each request.
	// @@
	AllowRaggedBatch bool `protobuf:"varint,7,opt,name=allow_ragged_batch,json=allowRaggedBatch,proto3" json:"allow_ragged_batch,omitempty"`
	// @@  .. cpp:var:: bool optional
	// @@
	// @@     Whether or not the input is optional for the model execution.
	// @@     If true, the input is not required in the inference request.
	// @@     Default value is false.
	// @@
	Optional bool `protobuf:"varint,8,opt,name=optional,proto3" json:"optional,omitempty"`
}

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

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

func (*ModelInput) ProtoMessage() {}

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

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

func (x *ModelInput) GetDataType() DataType {
	if x != nil {
		return x.DataType
	}
	return DataType_TYPE_INVALID
}

func (x *ModelInput) GetFormat() ModelInput_Format {
	if x != nil {
		return x.Format
	}
	return ModelInput_FORMAT_NONE
}

func (x *ModelInput) GetDims() []int64 {
	if x != nil {
		return x.Dims
	}
	return nil
}

func (x *ModelInput) GetReshape() *ModelTensorReshape {
	if x != nil {
		return x.Reshape
	}
	return nil
}

func (x *ModelInput) GetIsShapeTensor() bool {
	if x != nil {
		return x.IsShapeTensor
	}
	return false
}

func (x *ModelInput) GetAllowRaggedBatch() bool {
	if x != nil {
		return x.AllowRaggedBatch
	}
	return false
}

func (x *ModelInput) GetOptional() bool {
	if x != nil {
		return x.Optional
	}
	return false
}

// @@
// @@.. cpp:var:: message ModelOutput
// @@
// @@   An output produced by the model.
// @@
type ModelOutput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string name
	// @@
	// @@     The name of the output.
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@  .. cpp:var:: DataType data_type
	// @@
	// @@     The data-type of the output.
	// @@
	DataType DataType `protobuf:"varint,2,opt,name=data_type,json=dataType,proto3,enum=inference.v1.DataType" json:"data_type,omitempty"`
	// @@  .. cpp:var:: int64 dims (repeated)
	// @@
	// @@     The dimensions/shape of the output tensor.
	// @@
	Dims []int64 `protobuf:"varint,3,rep,packed,name=dims,proto3" json:"dims,omitempty"`
	// @@  .. cpp:var:: ModelTensorReshape reshape
	// @@
	// @@     The shape produced for this output by the backend. The output will
	// @@     be reshaped from this to the shape specifed in 'dims' before being
	// @@     returned in the inference response. The reshape must have the same
	// @@     number of elements as the output shape specified by 'dims'. Optional.
	// @@
	Reshape *ModelTensorReshape `protobuf:"bytes,5,opt,name=reshape,proto3" json:"reshape,omitempty"`
	// @@  .. cpp:var:: string label_filename
	// @@
	// @@     The label file associated with this output. Should be specified only
	// @@     for outputs that represent classifications. Optional.
	// @@
	LabelFilename string `protobuf:"bytes,4,opt,name=label_filename,json=labelFilename,proto3" json:"label_filename,omitempty"`
	// @@  .. cpp:var:: bool is_shape_tensor
	// @@
	// @@     Whether or not the output is a shape tensor to the model. This field
	// @@     is currently supported only for the TensorRT model. An error will be
	// @@     generated if this specification does not comply with underlying
	// @@     model.
	// @@
	IsShapeTensor bool `protobuf:"varint,6,opt,name=is_shape_tensor,json=isShapeTensor,proto3" json:"is_shape_tensor,omitempty"`
}

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

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

func (*ModelOutput) ProtoMessage() {}

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

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

func (x *ModelOutput) GetDataType() DataType {
	if x != nil {
		return x.DataType
	}
	return DataType_TYPE_INVALID
}

func (x *ModelOutput) GetDims() []int64 {
	if x != nil {
		return x.Dims
	}
	return nil
}

func (x *ModelOutput) GetReshape() *ModelTensorReshape {
	if x != nil {
		return x.Reshape
	}
	return nil
}

func (x *ModelOutput) GetLabelFilename() string {
	if x != nil {
		return x.LabelFilename
	}
	return ""
}

func (x *ModelOutput) GetIsShapeTensor() bool {
	if x != nil {
		return x.IsShapeTensor
	}
	return false
}

// @@  .. cpp:var:: message BatchInput
// @@
// @@     A batch input is an additional input that must be added by
// @@     the backend based on all the requests in a batch.
// @@
type BatchInput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: Kind kind
	// @@
	// @@       The kind of this batch input.
	// @@
	Kind BatchInput_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=inference.v1.BatchInput_Kind" json:"kind,omitempty"`
	// @@    .. cpp:var:: string target_name (repeated)
	// @@
	// @@       The name of the model inputs that the backend will create
	// @@       for this batch input.
	// @@
	TargetName []string `protobuf:"bytes,2,rep,name=target_name,json=targetName,proto3" json:"target_name,omitempty"`
	// @@    .. cpp:var:: DataType data_type
	// @@
	// @@       The input's datatype. The data type can be TYPE_INT32 or
	// @@       TYPE_FP32.
	// @@
	DataType DataType `protobuf:"varint,3,opt,name=data_type,json=dataType,proto3,enum=inference.v1.DataType" json:"data_type,omitempty"`
	// @@    .. cpp:var:: string source_input (repeated)
	// @@
	// @@       The backend derives the value for each batch input from one or
	// @@       more other inputs. 'source_input' gives the names of those
	// @@       inputs.
	// @@
	SourceInput []string `protobuf:"bytes,4,rep,name=source_input,json=sourceInput,proto3" json:"source_input,omitempty"`
}

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

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

func (*BatchInput) ProtoMessage() {}

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

func (x *BatchInput) GetKind() BatchInput_Kind {
	if x != nil {
		return x.Kind
	}
	return BatchInput_BATCH_ELEMENT_COUNT
}

func (x *BatchInput) GetTargetName() []string {
	if x != nil {
		return x.TargetName
	}
	return nil
}

func (x *BatchInput) GetDataType() DataType {
	if x != nil {
		return x.DataType
	}
	return DataType_TYPE_INVALID
}

func (x *BatchInput) GetSourceInput() []string {
	if x != nil {
		return x.SourceInput
	}
	return nil
}

// @@.. cpp:var:: message BatchOutput
// @@
// @@   A batch output is an output produced by the model that must be handled
// @@   differently by the backend based on all the requests in a batch.
// @@
type BatchOutput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string target_name (repeated)
	// @@
	// @@     The name of the outputs to be produced by this batch output
	// @@     specification.
	// @@
	TargetName []string `protobuf:"bytes,1,rep,name=target_name,json=targetName,proto3" json:"target_name,omitempty"`
	// @@  .. cpp:var:: Kind kind
	// @@
	// @@     The kind of this batch output.
	// @@
	Kind BatchOutput_Kind `protobuf:"varint,2,opt,name=kind,proto3,enum=inference.v1.BatchOutput_Kind" json:"kind,omitempty"`
	// @@  .. cpp:var:: string source_input (repeated)
	// @@
	// @@     The backend derives each batch output from one or more inputs.
	// @@     'source_input' gives the names of those inputs.
	// @@
	SourceInput []string `protobuf:"bytes,3,rep,name=source_input,json=sourceInput,proto3" json:"source_input,omitempty"`
}

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

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

func (*BatchOutput) ProtoMessage() {}

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

func (x *BatchOutput) GetTargetName() []string {
	if x != nil {
		return x.TargetName
	}
	return nil
}

func (x *BatchOutput) GetKind() BatchOutput_Kind {
	if x != nil {
		return x.Kind
	}
	return BatchOutput_BATCH_SCATTER_WITH_INPUT_SHAPE
}

func (x *BatchOutput) GetSourceInput() []string {
	if x != nil {
		return x.SourceInput
	}
	return nil
}

// @@
// @@.. cpp:var:: message ModelVersionPolicy
// @@
// @@   Policy indicating which versions of a model should be made
// @@   available by the inference server.
// @@
type ModelVersionPolicy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: oneof policy_choice
	// @@
	// @@     Each model must implement only a single version policy. The
	// @@     default policy is 'Latest'.
	// @@
	//
	// Types that are assignable to PolicyChoice:
	//
	//	*ModelVersionPolicy_Latest_
	//	*ModelVersionPolicy_All_
	//	*ModelVersionPolicy_Specific_
	PolicyChoice isModelVersionPolicy_PolicyChoice `protobuf_oneof:"policy_choice"`
}

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

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

func (*ModelVersionPolicy) ProtoMessage() {}

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

func (m *ModelVersionPolicy) GetPolicyChoice() isModelVersionPolicy_PolicyChoice {
	if m != nil {
		return m.PolicyChoice
	}
	return nil
}

func (x *ModelVersionPolicy) GetLatest() *ModelVersionPolicy_Latest {
	if x, ok := x.GetPolicyChoice().(*ModelVersionPolicy_Latest_); ok {
		return x.Latest
	}
	return nil
}

func (x *ModelVersionPolicy) GetAll() *ModelVersionPolicy_All {
	if x, ok := x.GetPolicyChoice().(*ModelVersionPolicy_All_); ok {
		return x.All
	}
	return nil
}

func (x *ModelVersionPolicy) GetSpecific() *ModelVersionPolicy_Specific {
	if x, ok := x.GetPolicyChoice().(*ModelVersionPolicy_Specific_); ok {
		return x.Specific
	}
	return nil
}

type isModelVersionPolicy_PolicyChoice interface {
	isModelVersionPolicy_PolicyChoice()
}

type ModelVersionPolicy_Latest_ struct {
	// @@    .. cpp:var:: Latest latest
	// @@
	// @@       Serve only latest version(s) of the model.
	// @@
	Latest *ModelVersionPolicy_Latest `protobuf:"bytes,1,opt,name=latest,proto3,oneof"`
}

type ModelVersionPolicy_All_ struct {
	// @@    .. cpp:var:: All all
	// @@
	// @@       Serve all versions of the model.
	// @@
	All *ModelVersionPolicy_All `protobuf:"bytes,2,opt,name=all,proto3,oneof"`
}

type ModelVersionPolicy_Specific_ struct {
	// @@    .. cpp:var:: Specific specific
	// @@
	// @@       Serve only specific version(s) of the model.
	// @@
	Specific *ModelVersionPolicy_Specific `protobuf:"bytes,3,opt,name=specific,proto3,oneof"`
}

func (*ModelVersionPolicy_Latest_) isModelVersionPolicy_PolicyChoice() {}

func (*ModelVersionPolicy_All_) isModelVersionPolicy_PolicyChoice() {}

func (*ModelVersionPolicy_Specific_) isModelVersionPolicy_PolicyChoice() {}

// @@
// @@.. cpp:var:: message ModelOptimizationPolicy
// @@
// @@   Optimization settings for a model. These settings control if/how a
// @@   model is optimized and prioritized by the backend framework when
// @@   it is loaded.
// @@
type ModelOptimizationPolicy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: Graph graph
	// @@
	// @@     The graph optimization setting for the model. Optional.
	// @@
	Graph *ModelOptimizationPolicy_Graph `protobuf:"bytes,1,opt,name=graph,proto3" json:"graph,omitempty"`
	// @@  .. cpp:var:: ModelPriority priority
	// @@
	// @@     The priority setting for the model. Optional.
	// @@
	Priority ModelOptimizationPolicy_ModelPriority `protobuf:"varint,2,opt,name=priority,proto3,enum=inference.v1.ModelOptimizationPolicy_ModelPriority" json:"priority,omitempty"`
	// @@  .. cpp:var:: Cuda cuda
	// @@
	// @@     CUDA-specific optimization settings. Optional.
	// @@
	Cuda *ModelOptimizationPolicy_Cuda `protobuf:"bytes,3,opt,name=cuda,proto3" json:"cuda,omitempty"`
	// @@  .. cpp:var:: ExecutionAccelerators execution_accelerators
	// @@
	// @@     The accelerators used for the model. Optional.
	// @@
	ExecutionAccelerators *ModelOptimizationPolicy_ExecutionAccelerators `protobuf:"bytes,4,opt,name=execution_accelerators,json=executionAccelerators,proto3" json:"execution_accelerators,omitempty"`
	// @@  .. cpp:var:: PinnedMemoryBuffer input_pinned_memory
	// @@
	// @@     Use pinned memory buffer when the data transfer for inputs
	// @@     is between GPU memory and non-pinned system memory.
	// @@     Default is true.
	// @@
	InputPinnedMemory *ModelOptimizationPolicy_PinnedMemoryBuffer `protobuf:"bytes,5,opt,name=input_pinned_memory,json=inputPinnedMemory,proto3" json:"input_pinned_memory,omitempty"`
	// @@  .. cpp:var:: PinnedMemoryBuffer output_pinned_memory
	// @@
	// @@     Use pinned memory buffer when the data transfer for outputs
	// @@     is between GPU memory and non-pinned system memory.
	// @@     Default is true.
	// @@
	OutputPinnedMemory *ModelOptimizationPolicy_PinnedMemoryBuffer `protobuf:"bytes,6,opt,name=output_pinned_memory,json=outputPinnedMemory,proto3" json:"output_pinned_memory,omitempty"`
	// @@  .. cpp:var:: uint32 gather_kernel_buffer_threshold
	// @@
	// @@     The backend may use a gather kernel to gather input data if the
	// @@     device has direct access to the source buffer and the destination
	// @@     buffer. In such case, the gather kernel will be used only if the
	// @@     number of buffers to be gathered is greater or equal to
	// @@     the specifed value. If 0, the gather kernel will be disabled.
	// @@     Default value is 0.
	// @@     Currently only recognized by TensorRT backend.
	// @@
	GatherKernelBufferThreshold uint32 `protobuf:"varint,7,opt,name=gather_kernel_buffer_threshold,json=gatherKernelBufferThreshold,proto3" json:"gather_kernel_buffer_threshold,omitempty"`
	// @@  .. cpp:var:: bool eager_batching
	// @@
	// @@     Start preparing the next batch before the model instance is ready
	// @@     for the next inference. This option can be used to overlap the
	// @@     batch preparation with model execution, with the trade-off that
	// @@     the next batch might be smaller than what it could have been.
	// @@     Default value is false.
	// @@     Currently only recognized by TensorRT backend.
	// @@
	EagerBatching bool `protobuf:"varint,8,opt,name=eager_batching,json=eagerBatching,proto3" json:"eager_batching,omitempty"`
}

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

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

func (*ModelOptimizationPolicy) ProtoMessage() {}

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

func (x *ModelOptimizationPolicy) GetGraph() *ModelOptimizationPolicy_Graph {
	if x != nil {
		return x.Graph
	}
	return nil
}

func (x *ModelOptimizationPolicy) GetPriority() ModelOptimizationPolicy_ModelPriority {
	if x != nil {
		return x.Priority
	}
	return ModelOptimizationPolicy_PRIORITY_DEFAULT
}

func (x *ModelOptimizationPolicy) GetCuda() *ModelOptimizationPolicy_Cuda {
	if x != nil {
		return x.Cuda
	}
	return nil
}

func (x *ModelOptimizationPolicy) GetExecutionAccelerators() *ModelOptimizationPolicy_ExecutionAccelerators {
	if x != nil {
		return x.ExecutionAccelerators
	}
	return nil
}

func (x *ModelOptimizationPolicy) GetInputPinnedMemory() *ModelOptimizationPolicy_PinnedMemoryBuffer {
	if x != nil {
		return x.InputPinnedMemory
	}
	return nil
}

func (x *ModelOptimizationPolicy) GetOutputPinnedMemory() *ModelOptimizationPolicy_PinnedMemoryBuffer {
	if x != nil {
		return x.OutputPinnedMemory
	}
	return nil
}

func (x *ModelOptimizationPolicy) GetGatherKernelBufferThreshold() uint32 {
	if x != nil {
		return x.GatherKernelBufferThreshold
	}
	return 0
}

func (x *ModelOptimizationPolicy) GetEagerBatching() bool {
	if x != nil {
		return x.EagerBatching
	}
	return false
}

// @@
// @@.. cpp:var:: message ModelQueuePolicy
// @@
// @@   Queue policy for inference requests.
// @@
type ModelQueuePolicy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@
	// @@  .. cpp:var:: TimeoutAction timeout_action
	// @@
	// @@     The action applied to timed-out request.
	// @@     The default action is REJECT.
	// @@
	TimeoutAction ModelQueuePolicy_TimeoutAction `protobuf:"varint,1,opt,name=timeout_action,json=timeoutAction,proto3,enum=inference.v1.ModelQueuePolicy_TimeoutAction" json:"timeout_action,omitempty"`
	// @@
	// @@  .. cpp:var:: uint64 default_timeout_microseconds
	// @@
	// @@     The default timeout for every request, in microseconds.
	// @@     The default value is 0 which indicates that no timeout is set.
	// @@
	DefaultTimeoutMicroseconds uint64 `protobuf:"varint,2,opt,name=default_timeout_microseconds,json=defaultTimeoutMicroseconds,proto3" json:"default_timeout_microseconds,omitempty"`
	// @@
	// @@  .. cpp:var:: bool allow_timeout_override
	// @@
	// @@     Whether individual request can override the default timeout value.
	// @@     When true, individual requests can set a timeout that is less than
	// @@     the default timeout value but may not increase the timeout.
	// @@     The default value is false.
	// @@
	AllowTimeoutOverride bool `protobuf:"varint,3,opt,name=allow_timeout_override,json=allowTimeoutOverride,proto3" json:"allow_timeout_override,omitempty"`
	// @@
	// @@  .. cpp:var:: uint32 max_queue_size
	// @@
	// @@     The maximum queue size for holding requests. A request will be
	// @@     rejected immediately if it can't be enqueued because the queue is
	// @@     full. The default value is 0 which indicates that no maximum
	// @@     queue size is enforced.
	// @@
	MaxQueueSize uint32 `protobuf:"varint,4,opt,name=max_queue_size,json=maxQueueSize,proto3" json:"max_queue_size,omitempty"`
}

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

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

func (*ModelQueuePolicy) ProtoMessage() {}

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

func (x *ModelQueuePolicy) GetTimeoutAction() ModelQueuePolicy_TimeoutAction {
	if x != nil {
		return x.TimeoutAction
	}
	return ModelQueuePolicy_REJECT
}

func (x *ModelQueuePolicy) GetDefaultTimeoutMicroseconds() uint64 {
	if x != nil {
		return x.DefaultTimeoutMicroseconds
	}
	return 0
}

func (x *ModelQueuePolicy) GetAllowTimeoutOverride() bool {
	if x != nil {
		return x.AllowTimeoutOverride
	}
	return false
}

func (x *ModelQueuePolicy) GetMaxQueueSize() uint32 {
	if x != nil {
		return x.MaxQueueSize
	}
	return 0
}

// @@
// @@.. cpp:var:: message ModelDynamicBatching
// @@
// @@   Dynamic batching configuration. These settings control how dynamic
// @@   batching operates for the model.
// @@
type ModelDynamicBatching struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: int32 preferred_batch_size (repeated)
	// @@
	// @@     Preferred batch sizes for dynamic batching. If a batch of one of
	// @@     these sizes can be formed it will be executed immediately.  If
	// @@     not specified a preferred batch size will be chosen automatically
	// @@     based on model and GPU characteristics.
	// @@
	PreferredBatchSize []int32 `protobuf:"varint,1,rep,packed,name=preferred_batch_size,json=preferredBatchSize,proto3" json:"preferred_batch_size,omitempty"`
	// @@  .. cpp:var:: uint64 max_queue_delay_microseconds
	// @@
	// @@     The maximum time, in microseconds, a request will be delayed in
	// @@     the scheduling queue to wait for additional requests for
	// @@     batching. Default is 0.
	// @@
	MaxQueueDelayMicroseconds uint64 `protobuf:"varint,2,opt,name=max_queue_delay_microseconds,json=maxQueueDelayMicroseconds,proto3" json:"max_queue_delay_microseconds,omitempty"`
	// @@  .. cpp:var:: bool preserve_ordering
	// @@
	// @@     Should the dynamic batcher preserve the ordering of responses to
	// @@     match the order of requests received by the scheduler. Default is
	// @@     false. If true, the responses will be returned in the same order as
	// @@     the order of requests sent to the scheduler. If false, the responses
	// @@     may be returned in arbitrary order. This option is specifically
	// @@     needed when a sequence of related inference requests (i.e. inference
	// @@     requests with the same correlation ID) are sent to the dynamic
	// @@     batcher to ensure that the sequence responses are in the correct
	// @@     order.
	// @@
	PreserveOrdering bool `protobuf:"varint,3,opt,name=preserve_ordering,json=preserveOrdering,proto3" json:"preserve_ordering,omitempty"`
	// @@  .. cpp:var:: uint64 priority_levels
	// @@
	// @@     The number of priority levels to be enabled for the model,
	// @@     the priority level starts from 1 and 1 is the highest priority.
	// @@     Requests are handled in priority order with all priority 1 requests
	// @@     processed before priority 2, all priority 2 requests processed before
	// @@     priority 3, etc. Requests with the same priority level will be
	// @@     handled in the order that they are received.
	// @@
	PriorityLevels uint64 `protobuf:"varint,4,opt,name=priority_levels,json=priorityLevels,proto3" json:"priority_levels,omitempty"`
	// @@  .. cpp:var:: uint64 default_priority_level
	// @@
	// @@     The priority level used for requests that don't specify their
	// @@     priority. The value must be in the range [ 1, 'priority_levels' ].
	// @@
	DefaultPriorityLevel uint64 `protobuf:"varint,5,opt,name=default_priority_level,json=defaultPriorityLevel,proto3" json:"default_priority_level,omitempty"`
	// @@  .. cpp:var:: ModelQueuePolicy default_queue_policy
	// @@
	// @@     The default queue policy used for requests that don't require
	// @@     priority handling and requests that specify priority levels where
	// @@     there is no specific policy given. If not specified, a policy with
	// @@     default field values will be used.
	// @@
	DefaultQueuePolicy *ModelQueuePolicy `protobuf:"bytes,6,opt,name=default_queue_policy,json=defaultQueuePolicy,proto3" json:"default_queue_policy,omitempty"`
	// @@  .. cpp:var:: map<uint64, ModelQueuePolicy> priority_queue_policy
	// @@
	// @@     Specify the queue policy for the priority level. The default queue
	// @@     policy will be used if a priority level doesn't specify a queue
	// @@     policy.
	// @@
	PriorityQueuePolicy map[uint64]*ModelQueuePolicy `protobuf:"bytes,7,rep,name=priority_queue_policy,json=priorityQueuePolicy,proto3" json:"priority_queue_policy,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*ModelDynamicBatching) ProtoMessage() {}

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

func (x *ModelDynamicBatching) GetPreferredBatchSize() []int32 {
	if x != nil {
		return x.PreferredBatchSize
	}
	return nil
}

func (x *ModelDynamicBatching) GetMaxQueueDelayMicroseconds() uint64 {
	if x != nil {
		return x.MaxQueueDelayMicroseconds
	}
	return 0
}

func (x *ModelDynamicBatching) GetPreserveOrdering() bool {
	if x != nil {
		return x.PreserveOrdering
	}
	return false
}

func (x *ModelDynamicBatching) GetPriorityLevels() uint64 {
	if x != nil {
		return x.PriorityLevels
	}
	return 0
}

func (x *ModelDynamicBatching) GetDefaultPriorityLevel() uint64 {
	if x != nil {
		return x.DefaultPriorityLevel
	}
	return 0
}

func (x *ModelDynamicBatching) GetDefaultQueuePolicy() *ModelQueuePolicy {
	if x != nil {
		return x.DefaultQueuePolicy
	}
	return nil
}

func (x *ModelDynamicBatching) GetPriorityQueuePolicy() map[uint64]*ModelQueuePolicy {
	if x != nil {
		return x.PriorityQueuePolicy
	}
	return nil
}

// @@
// @@.. cpp:var:: message ModelSequenceBatching
// @@
// @@   Sequence batching configuration. These settings control how sequence
// @@   batching operates for the model.
// @@
type ModelSequenceBatching struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: oneof strategy_choice
	// @@
	// @@     The strategy used by the sequence batcher. Default strategy
	// @@     is 'direct'.
	// @@
	//
	// Types that are assignable to StrategyChoice:
	//
	//	*ModelSequenceBatching_Direct
	//	*ModelSequenceBatching_Oldest
	StrategyChoice isModelSequenceBatching_StrategyChoice `protobuf_oneof:"strategy_choice"`
	// @@  .. cpp:var:: uint64 max_sequence_idle_microseconds
	// @@
	// @@     The maximum time, in microseconds, that a sequence is allowed to
	// @@     be idle before it is aborted. The inference server considers a
	// @@     sequence idle when it does not have any inference request queued
	// @@     for the sequence. If this limit is exceeded, the inference server
	// @@     will free the sequence slot allocated by the sequence and make it
	// @@     available for another sequence. If not specified (or specified as
	// @@     zero) a default value of 1000000 (1 second) is used.
	// @@
	MaxSequenceIdleMicroseconds uint64 `protobuf:"varint,1,opt,name=max_sequence_idle_microseconds,json=maxSequenceIdleMicroseconds,proto3" json:"max_sequence_idle_microseconds,omitempty"`
	// @@  .. cpp:var:: ControlInput control_input (repeated)
	// @@
	// @@     The model input(s) that the server should use to communicate
	// @@     sequence start, stop, ready and similar control values to the
	// @@     model.
	// @@
	ControlInput []*ModelSequenceBatching_ControlInput `protobuf:"bytes,2,rep,name=control_input,json=controlInput,proto3" json:"control_input,omitempty"`
	// @@  .. cpp:var:: State state (repeated)
	// @@
	// @@     The optional state that can be stored in Triton for performing
	// @@     inference requests on a sequence. Each sequence holds an implicit
	// @@     state local to itself. The output state tensor provided by the
	// @@     model in 'output_name' field of the current inference request will
	// @@     be transferred as an input tensor named 'input_name' in the next
	// @@     request of the same sequence. The input state of the first request
	// @@     in the sequence contains garbage data.
	// @@
	State []*ModelSequenceBatching_State `protobuf:"bytes,5,rep,name=state,proto3" json:"state,omitempty"`
}

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

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

func (*ModelSequenceBatching) ProtoMessage() {}

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

func (m *ModelSequenceBatching) GetStrategyChoice() isModelSequenceBatching_StrategyChoice {
	if m != nil {
		return m.StrategyChoice
	}
	return nil
}

func (x *ModelSequenceBatching) GetDirect() *ModelSequenceBatching_StrategyDirect {
	if x, ok := x.GetStrategyChoice().(*ModelSequenceBatching_Direct); ok {
		return x.Direct
	}
	return nil
}

func (x *ModelSequenceBatching) GetOldest() *ModelSequenceBatching_StrategyOldest {
	if x, ok := x.GetStrategyChoice().(*ModelSequenceBatching_Oldest); ok {
		return x.Oldest
	}
	return nil
}

func (x *ModelSequenceBatching) GetMaxSequenceIdleMicroseconds() uint64 {
	if x != nil {
		return x.MaxSequenceIdleMicroseconds
	}
	return 0
}

func (x *ModelSequenceBatching) GetControlInput() []*ModelSequenceBatching_ControlInput {
	if x != nil {
		return x.ControlInput
	}
	return nil
}

func (x *ModelSequenceBatching) GetState() []*ModelSequenceBatching_State {
	if x != nil {
		return x.State
	}
	return nil
}

type isModelSequenceBatching_StrategyChoice interface {
	isModelSequenceBatching_StrategyChoice()
}

type ModelSequenceBatching_Direct struct {
	// @@    .. cpp:var:: StrategyDirect direct
	// @@
	// @@       StrategyDirect scheduling strategy.
	// @@
	Direct *ModelSequenceBatching_StrategyDirect `protobuf:"bytes,3,opt,name=direct,proto3,oneof"`
}

type ModelSequenceBatching_Oldest struct {
	// @@    .. cpp:var:: StrategyOldest oldest
	// @@
	// @@       StrategyOldest scheduling strategy.
	// @@
	Oldest *ModelSequenceBatching_StrategyOldest `protobuf:"bytes,4,opt,name=oldest,proto3,oneof"`
}

func (*ModelSequenceBatching_Direct) isModelSequenceBatching_StrategyChoice() {}

func (*ModelSequenceBatching_Oldest) isModelSequenceBatching_StrategyChoice() {}

// @@
// @@.. cpp:var:: message ModelEnsembling
// @@
// @@   Model ensembling configuration. These settings specify the models that
// @@   compose the ensemble and how data flows between the models.
// @@
type ModelEnsembling struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: Step step (repeated)
	// @@
	// @@     The models and the input / output mappings used within the ensemble.
	// @@
	Step []*ModelEnsembling_Step `protobuf:"bytes,1,rep,name=step,proto3" json:"step,omitempty"`
}

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

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

func (*ModelEnsembling) ProtoMessage() {}

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

func (x *ModelEnsembling) GetStep() []*ModelEnsembling_Step {
	if x != nil {
		return x.Step
	}
	return nil
}

// @@
// @@.. cpp:var:: message ModelParameter
// @@
// @@   A model parameter.
// @@
type ModelParameter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string string_value
	// @@
	// @@     The string value of the parameter.
	// @@
	StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,proto3" json:"string_value,omitempty"`
}

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

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

func (*ModelParameter) ProtoMessage() {}

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

func (x *ModelParameter) GetStringValue() string {
	if x != nil {
		return x.StringValue
	}
	return ""
}

// @@
// @@.. cpp:var:: message ModelWarmup
// @@
// @@   Settings used to construct the request sample for model warmup.
// @@
type ModelWarmup struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string name
	// @@
	// @@     The name of the request sample.
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@  .. cpp:var:: uint32 batch_size
	// @@
	// @@     The batch size of the inference request. This must be >= 1. For
	// @@     models that don't support batching, batch_size must be 1. If
	// @@     batch_size > 1, the 'inputs' specified below will be duplicated to
	// @@     match the batch size requested.
	// @@
	BatchSize uint32 `protobuf:"varint,2,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"`
	// @@  .. cpp:var:: map<string, Input> inputs
	// @@
	// @@     The warmup meta data associated with every model input, including
	// @@     control tensors.
	// @@
	Inputs map[string]*ModelWarmup_Input `protobuf:"bytes,3,rep,name=inputs,proto3" json:"inputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// @@  .. cpp:var:: uint32 count
	// @@
	// @@     The number of iterations that this warmup sample will be executed.
	// @@     For example, if this field is set to 2, 2 model executions using this
	// @@     sample will be scheduled for warmup. Default value is 0 which
	// @@     indicates that this sample will be used only once.
	// @@     Note that for sequence model, 'count' may not work well
	// @@     because the model often expect a valid sequence of requests which
	// @@     should be represented by a series of warmup samples. 'count > 1'
	// @@     essentially "resends" one of the sample, which may invalidate the
	// @@     sequence and result in unexpected warmup failure.
	// @@
	Count uint32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
}

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

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

func (*ModelWarmup) ProtoMessage() {}

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

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

func (x *ModelWarmup) GetBatchSize() uint32 {
	if x != nil {
		return x.BatchSize
	}
	return 0
}

func (x *ModelWarmup) GetInputs() map[string]*ModelWarmup_Input {
	if x != nil {
		return x.Inputs
	}
	return nil
}

func (x *ModelWarmup) GetCount() uint32 {
	if x != nil {
		return x.Count
	}
	return 0
}

// @@
// @@ .. cpp:var:: message ModelOperations
// @@
// @@    The metadata of libraries providing custom operations for this model.
// @@
type ModelOperations struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string op_library_filename (repeated)
	// @@
	// @@     Optional paths of the libraries providing custom operations for
	// @@     this model. Valid only for ONNX models.
	// @@
	OpLibraryFilename []string `protobuf:"bytes,1,rep,name=op_library_filename,json=opLibraryFilename,proto3" json:"op_library_filename,omitempty"`
}

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

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

func (*ModelOperations) ProtoMessage() {}

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

func (x *ModelOperations) GetOpLibraryFilename() []string {
	if x != nil {
		return x.OpLibraryFilename
	}
	return nil
}

// @@
// @@ .. cpp:var:: message ModelTransactionPolicy
// @@
// @@    The specification that describes the nature of transactions
// @@    to be expected from the model.
// @@
type ModelTransactionPolicy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: bool decoupled
	// @@
	// @@     Indicates whether responses generated by the model are decoupled with
	// @@     the requests issued to it, which means the number of responses
	// @@     generated by model may differ from number of requests issued, and
	// @@     that the responses may be out of order relative to the order of
	// @@     requests. The default is false, which means the model will generate
	// @@     exactly one response for each request.
	// @@
	Decoupled bool `protobuf:"varint,1,opt,name=decoupled,proto3" json:"decoupled,omitempty"`
}

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

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

func (*ModelTransactionPolicy) ProtoMessage() {}

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

func (x *ModelTransactionPolicy) GetDecoupled() bool {
	if x != nil {
		return x.Decoupled
	}
	return false
}

// @@
// @@.. cpp:var:: message ModelRepositoryAgents
// @@
// @@   The repository agents for the model.
// @@
type ModelRepositoryAgents struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@
	// @@  .. cpp:var:: Agent agents (repeated)
	// @@
	// @@     The ordered list of agents for the model. These agents will be
	// @@     invoked in order to respond to repository actions occuring for the
	// @@     model.
	// @@
	Agents []*ModelRepositoryAgents_Agent `protobuf:"bytes,1,rep,name=agents,proto3" json:"agents,omitempty"`
}

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

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

func (*ModelRepositoryAgents) ProtoMessage() {}

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

func (x *ModelRepositoryAgents) GetAgents() []*ModelRepositoryAgents_Agent {
	if x != nil {
		return x.Agents
	}
	return nil
}

// @@
// @@.. cpp:var:: message ModelResponseCache
// @@
// @@   The response cache setting for the model.
// @@
type ModelResponseCache struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@
	// @@  .. cpp::var:: bool enable
	// @@
	// @@     Whether or not to use response cache for the model. If True, the
	// @@     responses from the model are cached and when identical request
	// @@     is encountered, instead of going through the model execution,
	// @@     the response from the cache is utilized. By default, response
	// @@     cache is disabled for the models.
	// @@
	Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"`
}

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

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

func (*ModelResponseCache) ProtoMessage() {}

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

func (x *ModelResponseCache) GetEnable() bool {
	if x != nil {
		return x.Enable
	}
	return false
}

// @@
// @@.. cpp:var:: message ModelConfig
// @@
// @@   A model configuration.
// @@
type ModelConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string name
	// @@
	// @@     The name of the model.
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@  .. cpp:var:: string platform
	// @@
	// @@     Additional backend-specific configuration for the model.
	// @@     Please refer to the backend documentation on whether this field
	// @@     should be specified.
	// @@
	Platform string `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform,omitempty"`
	// @@  .. cpp:var:: string backend
	// @@
	// @@     The backend used by the model.
	// @@
	Backend string `protobuf:"bytes,17,opt,name=backend,proto3" json:"backend,omitempty"`
	// @@  .. cpp:var:: ModelVersionPolicy version_policy
	// @@
	// @@     Policy indicating which version(s) of the model will be served.
	// @@
	VersionPolicy *ModelVersionPolicy `protobuf:"bytes,3,opt,name=version_policy,json=versionPolicy,proto3" json:"version_policy,omitempty"`
	// @@  .. cpp:var:: int32 max_batch_size
	// @@
	// @@     Maximum batch size allowed for inference. This can only decrease
	// @@     what is allowed by the model itself. A max_batch_size value of 0
	// @@     indicates that batching is not allowed for the model and the
	// @@     dimension/shape of the input and output tensors must exactly
	// @@     match what is specified in the input and output configuration. A
	// @@     max_batch_size value > 0 indicates that batching is allowed and
	// @@     so the model expects the input tensors to have an additional
	// @@     initial dimension for the batching that is not specified in the
	// @@     input (for example, if the model supports batched inputs of
	// @@     2-dimensional tensors then the model configuration will specify
	// @@     the input shape as [ X, Y ] but the model will expect the actual
	// @@     input tensors to have shape [ N, X, Y ]). For max_batch_size > 0
	// @@     returned outputs will also have an additional initial dimension
	// @@     for the batch.
	// @@
	MaxBatchSize int32 `protobuf:"varint,4,opt,name=max_batch_size,json=maxBatchSize,proto3" json:"max_batch_size,omitempty"`
	// @@  .. cpp:var:: ModelInput input (repeated)
	// @@
	// @@     The inputs request by the model.
	// @@
	Input []*ModelInput `protobuf:"bytes,5,rep,name=input,proto3" json:"input,omitempty"`
	// @@  .. cpp:var:: ModelOutput output (repeated)
	// @@
	// @@     The outputs produced by the model.
	// @@
	Output []*ModelOutput `protobuf:"bytes,6,rep,name=output,proto3" json:"output,omitempty"`
	// @@  .. cpp:var:: BatchInput batch_input (repeated)
	// @@
	// @@     The model input(s) that the server should use to communicate
	// @@     batch related values to the model.
	// @@
	BatchInput []*BatchInput `protobuf:"bytes,20,rep,name=batch_input,json=batchInput,proto3" json:"batch_input,omitempty"`
	// @@  .. cpp:var:: BatchOutput batch_output (repeated)
	// @@
	// @@     The outputs produced by the model that requires special handling
	// @@     by the model backend.
	// @@
	BatchOutput []*BatchOutput `protobuf:"bytes,21,rep,name=batch_output,json=batchOutput,proto3" json:"batch_output,omitempty"`
	// @@  .. cpp:var:: ModelOptimizationPolicy optimization
	// @@
	// @@     Optimization configuration for the model. If not specified
	// @@     then default optimization policy is used.
	// @@
	Optimization *ModelOptimizationPolicy `protobuf:"bytes,12,opt,name=optimization,proto3" json:"optimization,omitempty"`
	// @@  .. cpp:var:: oneof scheduling_choice
	// @@
	// @@     The scheduling policy for the model. If not specified the
	// @@     default scheduling policy is used for the model. The default
	// @@     policy is to execute each inference request independently.
	// @@
	//
	// Types that are assignable to SchedulingChoice:
	//
	//	*ModelConfig_DynamicBatching
	//	*ModelConfig_SequenceBatching
	//	*ModelConfig_EnsembleScheduling
	SchedulingChoice isModelConfig_SchedulingChoice `protobuf_oneof:"scheduling_choice"`
	// @@  .. cpp:var:: ModelInstanceGroup instance_group (repeated)
	// @@
	// @@     Instances of this model. If not specified, one instance
	// @@     of the model will be instantiated on each available GPU.
	// @@
	InstanceGroup []*ModelInstanceGroup `protobuf:"bytes,7,rep,name=instance_group,json=instanceGroup,proto3" json:"instance_group,omitempty"`
	// @@  .. cpp:var:: string default_model_filename
	// @@
	// @@     Optional filename of the model file to use if a
	// @@     compute-capability specific model is not specified in
	// @@     :cpp:var:`cc_model_filenames`. If not specified the default name
	// @@     is 'model.graphdef', 'model.savedmodel', 'model.plan' or
	// @@     'model.pt' depending on the model type.
	// @@
	DefaultModelFilename string `protobuf:"bytes,8,opt,name=default_model_filename,json=defaultModelFilename,proto3" json:"default_model_filename,omitempty"`
	// @@  .. cpp:var:: map<string,string> cc_model_filenames
	// @@
	// @@     Optional map from CUDA compute capability to the filename of
	// @@     the model that supports that compute capability. The filename
	// @@     refers to a file within the model version directory.
	// @@
	CcModelFilenames map[string]string `protobuf:"bytes,9,rep,name=cc_model_filenames,json=ccModelFilenames,proto3" json:"cc_model_filenames,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// @@  .. cpp:var:: map<string,string> metric_tags
	// @@
	// @@     Optional metric tags. User-specific key-value pairs for metrics
	// @@     reported for this model. These tags are applied to the metrics
	// @@     reported on the HTTP metrics port.
	// @@
	MetricTags map[string]string `protobuf:"bytes,10,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// @@  .. cpp:var:: map<string,ModelParameter> parameters
	// @@
	// @@     Optional model parameters. User-specified parameter values.
	// @@
	Parameters map[string]*ModelParameter `protobuf:"bytes,14,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// @@  .. cpp:var:: ModelWarmup model_warmup (repeated)
	// @@
	// @@     Warmup setting of this model. If specified, all instances
	// @@     will be run with the request samples in sequence before
	// @@     serving the model.
	// @@     This field can only be specified if the model is not an ensemble
	// @@     model.
	// @@
	ModelWarmup []*ModelWarmup `protobuf:"bytes,16,rep,name=model_warmup,json=modelWarmup,proto3" json:"model_warmup,omitempty"`
	// @@  .. cpp:var:: ModelOperations model_operations
	// @@
	// @@     Optional metadata of the libraries providing custom operations for
	// @@     this model.
	// @@
	ModelOperations *ModelOperations `protobuf:"bytes,18,opt,name=model_operations,json=modelOperations,proto3" json:"model_operations,omitempty"`
	// @@  .. cpp:var:: ModelTransactionPolicy model_transaction_policy
	// @@
	// @@     Optional specification that describes the nature of transactions
	// @@     to be expected from the model.
	// @@
	ModelTransactionPolicy *ModelTransactionPolicy `protobuf:"bytes,19,opt,name=model_transaction_policy,json=modelTransactionPolicy,proto3" json:"model_transaction_policy,omitempty"`
	// @@  .. cpp:var:: ModelRepositoryAgents model_repository_agents
	// @@
	// @@     Optional specification of the agent(s) that should be invoked
	// @@     with repository actions are performed for this model.
	// @@
	ModelRepositoryAgents *ModelRepositoryAgents `protobuf:"bytes,23,opt,name=model_repository_agents,json=modelRepositoryAgents,proto3" json:"model_repository_agents,omitempty"`
	// @@  .. cpp:var:: ModelResponseCache response_cache
	// @@
	// @@     Optional setting for utilizing the response cache for this
	// @@     model.
	// @@
	ResponseCache *ModelResponseCache `protobuf:"bytes,24,opt,name=response_cache,json=responseCache,proto3" json:"response_cache,omitempty"`
}

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

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

func (*ModelConfig) ProtoMessage() {}

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

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

func (x *ModelConfig) GetPlatform() string {
	if x != nil {
		return x.Platform
	}
	return ""
}

func (x *ModelConfig) GetBackend() string {
	if x != nil {
		return x.Backend
	}
	return ""
}

func (x *ModelConfig) GetVersionPolicy() *ModelVersionPolicy {
	if x != nil {
		return x.VersionPolicy
	}
	return nil
}

func (x *ModelConfig) GetMaxBatchSize() int32 {
	if x != nil {
		return x.MaxBatchSize
	}
	return 0
}

func (x *ModelConfig) GetInput() []*ModelInput {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *ModelConfig) GetOutput() []*ModelOutput {
	if x != nil {
		return x.Output
	}
	return nil
}

func (x *ModelConfig) GetBatchInput() []*BatchInput {
	if x != nil {
		return x.BatchInput
	}
	return nil
}

func (x *ModelConfig) GetBatchOutput() []*BatchOutput {
	if x != nil {
		return x.BatchOutput
	}
	return nil
}

func (x *ModelConfig) GetOptimization() *ModelOptimizationPolicy {
	if x != nil {
		return x.Optimization
	}
	return nil
}

func (m *ModelConfig) GetSchedulingChoice() isModelConfig_SchedulingChoice {
	if m != nil {
		return m.SchedulingChoice
	}
	return nil
}

func (x *ModelConfig) GetDynamicBatching() *ModelDynamicBatching {
	if x, ok := x.GetSchedulingChoice().(*ModelConfig_DynamicBatching); ok {
		return x.DynamicBatching
	}
	return nil
}

func (x *ModelConfig) GetSequenceBatching() *ModelSequenceBatching {
	if x, ok := x.GetSchedulingChoice().(*ModelConfig_SequenceBatching); ok {
		return x.SequenceBatching
	}
	return nil
}

func (x *ModelConfig) GetEnsembleScheduling() *ModelEnsembling {
	if x, ok := x.GetSchedulingChoice().(*ModelConfig_EnsembleScheduling); ok {
		return x.EnsembleScheduling
	}
	return nil
}

func (x *ModelConfig) GetInstanceGroup() []*ModelInstanceGroup {
	if x != nil {
		return x.InstanceGroup
	}
	return nil
}

func (x *ModelConfig) GetDefaultModelFilename() string {
	if x != nil {
		return x.DefaultModelFilename
	}
	return ""
}

func (x *ModelConfig) GetCcModelFilenames() map[string]string {
	if x != nil {
		return x.CcModelFilenames
	}
	return nil
}

func (x *ModelConfig) GetMetricTags() map[string]string {
	if x != nil {
		return x.MetricTags
	}
	return nil
}

func (x *ModelConfig) GetParameters() map[string]*ModelParameter {
	if x != nil {
		return x.Parameters
	}
	return nil
}

func (x *ModelConfig) GetModelWarmup() []*ModelWarmup {
	if x != nil {
		return x.ModelWarmup
	}
	return nil
}

func (x *ModelConfig) GetModelOperations() *ModelOperations {
	if x != nil {
		return x.ModelOperations
	}
	return nil
}

func (x *ModelConfig) GetModelTransactionPolicy() *ModelTransactionPolicy {
	if x != nil {
		return x.ModelTransactionPolicy
	}
	return nil
}

func (x *ModelConfig) GetModelRepositoryAgents() *ModelRepositoryAgents {
	if x != nil {
		return x.ModelRepositoryAgents
	}
	return nil
}

func (x *ModelConfig) GetResponseCache() *ModelResponseCache {
	if x != nil {
		return x.ResponseCache
	}
	return nil
}

type isModelConfig_SchedulingChoice interface {
	isModelConfig_SchedulingChoice()
}

type ModelConfig_DynamicBatching struct {
	// @@    .. cpp:var:: ModelDynamicBatching dynamic_batching
	// @@
	// @@       If specified, enables the dynamic-batching scheduling
	// @@       policy. With dynamic-batching the scheduler may group
	// @@       together independent requests into a single batch to
	// @@       improve inference throughput.
	// @@
	DynamicBatching *ModelDynamicBatching `protobuf:"bytes,11,opt,name=dynamic_batching,json=dynamicBatching,proto3,oneof"`
}

type ModelConfig_SequenceBatching struct {
	// @@    .. cpp:var:: ModelSequenceBatching sequence_batching
	// @@
	// @@       If specified, enables the sequence-batching scheduling
	// @@       policy. With sequence-batching, inference requests
	// @@       with the same correlation ID are routed to the same
	// @@       model instance. Multiple sequences of inference requests
	// @@       may be batched together into a single batch to
	// @@       improve inference throughput.
	// @@
	SequenceBatching *ModelSequenceBatching `protobuf:"bytes,13,opt,name=sequence_batching,json=sequenceBatching,proto3,oneof"`
}

type ModelConfig_EnsembleScheduling struct {
	// @@    .. cpp:var:: ModelEnsembling ensemble_scheduling
	// @@
	// @@       If specified, enables the model-ensembling scheduling
	// @@       policy. With model-ensembling, inference requests
	// @@       will be processed according to the specification, such as an
	// @@       execution sequence of models. The input specified in this model
	// @@       config will be the input for the ensemble, and the output
	// @@       specified will be the output of the ensemble.
	// @@
	EnsembleScheduling *ModelEnsembling `protobuf:"bytes,15,opt,name=ensemble_scheduling,json=ensembleScheduling,proto3,oneof"`
}

func (*ModelConfig_DynamicBatching) isModelConfig_SchedulingChoice() {}

func (*ModelConfig_SequenceBatching) isModelConfig_SchedulingChoice() {}

func (*ModelConfig_EnsembleScheduling) isModelConfig_SchedulingChoice() {}

// @@  .. cpp:var:: message Resource
// @@
// @@     The resource property.
// @@
type ModelRateLimiter_Resource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string name
	// @@
	// @@     The name associated with the resource.
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@  .. cpp:var:: bool global
	// @@
	// @@     Whether or not the resource is global. If true then the resource
	// @@     is assumed to be shared among the devices otherwise specified
	// @@     count of the resource is assumed for each device associated
	// @@     with the instance.
	// @@
	Global bool `protobuf:"varint,2,opt,name=global,proto3" json:"global,omitempty"`
	// @@  .. cpp:var:: uint32 count
	// @@
	// @@     The number of resources required for the execution of the model
	// @@     instance.
	// @@
	Count uint32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
}

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

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

func (*ModelRateLimiter_Resource) ProtoMessage() {}

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

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

func (x *ModelRateLimiter_Resource) GetGlobal() bool {
	if x != nil {
		return x.Global
	}
	return false
}

func (x *ModelRateLimiter_Resource) GetCount() uint32 {
	if x != nil {
		return x.Count
	}
	return 0
}

// @@
// @@  .. cpp:var:: message SecondaryDevice
// @@
// @@     A secondary device required for a model instance.
// @@
type ModelInstanceGroup_SecondaryDevice struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: SecondaryDeviceKind kind
	// @@
	// @@     The secondary device kind.
	// @@
	Kind ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind `protobuf:"varint,1,opt,name=kind,proto3,enum=inference.v1.ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind" json:"kind,omitempty"`
	// @@  .. cpp:var:: int64 device_id
	// @@
	// @@     Identifier for the secondary device.
	// @@
	DeviceId int64 `protobuf:"varint,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
}

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

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

func (*ModelInstanceGroup_SecondaryDevice) ProtoMessage() {}

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

func (x *ModelInstanceGroup_SecondaryDevice) GetKind() ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind {
	if x != nil {
		return x.Kind
	}
	return ModelInstanceGroup_SecondaryDevice_KIND_NVDLA
}

func (x *ModelInstanceGroup_SecondaryDevice) GetDeviceId() int64 {
	if x != nil {
		return x.DeviceId
	}
	return 0
}

// @@  .. cpp:var:: message Latest
// @@
// @@     Serve only the latest version(s) of a model. This is
// @@     the default policy.
// @@
type ModelVersionPolicy_Latest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: uint32 num_versions
	// @@
	// @@       Serve only the 'num_versions' highest-numbered versions. T
	// @@       The default value of 'num_versions' is 1, indicating that by
	// @@       default only the single highest-number version of a
	// @@       model will be served.
	// @@
	NumVersions uint32 `protobuf:"varint,1,opt,name=num_versions,json=numVersions,proto3" json:"num_versions,omitempty"`
}

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

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

func (*ModelVersionPolicy_Latest) ProtoMessage() {}

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

func (x *ModelVersionPolicy_Latest) GetNumVersions() uint32 {
	if x != nil {
		return x.NumVersions
	}
	return 0
}

// @@  .. cpp:var:: message All
// @@
// @@     Serve all versions of the model.
// @@
type ModelVersionPolicy_All struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ModelVersionPolicy_All) ProtoMessage() {}

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

// @@  .. cpp:var:: message Specific
// @@
// @@     Serve only specific versions of the model.
// @@
type ModelVersionPolicy_Specific struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: int64 versions (repeated)
	// @@
	// @@       The specific versions of the model that will be served.
	// @@
	Versions []int64 `protobuf:"varint,1,rep,packed,name=versions,proto3" json:"versions,omitempty"`
}

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

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

func (*ModelVersionPolicy_Specific) ProtoMessage() {}

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

func (x *ModelVersionPolicy_Specific) GetVersions() []int64 {
	if x != nil {
		return x.Versions
	}
	return nil
}

// @@
// @@  .. cpp:var:: message Graph
// @@
// @@     Enable generic graph optimization of the model. If not specified
// @@     the framework's default level of optimization is used. Supports
// @@     TensorFlow graphdef and savedmodel and Onnx models. For TensorFlow
// @@     causes XLA to be enabled/disabled for the model. For Onnx defaults
// @@     to enabling all optimizations, -1 enables only basic optimizations,
// @@     +1 enables only basic and extended optimizations.
// @@
type ModelOptimizationPolicy_Graph struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: int32 level
	// @@
	// @@       The optimization level. Defaults to 0 (zero) if not specified.
	// @@
	// @@         - -1: Disabled
	// @@         -  0: Framework default
	// @@         -  1+: Enable optimization level (greater values indicate
	// @@            higher optimization levels)
	// @@
	Level int32 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"`
}

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

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

func (*ModelOptimizationPolicy_Graph) ProtoMessage() {}

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

func (x *ModelOptimizationPolicy_Graph) GetLevel() int32 {
	if x != nil {
		return x.Level
	}
	return 0
}

// @@
// @@  .. cpp:var:: message Cuda
// @@
// @@     CUDA-specific optimization settings.
// @@
type ModelOptimizationPolicy_Cuda struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: bool graphs
	// @@
	// @@       Use CUDA graphs API to capture model operations and execute
	// @@       them more efficiently. Default value is false.
	// @@       Currently only recognized by TensorRT backend.
	// @@
	Graphs bool `protobuf:"varint,1,opt,name=graphs,proto3" json:"graphs,omitempty"`
	// @@    .. cpp:var:: bool busy_wait_events
	// @@
	// @@       Use busy-waiting to synchronize CUDA events to achieve minimum
	// @@       latency from event complete to host thread to be notified, with
	// @@       the cost of high CPU load. Default value is false.
	// @@       Currently only recognized by TensorRT backend.
	// @@
	BusyWaitEvents bool `protobuf:"varint,2,opt,name=busy_wait_events,json=busyWaitEvents,proto3" json:"busy_wait_events,omitempty"`
	// @@    .. cpp:var:: GraphSpec graph_spec (repeated)
	// @@
	// @@       Specification of the CUDA graph to be captured. If not specified
	// @@       and 'graphs' is true, the default CUDA graphs will be captured
	// @@       based on model settings.
	// @@       Currently only recognized by TensorRT backend.
	// @@
	GraphSpec []*ModelOptimizationPolicy_Cuda_GraphSpec `protobuf:"bytes,3,rep,name=graph_spec,json=graphSpec,proto3" json:"graph_spec,omitempty"`
	// @@    .. cpp:var:: bool output_copy_stream
	// @@
	// @@       Uses a CUDA stream separate from the inference stream to copy the
	// @@       output to host. However, be aware that setting this option to
	// @@       true will lead to an increase in the memory consumption of the
	// @@       model as Triton will allocate twice as much GPU memory for its
	// @@       I/O tensor buffers. Default value is false.
	// @@       Currently only recognized by TensorRT backend.
	// @@
	OutputCopyStream bool `protobuf:"varint,4,opt,name=output_copy_stream,json=outputCopyStream,proto3" json:"output_copy_stream,omitempty"`
}

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

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

func (*ModelOptimizationPolicy_Cuda) ProtoMessage() {}

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

func (x *ModelOptimizationPolicy_Cuda) GetGraphs() bool {
	if x != nil {
		return x.Graphs
	}
	return false
}

func (x *ModelOptimizationPolicy_Cuda) GetBusyWaitEvents() bool {
	if x != nil {
		return x.BusyWaitEvents
	}
	return false
}

func (x *ModelOptimizationPolicy_Cuda) GetGraphSpec() []*ModelOptimizationPolicy_Cuda_GraphSpec {
	if x != nil {
		return x.GraphSpec
	}
	return nil
}

func (x *ModelOptimizationPolicy_Cuda) GetOutputCopyStream() bool {
	if x != nil {
		return x.OutputCopyStream
	}
	return false
}

// @@
// @@  .. cpp:var:: message ExecutionAccelerators
// @@
// @@     Specify the preferred execution accelerators to be used to execute
// @@     the model. Currently only recognized by ONNX Runtime backend and
// @@     TensorFlow backend.
// @@
// @@     For ONNX Runtime backend, it will deploy the model with the execution
// @@     accelerators by priority, the priority is determined based on the
// @@     order that they are set, i.e. the provider at the front has highest
// @@     priority. Overall, the priority will be in the following order:
// @@         <gpu_execution_accelerator> (if instance is on GPU)
// @@         CUDA Execution Provider     (if instance is on GPU)
// @@         <cpu_execution_accelerator>
// @@         Default CPU Execution Provider
// @@
type ModelOptimizationPolicy_ExecutionAccelerators struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: Accelerator gpu_execution_accelerator (repeated)
	// @@
	// @@       The preferred execution provider to be used if the model instance
	// @@       is deployed on GPU.
	// @@
	// @@       For ONNX Runtime backend, possible value is "tensorrt" as name,
	// @@       and no parameters are required.
	// @@
	// @@       For TensorFlow backend, possible values are "tensorrt",
	// @@       "auto_mixed_precision", "gpu_io".
	// @@
	// @@       For "tensorrt", the following parameters can be specified:
	// @@         "precision_mode": The precision used for optimization.
	// @@         Allowed values are "FP32" and "FP16". Default value is "FP32".
	// @@
	// @@         "max_cached_engines": The maximum number of cached TensorRT
	// @@         engines in dynamic TensorRT ops. Default value is 100.
	// @@
	// @@         "minimum_segment_size": The smallest model subgraph that will
	// @@         be considered for optimization by TensorRT. Default value is 3.
	// @@
	// @@         "max_workspace_size_bytes": The maximum GPU memory the model
	// @@         can use temporarily during execution. Default value is 1GB.
	// @@
	// @@       For "auto_mixed_precision", no parameters are required. If set,
	// @@       the model will try to use FP16 for better performance.
	// @@       This optimization can not be set with "tensorrt".
	// @@
	// @@       For "gpu_io", no parameters are required. If set, the model will
	// @@       be executed using TensorFlow Callable API to set input and output
	// @@       tensors in GPU memory if possible, which can reduce data transfer
	// @@       overhead if the model is used in ensemble. However, the Callable
	// @@       object will be created on model creation and it will request all
	// @@       outputs for every model execution, which may impact the
	// @@       performance if a request does not require all outputs. This
	// @@       optimization will only take affect if the model instance is
	// @@       created with KIND_GPU.
	// @@
	GpuExecutionAccelerator []*ModelOptimizationPolicy_ExecutionAccelerators_Accelerator `protobuf:"bytes,1,rep,name=gpu_execution_accelerator,json=gpuExecutionAccelerator,proto3" json:"gpu_execution_accelerator,omitempty"`
	// @@    .. cpp:var:: Accelerator cpu_execution_accelerator (repeated)
	// @@
	// @@       The preferred execution provider to be used if the model instance
	// @@       is deployed on CPU.
	// @@
	// @@       For ONNX Runtime backend, possible value is "openvino" as name,
	// @@       and no parameters are required.
	// @@
	CpuExecutionAccelerator []*ModelOptimizationPolicy_ExecutionAccelerators_Accelerator `protobuf:"bytes,2,rep,name=cpu_execution_accelerator,json=cpuExecutionAccelerator,proto3" json:"cpu_execution_accelerator,omitempty"`
}

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

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

func (*ModelOptimizationPolicy_ExecutionAccelerators) ProtoMessage() {}

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

func (x *ModelOptimizationPolicy_ExecutionAccelerators) GetGpuExecutionAccelerator() []*ModelOptimizationPolicy_ExecutionAccelerators_Accelerator {
	if x != nil {
		return x.GpuExecutionAccelerator
	}
	return nil
}

func (x *ModelOptimizationPolicy_ExecutionAccelerators) GetCpuExecutionAccelerator() []*ModelOptimizationPolicy_ExecutionAccelerators_Accelerator {
	if x != nil {
		return x.CpuExecutionAccelerator
	}
	return nil
}

// @@
// @@  .. cpp:var:: message PinnedMemoryBuffer
// @@
// @@     Specify whether to use a pinned memory buffer when transferring data
// @@     between non-pinned system memory and GPU memory. Using a pinned
// @@     memory buffer for system from/to GPU transfers will typically provide
// @@     increased performance. For example, in the common use case where the
// @@     request provides inputs and delivers outputs via non-pinned system
// @@     memory, if the model instance accepts GPU IOs, the inputs will be
// @@     processed by two copies: from non-pinned system memory to pinned
// @@     memory, and from pinned memory to GPU memory. Similarly, pinned
// @@     memory will be used for delivering the outputs.
// @@
type ModelOptimizationPolicy_PinnedMemoryBuffer struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: bool enable
	// @@
	// @@       Use pinned memory buffer. Default is true.
	// @@
	Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"`
}

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

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

func (*ModelOptimizationPolicy_PinnedMemoryBuffer) ProtoMessage() {}

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

func (x *ModelOptimizationPolicy_PinnedMemoryBuffer) GetEnable() bool {
	if x != nil {
		return x.Enable
	}
	return false
}

// @@    .. cpp:var:: message GraphSpec
// @@
// @@       Specification of the CUDA graph to be captured.
// @@
type ModelOptimizationPolicy_Cuda_GraphSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@      .. cpp:var:: int32 batch_size
	// @@
	// @@         The batch size of the CUDA graph. If 'max_batch_size' is 0,
	// @@         'batch_size' must be set to 0. Otherwise, 'batch_size' must
	// @@         be set to value between 1 and 'max_batch_size'.
	// @@
	BatchSize int32 `protobuf:"varint,1,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"`
	// @@      .. cpp:var:: map<string, Shape> input
	// @@
	// @@         The specification of the inputs. 'Shape' is the shape of the
	// @@         input without batching dimension.
	// @@
	Input map[string]*ModelOptimizationPolicy_Cuda_GraphSpec_Shape `protobuf:"bytes,2,rep,name=input,proto3" json:"input,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// @@      .. cpp:var:: LowerBound graph_lower_bound
	// @@
	// @@         Specify the lower bound of the CUDA graph. Optional.
	// @@         If specified, the graph can be used for input shapes and
	// @@         batch sizes that are in closed interval between the lower
	// @@         bound specification and graph specification. For dynamic
	// @@         shape model, this allows CUDA graphs to be launched
	// @@         frequently without capturing all possible shape combinations.
	// @@         However, using graph for shape combinations different from
	// @@         the one used for capturing introduces uninitialized data for
	// @@         execution and it may distort the inference result if
	// @@         the model is sensitive to uninitialized data.
	// @@
	GraphLowerBound *ModelOptimizationPolicy_Cuda_GraphSpec_LowerBound `protobuf:"bytes,3,opt,name=graph_lower_bound,json=graphLowerBound,proto3" json:"graph_lower_bound,omitempty"`
}

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

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

func (*ModelOptimizationPolicy_Cuda_GraphSpec) ProtoMessage() {}

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

func (x *ModelOptimizationPolicy_Cuda_GraphSpec) GetBatchSize() int32 {
	if x != nil {
		return x.BatchSize
	}
	return 0
}

func (x *ModelOptimizationPolicy_Cuda_GraphSpec) GetInput() map[string]*ModelOptimizationPolicy_Cuda_GraphSpec_Shape {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *ModelOptimizationPolicy_Cuda_GraphSpec) GetGraphLowerBound() *ModelOptimizationPolicy_Cuda_GraphSpec_LowerBound {
	if x != nil {
		return x.GraphLowerBound
	}
	return nil
}

// @@      .. cpp:var:: message Dims
// @@
// @@         Specification of tensor dimension.
// @@
type ModelOptimizationPolicy_Cuda_GraphSpec_Shape struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@        .. cpp:var:: int64 dim (repeated)
	// @@
	// @@           The dimension.
	// @@
	Dim []int64 `protobuf:"varint,1,rep,packed,name=dim,proto3" json:"dim,omitempty"`
}

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

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

func (*ModelOptimizationPolicy_Cuda_GraphSpec_Shape) ProtoMessage() {}

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

func (x *ModelOptimizationPolicy_Cuda_GraphSpec_Shape) GetDim() []int64 {
	if x != nil {
		return x.Dim
	}
	return nil
}

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

	// @@      .. cpp:var:: int32 batch_size
	// @@
	// @@         The batch size of the CUDA graph. If 'max_batch_size' is 0,
	// @@         'batch_size' must be set to 0. Otherwise, 'batch_size' must
	// @@         be set to value between 1 and 'max_batch_size'.
	// @@
	BatchSize int32 `protobuf:"varint,1,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"`
	// @@      .. cpp:var:: map<string, Shape> input
	// @@
	// @@         The specification of the inputs. 'Shape' is the shape of
	// @@         the input without batching dimension.
	// @@
	Input map[string]*ModelOptimizationPolicy_Cuda_GraphSpec_Shape `protobuf:"bytes,2,rep,name=input,proto3" json:"input,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*ModelOptimizationPolicy_Cuda_GraphSpec_LowerBound) ProtoMessage() {}

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

func (x *ModelOptimizationPolicy_Cuda_GraphSpec_LowerBound) GetBatchSize() int32 {
	if x != nil {
		return x.BatchSize
	}
	return 0
}

func (x *ModelOptimizationPolicy_Cuda_GraphSpec_LowerBound) GetInput() map[string]*ModelOptimizationPolicy_Cuda_GraphSpec_Shape {
	if x != nil {
		return x.Input
	}
	return nil
}

// @@
// @@  .. cpp:var:: message Accelerator
// @@
// @@     Specify the accelerator to be used to execute the model.
// @@     Accelerator with the same name may accept different parameters
// @@     depending on the backends.
// @@
type ModelOptimizationPolicy_ExecutionAccelerators_Accelerator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: string name
	// @@
	// @@       The name of the execution accelerator.
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@    .. cpp:var:: map<string, string> parameters
	// @@
	// @@       Additional paremeters used to configure the accelerator.
	// @@
	Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*ModelOptimizationPolicy_ExecutionAccelerators_Accelerator) ProtoMessage() {}

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

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

func (x *ModelOptimizationPolicy_ExecutionAccelerators_Accelerator) GetParameters() map[string]string {
	if x != nil {
		return x.Parameters
	}
	return nil
}

// @@  .. cpp:var:: message Control
// @@
// @@     A control is a signal that the sequence batcher uses to
// @@     communicate with a backend.
// @@
type ModelSequenceBatching_Control struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: Kind kind
	// @@
	// @@       The kind of this control.
	// @@
	Kind ModelSequenceBatching_Control_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=inference.v1.ModelSequenceBatching_Control_Kind" json:"kind,omitempty"`
	// @@    .. cpp:var:: int32 int32_false_true (repeated)
	// @@
	// @@       The control's true and false setting is indicated by setting
	// @@       a value in an int32 tensor. The tensor must be a
	// @@       1-dimensional tensor with size equal to the batch size of
	// @@       the request. 'int32_false_true' must have two entries: the
	// @@       first the false value and the second the true value.
	// @@
	Int32FalseTrue []int32 `protobuf:"varint,2,rep,packed,name=int32_false_true,json=int32FalseTrue,proto3" json:"int32_false_true,omitempty"`
	// @@    .. cpp:var:: float fp32_false_true (repeated)
	// @@
	// @@       The control's true and false setting is indicated by setting
	// @@       a value in a fp32 tensor. The tensor must be a
	// @@       1-dimensional tensor with size equal to the batch size of
	// @@       the request. 'fp32_false_true' must have two entries: the
	// @@       first the false value and the second the true value.
	// @@
	Fp32FalseTrue []float32 `protobuf:"fixed32,3,rep,packed,name=fp32_false_true,json=fp32FalseTrue,proto3" json:"fp32_false_true,omitempty"`
	// @@    .. cpp:var:: bool bool_false_true (repeated)
	// @@
	// @@       The control's true and false setting is indicated by setting
	// @@       a value in a bool tensor. The tensor must be a
	// @@       1-dimensional tensor with size equal to the batch size of
	// @@       the request. 'bool_false_true' must have two entries: the
	// @@       first the false value and the second the true value.
	// @@
	BoolFalseTrue []bool `protobuf:"varint,5,rep,packed,name=bool_false_true,json=boolFalseTrue,proto3" json:"bool_false_true,omitempty"`
	// @@    .. cpp:var:: DataType data_type
	// @@
	// @@       The control's datatype.
	// @@
	DataType DataType `protobuf:"varint,4,opt,name=data_type,json=dataType,proto3,enum=inference.v1.DataType" json:"data_type,omitempty"`
}

func (x *ModelSequenceBatching_Control) Reset() {
	*x = ModelSequenceBatching_Control{}
	if protoimpl.UnsafeEnabled {
		mi := &file_pkg_apis_inference_v1_model_config_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ModelSequenceBatching_Control) ProtoMessage() {}

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

func (x *ModelSequenceBatching_Control) GetKind() ModelSequenceBatching_Control_Kind {
	if x != nil {
		return x.Kind
	}
	return ModelSequenceBatching_Control_CONTROL_SEQUENCE_START
}

func (x *ModelSequenceBatching_Control) GetInt32FalseTrue() []int32 {
	if x != nil {
		return x.Int32FalseTrue
	}
	return nil
}

func (x *ModelSequenceBatching_Control) GetFp32FalseTrue() []float32 {
	if x != nil {
		return x.Fp32FalseTrue
	}
	return nil
}

func (x *ModelSequenceBatching_Control) GetBoolFalseTrue() []bool {
	if x != nil {
		return x.BoolFalseTrue
	}
	return nil
}

func (x *ModelSequenceBatching_Control) GetDataType() DataType {
	if x != nil {
		return x.DataType
	}
	return DataType_TYPE_INVALID
}

// @@  .. cpp:var:: message ControlInput
// @@
// @@     The sequence control values to communicate by a model input.
// @@
type ModelSequenceBatching_ControlInput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: string name
	// @@
	// @@       The name of the model input.
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@    .. cpp:var:: Control control (repeated)
	// @@
	// @@       The control value(s) that should be communicated to the
	// @@       model using this model input.
	// @@
	Control []*ModelSequenceBatching_Control `protobuf:"bytes,2,rep,name=control,proto3" json:"control,omitempty"`
}

func (x *ModelSequenceBatching_ControlInput) Reset() {
	*x = ModelSequenceBatching_ControlInput{}
	if protoimpl.UnsafeEnabled {
		mi := &file_pkg_apis_inference_v1_model_config_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ModelSequenceBatching_ControlInput) ProtoMessage() {}

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

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

func (x *ModelSequenceBatching_ControlInput) GetControl() []*ModelSequenceBatching_Control {
	if x != nil {
		return x.Control
	}
	return nil
}

// @@
// @@  .. cpp:var:: message InitialState
// @@
// @@     Settings used to initialize data for implicit state.
// @@
type ModelSequenceBatching_InitialState struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@      .. cpp:var:: DataType data_type
	// @@
	// @@         The data-type of the state.
	// @@
	DataType DataType `protobuf:"varint,1,opt,name=data_type,json=dataType,proto3,enum=inference.v1.DataType" json:"data_type,omitempty"`
	// @@      .. cpp:var:: int64 dims (repeated)
	// @@
	// @@         The shape of the state tensor, not including the batch
	// @@         dimension.
	// @@
	Dims []int64 `protobuf:"varint,2,rep,packed,name=dims,proto3" json:"dims,omitempty"`
	// @@      .. cpp:var:: oneof state_data
	// @@
	// @@         Specify how the initial state data is generated.
	// @@
	//
	// Types that are assignable to StateData:
	//
	//	*ModelSequenceBatching_InitialState_ZeroData
	//	*ModelSequenceBatching_InitialState_DataFile
	StateData isModelSequenceBatching_InitialState_StateData `protobuf_oneof:"state_data"`
	// @@  .. cpp:var:: string name
	// @@
	// @@     The name of the state initialization.
	// @@
	Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
}

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

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

func (*ModelSequenceBatching_InitialState) ProtoMessage() {}

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

func (x *ModelSequenceBatching_InitialState) GetDataType() DataType {
	if x != nil {
		return x.DataType
	}
	return DataType_TYPE_INVALID
}

func (x *ModelSequenceBatching_InitialState) GetDims() []int64 {
	if x != nil {
		return x.Dims
	}
	return nil
}

func (m *ModelSequenceBatching_InitialState) GetStateData() isModelSequenceBatching_InitialState_StateData {
	if m != nil {
		return m.StateData
	}
	return nil
}

func (x *ModelSequenceBatching_InitialState) GetZeroData() bool {
	if x, ok := x.GetStateData().(*ModelSequenceBatching_InitialState_ZeroData); ok {
		return x.ZeroData
	}
	return false
}

func (x *ModelSequenceBatching_InitialState) GetDataFile() string {
	if x, ok := x.GetStateData().(*ModelSequenceBatching_InitialState_DataFile); ok {
		return x.DataFile
	}
	return ""
}

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

type isModelSequenceBatching_InitialState_StateData interface {
	isModelSequenceBatching_InitialState_StateData()
}

type ModelSequenceBatching_InitialState_ZeroData struct {
	// @@
	// @@      .. cpp:var:: bool zero_data
	// @@
	// @@         The identifier for using zeros as initial state data.
	// @@         Note that the value of 'zero_data' will not be checked,
	// @@         instead, zero data will be used as long as the field is set.
	// @@
	ZeroData bool `protobuf:"varint,3,opt,name=zero_data,json=zeroData,proto3,oneof"`
}

type ModelSequenceBatching_InitialState_DataFile struct {
	// @@      .. cpp:var:: string data_file
	// @@
	// @@         The file whose content will be used as the initial data for
	// @@         the state in row-major order. The file must be provided in
	// @@         sub-directory 'initial_state' under the model directory.
	// @@
	DataFile string `protobuf:"bytes,4,opt,name=data_file,json=dataFile,proto3,oneof"`
}

func (*ModelSequenceBatching_InitialState_ZeroData) isModelSequenceBatching_InitialState_StateData() {
}

func (*ModelSequenceBatching_InitialState_DataFile) isModelSequenceBatching_InitialState_StateData() {
}

// @@  .. cpp:var:: message State
// @@
// @@     An input / output pair of tensors that carry state for the sequence.
// @@
type ModelSequenceBatching_State struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: string input_name
	// @@
	// @@       The name of the model state input.
	// @@
	InputName string `protobuf:"bytes,1,opt,name=input_name,json=inputName,proto3" json:"input_name,omitempty"`
	// @@    .. cpp:var:: string output_name
	// @@
	// @@       The name of the model state output.
	// @@
	OutputName string `protobuf:"bytes,2,opt,name=output_name,json=outputName,proto3" json:"output_name,omitempty"`
	// @@    .. cpp:var:: DataType data_type
	// @@
	// @@       The data-type of the state.
	// @@
	DataType DataType `protobuf:"varint,3,opt,name=data_type,json=dataType,proto3,enum=inference.v1.DataType" json:"data_type,omitempty"`
	// @@    .. cpp:var:: int64 dim (repeated)
	// @@
	// @@       The dimension.
	// @@
	Dims []int64 `protobuf:"varint,4,rep,packed,name=dims,proto3" json:"dims,omitempty"`
	// @@  .. cpp:var:: InitialState initial_state (repeated)
	// @@
	// @@     The optional field to specify the initial state for the model.
	// @@
	InitialState []*ModelSequenceBatching_InitialState `protobuf:"bytes,5,rep,name=initial_state,json=initialState,proto3" json:"initial_state,omitempty"`
}

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

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

func (*ModelSequenceBatching_State) ProtoMessage() {}

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

func (x *ModelSequenceBatching_State) GetInputName() string {
	if x != nil {
		return x.InputName
	}
	return ""
}

func (x *ModelSequenceBatching_State) GetOutputName() string {
	if x != nil {
		return x.OutputName
	}
	return ""
}

func (x *ModelSequenceBatching_State) GetDataType() DataType {
	if x != nil {
		return x.DataType
	}
	return DataType_TYPE_INVALID
}

func (x *ModelSequenceBatching_State) GetDims() []int64 {
	if x != nil {
		return x.Dims
	}
	return nil
}

func (x *ModelSequenceBatching_State) GetInitialState() []*ModelSequenceBatching_InitialState {
	if x != nil {
		return x.InitialState
	}
	return nil
}

// @@  .. cpp:var:: message StrategyDirect
// @@
// @@     The sequence batcher uses a specific, unique batch
// @@     slot for each sequence. All inference requests in a
// @@     sequence are directed to the same batch slot in the same
// @@     model instance over the lifetime of the sequence. This
// @@     is the default strategy.
// @@
type ModelSequenceBatching_StrategyDirect struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: uint64 max_queue_delay_microseconds
	// @@
	// @@       The maximum time, in microseconds, a candidate request
	// @@       will be delayed in the sequence batch scheduling queue to
	// @@       wait for additional requests for batching. Default is 0.
	// @@
	MaxQueueDelayMicroseconds uint64 `protobuf:"varint,1,opt,name=max_queue_delay_microseconds,json=maxQueueDelayMicroseconds,proto3" json:"max_queue_delay_microseconds,omitempty"`
	// @@    .. cpp:var:: float minimum_slot_utilization
	// @@
	// @@       The minimum slot utilization that must be satisfied to
	// @@       execute the batch before 'max_queue_delay_microseconds' expires.
	// @@       For example, a value of 0.5 indicates that the batch should be
	// @@       executed as soon as 50% or more of the slots are ready even if
	// @@       the 'max_queue_delay_microseconds' timeout has not expired.
	// @@       The default is 0.0, indicating that a batch will be executed
	// @@       before 'max_queue_delay_microseconds' timeout expires if at least
	// @@       one batch slot is ready. 'max_queue_delay_microseconds' will be
	// @@       ignored unless minimum_slot_utilization is set to a non-zero
	// @@       value.
	// @@
	MinimumSlotUtilization float32 `protobuf:"fixed32,2,opt,name=minimum_slot_utilization,json=minimumSlotUtilization,proto3" json:"minimum_slot_utilization,omitempty"`
}

func (x *ModelSequenceBatching_StrategyDirect) Reset() {
	*x = ModelSequenceBatching_StrategyDirect{}
	if protoimpl.UnsafeEnabled {
		mi := &file_pkg_apis_inference_v1_model_config_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ModelSequenceBatching_StrategyDirect) ProtoMessage() {}

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

func (x *ModelSequenceBatching_StrategyDirect) GetMaxQueueDelayMicroseconds() uint64 {
	if x != nil {
		return x.MaxQueueDelayMicroseconds
	}
	return 0
}

func (x *ModelSequenceBatching_StrategyDirect) GetMinimumSlotUtilization() float32 {
	if x != nil {
		return x.MinimumSlotUtilization
	}
	return 0
}

// @@  .. cpp:var:: message StrategyOldest
// @@
// @@     The sequence batcher maintains up to 'max_candidate_sequences'
// @@     candidate sequences. 'max_candidate_sequences' can be greater
// @@     than the model's 'max_batch_size'. For inferencing the batcher
// @@     chooses from the candidate sequences up to 'max_batch_size'
// @@     inference requests. Requests are chosen in an oldest-first
// @@     manner across all candidate sequences. A given sequence is
// @@     not guaranteed to be assigned to the same batch slot for
// @@     all inference requests of that sequence.
// @@
type ModelSequenceBatching_StrategyOldest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: int32 max_candidate_sequences
	// @@
	// @@       Maximum number of candidate sequences that the batcher
	// @@       maintains. Excess seqences are kept in an ordered backlog
	// @@       and become candidates when existing candidate sequences
	// @@       complete.
	// @@
	MaxCandidateSequences int32 `protobuf:"varint,1,opt,name=max_candidate_sequences,json=maxCandidateSequences,proto3" json:"max_candidate_sequences,omitempty"`
	// @@    .. cpp:var:: int32 preferred_batch_size (repeated)
	// @@
	// @@       Preferred batch sizes for dynamic batching of candidate
	// @@       sequences. If a batch of one of these sizes can be formed
	// @@       it will be executed immediately. If not specified a
	// @@       preferred batch size will be chosen automatically
	// @@       based on model and GPU characteristics.
	// @@
	PreferredBatchSize []int32 `protobuf:"varint,2,rep,packed,name=preferred_batch_size,json=preferredBatchSize,proto3" json:"preferred_batch_size,omitempty"`
	// @@    .. cpp:var:: uint64 max_queue_delay_microseconds
	// @@
	// @@       The maximum time, in microseconds, a candidate request
	// @@       will be delayed in the dynamic batch scheduling queue to
	// @@       wait for additional requests for batching. Default is 0.
	// @@
	MaxQueueDelayMicroseconds uint64 `protobuf:"varint,3,opt,name=max_queue_delay_microseconds,json=maxQueueDelayMicroseconds,proto3" json:"max_queue_delay_microseconds,omitempty"`
}

func (x *ModelSequenceBatching_StrategyOldest) Reset() {
	*x = ModelSequenceBatching_StrategyOldest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_pkg_apis_inference_v1_model_config_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ModelSequenceBatching_StrategyOldest) ProtoMessage() {}

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

func (x *ModelSequenceBatching_StrategyOldest) GetMaxCandidateSequences() int32 {
	if x != nil {
		return x.MaxCandidateSequences
	}
	return 0
}

func (x *ModelSequenceBatching_StrategyOldest) GetPreferredBatchSize() []int32 {
	if x != nil {
		return x.PreferredBatchSize
	}
	return nil
}

func (x *ModelSequenceBatching_StrategyOldest) GetMaxQueueDelayMicroseconds() uint64 {
	if x != nil {
		return x.MaxQueueDelayMicroseconds
	}
	return 0
}

// @@  .. cpp:var:: message Step
// @@
// @@     Each step specifies a model included in the ensemble,
// @@     maps ensemble tensor names to the model input tensors,
// @@     and maps model output tensors to ensemble tensor names
// @@
type ModelEnsembling_Step struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@  .. cpp:var:: string model_name
	// @@
	// @@     The name of the model to execute for this step of the ensemble.
	// @@
	ModelName string `protobuf:"bytes,1,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"`
	// @@  .. cpp:var:: int64 model_version
	// @@
	// @@     The version of the model to use for inference. If -1
	// @@     the latest/most-recent version of the model is used.
	// @@
	ModelVersion int64 `protobuf:"varint,2,opt,name=model_version,json=modelVersion,proto3" json:"model_version,omitempty"`
	// @@  .. cpp:var:: map<string,string> input_map
	// @@
	// @@     Map from name of an input tensor on this step's model to ensemble
	// @@     tensor name. The ensemble tensor must have the same data type and
	// @@     shape as the model input. Each model input must be assigned to
	// @@     one ensemble tensor, but the same ensemble tensor can be assigned
	// @@     to multiple model inputs.
	// @@
	InputMap map[string]string `protobuf:"bytes,3,rep,name=input_map,json=inputMap,proto3" json:"input_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// @@  .. cpp:var:: map<string,string> output_map
	// @@
	// @@     Map from name of an output tensor on this step's model to ensemble
	// @@     tensor name. The data type and shape of the ensemble tensor will
	// @@     be inferred from the model output. It is optional to assign all
	// @@     model outputs to ensemble tensors. One ensemble tensor name
	// @@     can appear in an output map only once.
	// @@
	OutputMap map[string]string `protobuf:"bytes,4,rep,name=output_map,json=outputMap,proto3" json:"output_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// @@  .. cpp:var:: string model_namespace
	// @@
	// @@     [RESERVED] currently this field is reserved for internal use, users
	// @@     must not set any value to this field to avoid unexpected behavior.
	// @@
	ModelNamespace string `protobuf:"bytes,5,opt,name=model_namespace,json=modelNamespace,proto3" json:"model_namespace,omitempty"`
}

func (x *ModelEnsembling_Step) Reset() {
	*x = ModelEnsembling_Step{}
	if protoimpl.UnsafeEnabled {
		mi := &file_pkg_apis_inference_v1_model_config_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ModelEnsembling_Step) ProtoMessage() {}

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

func (x *ModelEnsembling_Step) GetModelName() string {
	if x != nil {
		return x.ModelName
	}
	return ""
}

func (x *ModelEnsembling_Step) GetModelVersion() int64 {
	if x != nil {
		return x.ModelVersion
	}
	return 0
}

func (x *ModelEnsembling_Step) GetInputMap() map[string]string {
	if x != nil {
		return x.InputMap
	}
	return nil
}

func (x *ModelEnsembling_Step) GetOutputMap() map[string]string {
	if x != nil {
		return x.OutputMap
	}
	return nil
}

func (x *ModelEnsembling_Step) GetModelNamespace() string {
	if x != nil {
		return x.ModelNamespace
	}
	return ""
}

// @@
// @@  .. cpp:var:: message Input
// @@
// @@     Meta data associated with an input.
// @@
type ModelWarmup_Input struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: DataType data_type
	// @@
	// @@       The data-type of the input.
	// @@
	DataType DataType `protobuf:"varint,1,opt,name=data_type,json=dataType,proto3,enum=inference.v1.DataType" json:"data_type,omitempty"`
	// @@    .. cpp:var:: int64 dims (repeated)
	// @@
	// @@       The shape of the input tensor, not including the batch dimension.
	// @@
	Dims []int64 `protobuf:"varint,2,rep,packed,name=dims,proto3" json:"dims,omitempty"`
	// @@    .. cpp:var:: oneof input_data_type
	// @@
	// @@       Specify how the input data is generated. If the input has STRING
	// @@       data type and 'random_data' is set, the data generation will fall
	// @@       back to 'zero_data'.
	// @@
	//
	// Types that are assignable to InputDataType:
	//
	//	*ModelWarmup_Input_ZeroData
	//	*ModelWarmup_Input_RandomData
	//	*ModelWarmup_Input_InputDataFile
	InputDataType isModelWarmup_Input_InputDataType `protobuf_oneof:"input_data_type"`
}

func (x *ModelWarmup_Input) Reset() {
	*x = ModelWarmup_Input{}
	if protoimpl.UnsafeEnabled {
		mi := &file_pkg_apis_inference_v1_model_config_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ModelWarmup_Input) ProtoMessage() {}

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

func (x *ModelWarmup_Input) GetDataType() DataType {
	if x != nil {
		return x.DataType
	}
	return DataType_TYPE_INVALID
}

func (x *ModelWarmup_Input) GetDims() []int64 {
	if x != nil {
		return x.Dims
	}
	return nil
}

func (m *ModelWarmup_Input) GetInputDataType() isModelWarmup_Input_InputDataType {
	if m != nil {
		return m.InputDataType
	}
	return nil
}

func (x *ModelWarmup_Input) GetZeroData() bool {
	if x, ok := x.GetInputDataType().(*ModelWarmup_Input_ZeroData); ok {
		return x.ZeroData
	}
	return false
}

func (x *ModelWarmup_Input) GetRandomData() bool {
	if x, ok := x.GetInputDataType().(*ModelWarmup_Input_RandomData); ok {
		return x.RandomData
	}
	return false
}

func (x *ModelWarmup_Input) GetInputDataFile() string {
	if x, ok := x.GetInputDataType().(*ModelWarmup_Input_InputDataFile); ok {
		return x.InputDataFile
	}
	return ""
}

type isModelWarmup_Input_InputDataType interface {
	isModelWarmup_Input_InputDataType()
}

type ModelWarmup_Input_ZeroData struct {
	// @@
	// @@    .. cpp:var:: bool zero_data
	// @@
	// @@       The identifier for using zeros as input data. Note that the
	// @@       value of 'zero_data' will not be checked, instead, zero data
	// @@       will be used as long as the field is set.
	// @@
	ZeroData bool `protobuf:"varint,3,opt,name=zero_data,json=zeroData,proto3,oneof"`
}

type ModelWarmup_Input_RandomData struct {
	// @@
	// @@    .. cpp:var:: bool random_data
	// @@
	// @@       The identifier for using random data as input data. Note that
	// @@       the value of 'random_data' will not be checked, instead,
	// @@       random data will be used as long as the field is set.
	// @@
	RandomData bool `protobuf:"varint,4,opt,name=random_data,json=randomData,proto3,oneof"`
}

type ModelWarmup_Input_InputDataFile struct {
	// @@    .. cpp:var:: string input_data_file
	// @@
	// @@       The file whose content will be used as raw input data in
	// @@       row-major order. The file must be provided in a sub-directory
	// @@       'warmup' under the model directory. The file contents should be
	// @@       in binary format. For TYPE_STRING data-type, an element is
	// @@       represented by a 4-byte unsigned integer giving the length
	// @@       followed by the actual bytes.
	// @@
	InputDataFile string `protobuf:"bytes,5,opt,name=input_data_file,json=inputDataFile,proto3,oneof"`
}

func (*ModelWarmup_Input_ZeroData) isModelWarmup_Input_InputDataType() {}

func (*ModelWarmup_Input_RandomData) isModelWarmup_Input_InputDataType() {}

func (*ModelWarmup_Input_InputDataFile) isModelWarmup_Input_InputDataType() {}

// @@
// @@  .. cpp:var:: message Agent
// @@
// @@     A repository agent that should be invoked for the specified
// @@     repository actions for this model.
// @@
type ModelRepositoryAgents_Agent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// @@    .. cpp:var:: string name
	// @@
	// @@       The name of the agent.
	// @@
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// @@    .. cpp:var:: map<string, string> parameters
	// @@
	// @@       The parameters for the agent.
	// @@
	Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*ModelRepositoryAgents_Agent) ProtoMessage() {}

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

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

func (x *ModelRepositoryAgents_Agent) GetParameters() map[string]string {
	if x != nil {
		return x.Parameters
	}
	return nil
}

var File_pkg_apis_inference_v1_model_config_proto protoreflect.FileDescriptor

var file_pkg_apis_inference_v1_model_config_proto_rawDesc = []byte{
	0x0a, 0x28, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x63, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x69, 0x6e, 0x66, 0x65,
	0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x22, 0xc3, 0x01, 0x0a, 0x10, 0x4d, 0x6f, 0x64,
	0x65, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x45, 0x0a,
	0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x27, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72,
	0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
	0x1a, 0x4c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x06, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf9,
	0x04, 0x0a, 0x12, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65,
	0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x73, 0x74,
	0x61, 0x6e, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04,
	0x6b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0c, 0x72, 0x61,
	0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72,
	0x52, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a,
	0x04, 0x67, 0x70, 0x75, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x67, 0x70, 0x75,
	0x73, 0x12, 0x5d, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69,
	0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x53,
	0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x10,
	0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73,
	0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61,
	0x73, 0x73, 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x61, 0x73,
	0x73, 0x69, 0x76, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x6c,
	0x69, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0xaf, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
	0x61, 0x72, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65,
	0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x73, 0x74,
	0x61, 0x6e, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
	0x61, 0x72, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
	0x61, 0x72, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b,
	0x69, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64,
	0x22, 0x25, 0x0a, 0x13, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x0a, 0x4b, 0x49, 0x4e, 0x44, 0x5f,
	0x4e, 0x56, 0x44, 0x4c, 0x41, 0x10, 0x00, 0x22, 0x41, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12,
	0x0d, 0x0a, 0x09, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0c,
	0x0a, 0x08, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x47, 0x50, 0x55, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08,
	0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x50, 0x55, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4b, 0x49,
	0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x03, 0x22, 0x2a, 0x0a, 0x12, 0x4d, 0x6f,
	0x64, 0x65, 0x6c, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x68, 0x61, 0x70, 0x65,
	0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52,
	0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x22, 0x8d, 0x03, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x64, 0x61, 0x74,
	0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69,
	0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x37,
	0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f,
	0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f,
	0x64, 0x65, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52,
	0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x69, 0x6d, 0x73, 0x18,
	0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x64, 0x69, 0x6d, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x72,
	0x65, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69,
	0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x68, 0x61, 0x70, 0x65, 0x52, 0x07,
	0x72, 0x65, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x73, 0x68,
	0x61, 0x70, 0x65, 0x5f, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0d, 0x69, 0x73, 0x53, 0x68, 0x61, 0x70, 0x65, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12,
	0x2c, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x61, 0x67, 0x67, 0x65, 0x64, 0x5f,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x6c, 0x6c,
	0x6f, 0x77, 0x52, 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a,
	0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x3b, 0x0a, 0x06, 0x46, 0x6f, 0x72,
	0x6d, 0x61, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4e, 0x4f,
	0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4e,
	0x48, 0x57, 0x43, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f,
	0x4e, 0x43, 0x48, 0x57, 0x10, 0x02, 0x22, 0xf5, 0x01, 0x0a, 0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x64, 0x61,
	0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e,
	0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74,
	0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x12, 0x0a, 0x04, 0x64, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x64,
	0x69, 0x6d, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52,
	0x65, 0x73, 0x68, 0x61, 0x70, 0x65, 0x52, 0x07, 0x72, 0x65, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12,
	0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69,
	0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x61,
	0x70, 0x65, 0x5f, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0d, 0x69, 0x73, 0x53, 0x68, 0x61, 0x70, 0x65, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x22, 0x88,
	0x03, 0x0a, 0x0a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x31, 0x0a,
	0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x69, 0x6e,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
	0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x33, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61,
	0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x22, 0xcd, 0x01, 0x0a, 0x04, 0x4b, 0x69,
	0x6e, 0x64, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4c, 0x45, 0x4d,
	0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x42,
	0x41, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x43, 0x43, 0x55, 0x4d, 0x55, 0x4c, 0x41, 0x54, 0x45, 0x44,
	0x5f, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x01,
	0x12, 0x2d, 0x0a, 0x29, 0x42, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x43, 0x43, 0x55, 0x4d, 0x55,
	0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4f,
	0x55, 0x4e, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x02, 0x12,
	0x24, 0x0a, 0x20, 0x42, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x45, 0x4c, 0x45,
	0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x5f, 0x53, 0x48,
	0x41, 0x50, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x49,
	0x54, 0x45, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x50, 0x45, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x42,
	0x41, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x50, 0x45, 0x5f,
	0x46, 0x4c, 0x41, 0x54, 0x54, 0x45, 0x4e, 0x10, 0x05, 0x22, 0xb1, 0x01, 0x0a, 0x0b, 0x42, 0x61,
	0x74, 0x63, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72,
	0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x6b, 0x69,
	0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x75, 0x74,
	0x70, 0x75, 0x74, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x21,
	0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x22, 0x2a, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x41, 0x54,
	0x43, 0x48, 0x5f, 0x53, 0x43, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f,
	0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x50, 0x45, 0x10, 0x00, 0x22, 0xc7, 0x02,
	0x0a, 0x12, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
	0x6c, 0x69, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52,
	0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6c,
	0x6c, 0x12, 0x47, 0x0a, 0x08, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x48, 0x00,
	0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x1a, 0x2b, 0x0a, 0x06, 0x4c, 0x61,
	0x74, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x56,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x05, 0x0a, 0x03, 0x41, 0x6c, 0x6c, 0x1a, 0x26,
	0x0a, 0x08, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
	0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x93, 0x11, 0x0a, 0x17, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
	0x69, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52,
	0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x4f, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
	0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74,
	0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x04, 0x63, 0x75, 0x64, 0x61, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69,
	0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x75, 0x64,
	0x61, 0x52, 0x04, 0x63, 0x75, 0x64, 0x61, 0x12, 0x72, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75,
	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65,
	0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69,
	0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x45,
	0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61,
	0x74, 0x6f, 0x72, 0x73, 0x52, 0x15, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41,
	0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x68, 0x0a, 0x13, 0x69,
	0x6e, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f,
	0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74,
	0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
	0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x42, 0x75, 0x66, 0x66,
	0x65, 0x72, 0x52, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x14, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f,
	0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65,
	0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x12, 0x6f,
	0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
	0x79, 0x12, 0x43, 0x0a, 0x1e, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x72, 0x6e,
	0x65, 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68,
	0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x67, 0x61, 0x74, 0x68, 0x65,
	0x72, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x54, 0x68, 0x72,
	0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x61, 0x67, 0x65, 0x72, 0x5f,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d,
	0x65, 0x61, 0x67, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x1a, 0x1d, 0x0a,
	0x05, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0xd3, 0x06, 0x0a,
	0x04, 0x43, 0x75, 0x64, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x28, 0x0a,
	0x10, 0x62, 0x75, 0x73, 0x79, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74,
	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x75, 0x73, 0x79, 0x57, 0x61, 0x69,
	0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68,
	0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
	0x63, 0x79, 0x2e, 0x43, 0x75, 0x64, 0x61, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x70, 0x65,
	0x63, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2c, 0x0a, 0x12,
	0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x1a, 0x85, 0x05, 0x0a, 0x09, 0x47,
	0x72, 0x61, 0x70, 0x68, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63,
	0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x61,
	0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x55, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e,
	0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d,
	0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x75,
	0x64, 0x61, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x70,
	0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x6b,
	0x0a, 0x11, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f,
	0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x6e, 0x66, 0x65,
	0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70,
	0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
	0x2e, 0x43, 0x75, 0x64, 0x61, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e,
	0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x70,
	0x68, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x19, 0x0a, 0x05, 0x53,
	0x68, 0x61, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x03, 0x52, 0x03, 0x64, 0x69, 0x6d, 0x1a, 0x83, 0x02, 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72,
	0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73,
	0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68,
	0x53, 0x69, 0x7a, 0x65, 0x12, 0x60, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x75, 0x64, 0x61, 0x2e,
	0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42,
	0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x74, 0x0a, 0x0a, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69,
	0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x75, 0x64,
	0x61, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x68, 0x61, 0x70,
	0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74, 0x0a, 0x0a,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x69, 0x6e,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
	0x63, 0x79, 0x2e, 0x43, 0x75, 0x64, 0x61, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x70, 0x65,
	0x63, 0x2e, 0x53, 0x68, 0x61, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x1a, 0xff, 0x03, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
	0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x83, 0x01, 0x0a,
	0x19, 0x67, 0x70, 0x75, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61,
	0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x47, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f,
	0x6e, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x41, 0x63,
	0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x17, 0x67, 0x70, 0x75, 0x45, 0x78,
	0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74,
	0x6f, 0x72, 0x12, 0x83, 0x01, 0x0a, 0x19, 0x63, 0x70, 0x75, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75,
	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e,
	0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d,
	0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x45, 0x78,
	0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74,
	0x6f, 0x72, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52,
	0x17, 0x63, 0x70, 0x75, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63,
	0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0xd9, 0x01, 0x0a, 0x0b, 0x41, 0x63, 0x63,
	0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x77, 0x0a, 0x0a,
	0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x57, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f,
	0x6e, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x41, 0x63,
	0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
	0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d,
	0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
	0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x2c, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65,
	0x6d, 0x6f, 0x72, 0x79, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e,
	0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x22, 0x49, 0x0a, 0x0d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x69, 0x6f, 0x72,
	0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f,
	0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x49,
	0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50,
	0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x49, 0x4e, 0x10, 0x02, 0x22, 0xad, 0x02,
	0x0a, 0x10, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x6f, 0x6c, 0x69,
	0x63, 0x79, 0x12, 0x53, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x66,
	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x51,
	0x75, 0x65, 0x75, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f,
	0x75, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
	0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x1c, 0x64, 0x65, 0x66, 0x61, 0x75,
	0x6c, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f,
	0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1a, 0x64,
	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x69, 0x63,
	0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c,
	0x6f, 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72,
	0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12,
	0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x73, 0x69, 0x7a,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x75,
	0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x26, 0x0a, 0x0d, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54,
	0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x01, 0x22, 0xc0, 0x04,
	0x0a, 0x14, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x42, 0x61,
	0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72,
	0x72, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x42,
	0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x6d, 0x61, 0x78, 0x5f,
	0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x69, 0x63, 0x72,
	0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x19,
	0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x69, 0x63,
	0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x72, 0x65,
	0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4f, 0x72,
	0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
	0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0e, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12,
	0x34, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72,
	0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
	0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x50, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
	0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x6f, 0x6c,
	0x69, 0x63, 0x79, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x51, 0x75, 0x65, 0x75,
	0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x6f, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72,
	0x69, 0x74, 0x79, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
	0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e,
	0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x44, 0x79, 0x6e, 0x61, 0x6d,
	0x69, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72,
	0x69, 0x74, 0x79, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x13, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x51, 0x75, 0x65,
	0x75, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x66, 0x0a, 0x18, 0x50, 0x72, 0x69, 0x6f,
	0x72, 0x69, 0x74, 0x79, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0xf6, 0x0c, 0x0a, 0x15, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e,
	0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x4c, 0x0a, 0x06, 0x64, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x66,
	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53,
	0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e,
	0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x48, 0x00,
	0x52, 0x06, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x4c, 0x0a, 0x06, 0x6f, 0x6c, 0x64, 0x65,
	0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71,
	0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74,
	0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x4f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06,
	0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65,
	0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72,
	0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b,
	0x6d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x6c, 0x65, 0x4d,
	0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x55, 0x0a, 0x0d, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42,
	0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49,
	0x6e, 0x70, 0x75, 0x74, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x6e, 0x70,
	0x75, 0x74, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31,
	0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61,
	0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
	0x61, 0x74, 0x65, 0x1a, 0xf5, 0x02, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12,
	0x44, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e,
	0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64,
	0x65, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69,
	0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52,
	0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66,
	0x61, 0x6c, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52,
	0x0e, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x54, 0x72, 0x75, 0x65, 0x12,
	0x26, 0x0a, 0x0f, 0x66, 0x70, 0x33, 0x32, 0x5f, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x5f, 0x74, 0x72,
	0x75, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x66, 0x70, 0x33, 0x32, 0x46, 0x61,
	0x6c, 0x73, 0x65, 0x54, 0x72, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f,
	0x66, 0x61, 0x6c, 0x73, 0x65, 0x5f, 0x74, 0x72, 0x75, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x08,
	0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x54, 0x72, 0x75, 0x65, 0x12,
	0x33, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61,
	0x54, 0x79, 0x70, 0x65, 0x22, 0x75, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x16,
	0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45,
	0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x54,
	0x52, 0x4f, 0x4c, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x41,
	0x44, 0x59, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f,
	0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x1b,
	0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e,
	0x43, 0x45, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x49, 0x44, 0x10, 0x03, 0x1a, 0x69, 0x0a, 0x0c, 0x43,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x45, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2b, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x74,
	0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x07, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x1a, 0xb7, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x69, 0x74, 0x69,
	0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66,
	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x64, 0x69, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x64, 0x69, 0x6d, 0x73,
	0x12, 0x1d, 0x0a, 0x09, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x7a, 0x65, 0x72, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x12,
	0x1d, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12,
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61,
	0x1a, 0xe7, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x69, 0x6e, 0x70, 0x75, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74,
	0x70, 0x75, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x64, 0x61,
	0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e,
	0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74,
	0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x12, 0x0a, 0x04, 0x64, 0x69, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x64,
	0x69, 0x6d, 0x73, 0x12, 0x55, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73,
	0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6e, 0x66,
	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53,
	0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e,
	0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x69, 0x6e,
	0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x8b, 0x01, 0x0a, 0x0e, 0x53,
	0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x3f, 0x0a,
	0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79,
	0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x19, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x6c,
	0x61, 0x79, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x38,
	0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x75,
	0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
	0x52, 0x16, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x53, 0x6c, 0x6f, 0x74, 0x55, 0x74, 0x69,
	0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbb, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x72,
	0x61, 0x74, 0x65, 0x67, 0x79, 0x4f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x6d,
	0x61, 0x78, 0x5f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x71,
	0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x61,
	0x78, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e,
	0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64,
	0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x05, 0x52, 0x12, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63,
	0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65,
	0x75, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65,
	0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x19, 0x6d, 0x61, 0x78,
	0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73,
	0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
	0x67, 0x79, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xdb, 0x03, 0x0a, 0x0f, 0x4d, 0x6f,
	0x64, 0x65, 0x6c, 0x45, 0x6e, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x36, 0x0a,
	0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x45, 0x6e, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x65, 0x70, 0x52,
	0x04, 0x73, 0x74, 0x65, 0x70, 0x1a, 0x8f, 0x03, 0x0a, 0x04, 0x53, 0x74, 0x65, 0x70, 0x12, 0x1d,
	0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a,
	0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x45, 0x6e, 0x73, 0x65, 0x6d, 0x62,
	0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x65, 0x70, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x4d,
	0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4d, 0x61,
	0x70, 0x12, 0x50, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18,
	0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x45, 0x6e, 0x73, 0x65, 0x6d, 0x62,
	0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x65, 0x70, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x4d, 0x61, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x6f,
	0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x3b, 0x0a, 0x0d,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x4f, 0x75, 0x74,
	0x70, 0x75, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x33, 0x0a, 0x0e, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc3, 0x03, 0x0a,
	0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x57, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12,
	0x3d, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x25, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
	0x6f, 0x64, 0x65, 0x6c, 0x57, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x14,
	0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xcf, 0x01, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x33,
	0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31,
	0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x69, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x03, 0x52, 0x04, 0x64, 0x69, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x09, 0x7a, 0x65, 0x72, 0x6f, 0x5f,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x7a, 0x65,
	0x72, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d,
	0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x72,
	0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x6e, 0x70,
	0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x46,
	0x69, 0x6c, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74,
	0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x5a, 0x0a, 0x0b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e,
	0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x57, 0x61, 0x72, 0x6d, 0x75,
	0x70, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0x41, 0x0a, 0x0f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x70, 0x5f, 0x6c, 0x69, 0x62, 0x72,
	0x61, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x11, 0x6f, 0x70, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x46, 0x69, 0x6c,
	0x65, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x36, 0x0a, 0x16, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x72,
	0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
	0x1c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x6f, 0x75, 0x70, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x64, 0x65, 0x63, 0x6f, 0x75, 0x70, 0x6c, 0x65, 0x64, 0x22, 0x92, 0x02,
	0x0a, 0x15, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72,
	0x79, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65,
	0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f,
	0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x41, 0x67, 0x65,
	0x6e, 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xb5, 0x01, 0x0a, 0x05, 0x41,
	0x67, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61,
	0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x69,
	0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x67, 0x65, 0x6e, 0x74,
	0x73, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,
	0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
	0x65, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0x2c, 0x0a, 0x12, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
	0x22, 0xdd, 0x0d, 0x0a, 0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
	0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x47, 0x0a, 0x0e, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
	0x6c, 0x69, 0x63, 0x79, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
	0x69, 0x63, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68,
	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x61, 0x78,
	0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x69, 0x6e, 0x70,
	0x75, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x70,
	0x75, 0x74, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x75, 0x74,
	0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65,
	0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x0b,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x14, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31,
	0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x0a, 0x62, 0x61, 0x74,
	0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x62, 0x61, 0x74, 0x63, 0x68,
	0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
	0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74,
	0x63, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x0b, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4f,
	0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
	0x63, 0x79, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x4f, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x62, 0x61, 0x74, 0x63,
	0x68, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x66,
	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x44,
	0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x48, 0x00,
	0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e,
	0x67, 0x12, 0x52, 0x0a, 0x11, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x61,
	0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69,
	0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e,
	0x67, 0x48, 0x00, 0x52, 0x10, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x74,
	0x63, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x50, 0x0a, 0x13, 0x65, 0x6e, 0x73, 0x65, 0x6d, 0x62, 0x6c,
	0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x45, 0x6e, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x69, 0x6e,
	0x67, 0x48, 0x00, 0x52, 0x12, 0x65, 0x6e, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68,
	0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x47, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61,
	0x6e, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x20, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
	0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x12, 0x34, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
	0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x46, 0x69,
	0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5d, 0x0a, 0x12, 0x63, 0x63, 0x5f, 0x6d, 0x6f, 0x64,
	0x65, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x63,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x10, 0x63, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x65,
	0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f,
	0x74, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x66,
	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67,
	0x73, 0x12, 0x49, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18,
	0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x0c,
	0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x18, 0x10, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x57, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x52, 0x0b, 0x6d,
	0x6f, 0x64, 0x65, 0x6c, 0x57, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x12, 0x48, 0x0a, 0x10, 0x6d, 0x6f,
	0x64, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5e, 0x0a, 0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x74, 0x72,
	0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
	0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e,
	0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x16, 0x6d, 0x6f,
	0x64, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
	0x6c, 0x69, 0x63, 0x79, 0x12, 0x5b, 0x0a, 0x17, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65,
	0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18,
	0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69,
	0x74, 0x6f, 0x72, 0x79, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x15, 0x6d, 0x6f, 0x64, 0x65,
	0x6c, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x67, 0x65, 0x6e, 0x74,
	0x73, 0x12, 0x47, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x61,
	0x63, 0x68, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x65,
	0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x1a, 0x43, 0x0a, 0x15, 0x43, 0x63,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x3d, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b,
	0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x73,
	0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65,
	0x2a, 0xfa, 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,
	0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12,
	0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x01, 0x12, 0x0e,
	0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x38, 0x10, 0x02, 0x12, 0x0f,
	0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x03, 0x12,
	0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x04,
	0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10,
	0x05, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x38, 0x10, 0x06,
	0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x07,
	0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x08,
	0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x09,
	0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x50, 0x31, 0x36, 0x10, 0x0a, 0x12,
	0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x50, 0x33, 0x32, 0x10, 0x0b, 0x12, 0x0d,
	0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x50, 0x36, 0x34, 0x10, 0x0c, 0x12, 0x0f, 0x0a,
	0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x0d, 0x12, 0x0d,
	0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x46, 0x31, 0x36, 0x10, 0x0e, 0x42, 0x2f, 0x5a,
	0x2d, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70,
	0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x62, 0x06,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_pkg_apis_inference_v1_model_config_proto_rawDescOnce sync.Once
	file_pkg_apis_inference_v1_model_config_proto_rawDescData = file_pkg_apis_inference_v1_model_config_proto_rawDesc
)

func file_pkg_apis_inference_v1_model_config_proto_rawDescGZIP() []byte {
	file_pkg_apis_inference_v1_model_config_proto_rawDescOnce.Do(func() {
		file_pkg_apis_inference_v1_model_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_apis_inference_v1_model_config_proto_rawDescData)
	})
	return file_pkg_apis_inference_v1_model_config_proto_rawDescData
}

var file_pkg_apis_inference_v1_model_config_proto_enumTypes = make([]protoimpl.EnumInfo, 9)
var file_pkg_apis_inference_v1_model_config_proto_msgTypes = make([]protoimpl.MessageInfo, 53)
var file_pkg_apis_inference_v1_model_config_proto_goTypes = []interface{}{
	(DataType)(0),                // 0: inference.v1.DataType
	(ModelInstanceGroup_Kind)(0), // 1: inference.v1.ModelInstanceGroup.Kind
	(ModelInstanceGroup_SecondaryDevice_SecondaryDeviceKind)(0), // 2: inference.v1.ModelInstanceGroup.SecondaryDevice.SecondaryDeviceKind
	(ModelInput_Format)(0),                                    // 3: inference.v1.ModelInput.Format
	(BatchInput_Kind)(0),                                      // 4: inference.v1.BatchInput.Kind
	(BatchOutput_Kind)(0),                                     // 5: inference.v1.BatchOutput.Kind
	(ModelOptimizationPolicy_ModelPriority)(0),                // 6: inference.v1.ModelOptimizationPolicy.ModelPriority
	(ModelQueuePolicy_TimeoutAction)(0),                       // 7: inference.v1.ModelQueuePolicy.TimeoutAction
	(ModelSequenceBatching_Control_Kind)(0),                   // 8: inference.v1.ModelSequenceBatching.Control.Kind
	(*ModelRateLimiter)(nil),                                  // 9: inference.v1.ModelRateLimiter
	(*ModelInstanceGroup)(nil),                                // 10: inference.v1.ModelInstanceGroup
	(*ModelTensorReshape)(nil),                                // 11: inference.v1.ModelTensorReshape
	(*ModelInput)(nil),                                        // 12: inference.v1.ModelInput
	(*ModelOutput)(nil),                                       // 13: inference.v1.ModelOutput
	(*BatchInput)(nil),                                        // 14: inference.v1.BatchInput
	(*BatchOutput)(nil),                                       // 15: inference.v1.BatchOutput
	(*ModelVersionPolicy)(nil),                                // 16: inference.v1.ModelVersionPolicy
	(*ModelOptimizationPolicy)(nil),                           // 17: inference.v1.ModelOptimizationPolicy
	(*ModelQueuePolicy)(nil),                                  // 18: inference.v1.ModelQueuePolicy
	(*ModelDynamicBatching)(nil),                              // 19: inference.v1.ModelDynamicBatching
	(*ModelSequenceBatching)(nil),                             // 20: inference.v1.ModelSequenceBatching
	(*ModelEnsembling)(nil),                                   // 21: inference.v1.ModelEnsembling
	(*ModelParameter)(nil),                                    // 22: inference.v1.ModelParameter
	(*ModelWarmup)(nil),                                       // 23: inference.v1.ModelWarmup
	(*ModelOperations)(nil),                                   // 24: inference.v1.ModelOperations
	(*ModelTransactionPolicy)(nil),                            // 25: inference.v1.ModelTransactionPolicy
	(*ModelRepositoryAgents)(nil),                             // 26: inference.v1.ModelRepositoryAgents
	(*ModelResponseCache)(nil),                                // 27: inference.v1.ModelResponseCache
	(*ModelConfig)(nil),                                       // 28: inference.v1.ModelConfig
	(*ModelRateLimiter_Resource)(nil),                         // 29: inference.v1.ModelRateLimiter.Resource
	(*ModelInstanceGroup_SecondaryDevice)(nil),                // 30: inference.v1.ModelInstanceGroup.SecondaryDevice
	(*ModelVersionPolicy_Latest)(nil),                         // 31: inference.v1.ModelVersionPolicy.Latest
	(*ModelVersionPolicy_All)(nil),                            // 32: inference.v1.ModelVersionPolicy.All
	(*ModelVersionPolicy_Specific)(nil),                       // 33: inference.v1.ModelVersionPolicy.Specific
	(*ModelOptimizationPolicy_Graph)(nil),                     // 34: inference.v1.ModelOptimizationPolicy.Graph
	(*ModelOptimizationPolicy_Cuda)(nil),                      // 35: inference.v1.ModelOptimizationPolicy.Cuda
	(*ModelOptimizationPolicy_ExecutionAccelerators)(nil),     // 36: inference.v1.ModelOptimizationPolicy.ExecutionAccelerators
	(*ModelOptimizationPolicy_PinnedMemoryBuffer)(nil),        // 37: inference.v1.ModelOptimizationPolicy.PinnedMemoryBuffer
	(*ModelOptimizationPolicy_Cuda_GraphSpec)(nil),            // 38: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec
	(*ModelOptimizationPolicy_Cuda_GraphSpec_Shape)(nil),      // 39: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.Shape
	(*ModelOptimizationPolicy_Cuda_GraphSpec_LowerBound)(nil), // 40: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound
	nil, // 41: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.InputEntry
	nil, // 42: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound.InputEntry
	(*ModelOptimizationPolicy_ExecutionAccelerators_Accelerator)(nil), // 43: inference.v1.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator
	nil,                                   // 44: inference.v1.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator.ParametersEntry
	nil,                                   // 45: inference.v1.ModelDynamicBatching.PriorityQueuePolicyEntry
	(*ModelSequenceBatching_Control)(nil), // 46: inference.v1.ModelSequenceBatching.Control
	(*ModelSequenceBatching_ControlInput)(nil),   // 47: inference.v1.ModelSequenceBatching.ControlInput
	(*ModelSequenceBatching_InitialState)(nil),   // 48: inference.v1.ModelSequenceBatching.InitialState
	(*ModelSequenceBatching_State)(nil),          // 49: inference.v1.ModelSequenceBatching.State
	(*ModelSequenceBatching_StrategyDirect)(nil), // 50: inference.v1.ModelSequenceBatching.StrategyDirect
	(*ModelSequenceBatching_StrategyOldest)(nil), // 51: inference.v1.ModelSequenceBatching.StrategyOldest
	(*ModelEnsembling_Step)(nil),                 // 52: inference.v1.ModelEnsembling.Step
	nil,                                          // 53: inference.v1.ModelEnsembling.Step.InputMapEntry
	nil,                                          // 54: inference.v1.ModelEnsembling.Step.OutputMapEntry
	(*ModelWarmup_Input)(nil),                    // 55: inference.v1.ModelWarmup.Input
	nil,                                          // 56: inference.v1.ModelWarmup.InputsEntry
	(*ModelRepositoryAgents_Agent)(nil),          // 57: inference.v1.ModelRepositoryAgents.Agent
	nil,                                          // 58: inference.v1.ModelRepositoryAgents.Agent.ParametersEntry
	nil,                                          // 59: inference.v1.ModelConfig.CcModelFilenamesEntry
	nil,                                          // 60: inference.v1.ModelConfig.MetricTagsEntry
	nil,                                          // 61: inference.v1.ModelConfig.ParametersEntry
}
var file_pkg_apis_inference_v1_model_config_proto_depIdxs = []int32{
	29, // 0: inference.v1.ModelRateLimiter.resources:type_name -> inference.v1.ModelRateLimiter.Resource
	1,  // 1: inference.v1.ModelInstanceGroup.kind:type_name -> inference.v1.ModelInstanceGroup.Kind
	9,  // 2: inference.v1.ModelInstanceGroup.rate_limiter:type_name -> inference.v1.ModelRateLimiter
	30, // 3: inference.v1.ModelInstanceGroup.secondary_devices:type_name -> inference.v1.ModelInstanceGroup.SecondaryDevice
	0,  // 4: inference.v1.ModelInput.data_type:type_name -> inference.v1.DataType
	3,  // 5: inference.v1.ModelInput.format:type_name -> inference.v1.ModelInput.Format
	11, // 6: inference.v1.ModelInput.reshape:type_name -> inference.v1.ModelTensorReshape
	0,  // 7: inference.v1.ModelOutput.data_type:type_name -> inference.v1.DataType
	11, // 8: inference.v1.ModelOutput.reshape:type_name -> inference.v1.ModelTensorReshape
	4,  // 9: inference.v1.BatchInput.kind:type_name -> inference.v1.BatchInput.Kind
	0,  // 10: inference.v1.BatchInput.data_type:type_name -> inference.v1.DataType
	5,  // 11: inference.v1.BatchOutput.kind:type_name -> inference.v1.BatchOutput.Kind
	31, // 12: inference.v1.ModelVersionPolicy.latest:type_name -> inference.v1.ModelVersionPolicy.Latest
	32, // 13: inference.v1.ModelVersionPolicy.all:type_name -> inference.v1.ModelVersionPolicy.All
	33, // 14: inference.v1.ModelVersionPolicy.specific:type_name -> inference.v1.ModelVersionPolicy.Specific
	34, // 15: inference.v1.ModelOptimizationPolicy.graph:type_name -> inference.v1.ModelOptimizationPolicy.Graph
	6,  // 16: inference.v1.ModelOptimizationPolicy.priority:type_name -> inference.v1.ModelOptimizationPolicy.ModelPriority
	35, // 17: inference.v1.ModelOptimizationPolicy.cuda:type_name -> inference.v1.ModelOptimizationPolicy.Cuda
	36, // 18: inference.v1.ModelOptimizationPolicy.execution_accelerators:type_name -> inference.v1.ModelOptimizationPolicy.ExecutionAccelerators
	37, // 19: inference.v1.ModelOptimizationPolicy.input_pinned_memory:type_name -> inference.v1.ModelOptimizationPolicy.PinnedMemoryBuffer
	37, // 20: inference.v1.ModelOptimizationPolicy.output_pinned_memory:type_name -> inference.v1.ModelOptimizationPolicy.PinnedMemoryBuffer
	7,  // 21: inference.v1.ModelQueuePolicy.timeout_action:type_name -> inference.v1.ModelQueuePolicy.TimeoutAction
	18, // 22: inference.v1.ModelDynamicBatching.default_queue_policy:type_name -> inference.v1.ModelQueuePolicy
	45, // 23: inference.v1.ModelDynamicBatching.priority_queue_policy:type_name -> inference.v1.ModelDynamicBatching.PriorityQueuePolicyEntry
	50, // 24: inference.v1.ModelSequenceBatching.direct:type_name -> inference.v1.ModelSequenceBatching.StrategyDirect
	51, // 25: inference.v1.ModelSequenceBatching.oldest:type_name -> inference.v1.ModelSequenceBatching.StrategyOldest
	47, // 26: inference.v1.ModelSequenceBatching.control_input:type_name -> inference.v1.ModelSequenceBatching.ControlInput
	49, // 27: inference.v1.ModelSequenceBatching.state:type_name -> inference.v1.ModelSequenceBatching.State
	52, // 28: inference.v1.ModelEnsembling.step:type_name -> inference.v1.ModelEnsembling.Step
	56, // 29: inference.v1.ModelWarmup.inputs:type_name -> inference.v1.ModelWarmup.InputsEntry
	57, // 30: inference.v1.ModelRepositoryAgents.agents:type_name -> inference.v1.ModelRepositoryAgents.Agent
	16, // 31: inference.v1.ModelConfig.version_policy:type_name -> inference.v1.ModelVersionPolicy
	12, // 32: inference.v1.ModelConfig.input:type_name -> inference.v1.ModelInput
	13, // 33: inference.v1.ModelConfig.output:type_name -> inference.v1.ModelOutput
	14, // 34: inference.v1.ModelConfig.batch_input:type_name -> inference.v1.BatchInput
	15, // 35: inference.v1.ModelConfig.batch_output:type_name -> inference.v1.BatchOutput
	17, // 36: inference.v1.ModelConfig.optimization:type_name -> inference.v1.ModelOptimizationPolicy
	19, // 37: inference.v1.ModelConfig.dynamic_batching:type_name -> inference.v1.ModelDynamicBatching
	20, // 38: inference.v1.ModelConfig.sequence_batching:type_name -> inference.v1.ModelSequenceBatching
	21, // 39: inference.v1.ModelConfig.ensemble_scheduling:type_name -> inference.v1.ModelEnsembling
	10, // 40: inference.v1.ModelConfig.instance_group:type_name -> inference.v1.ModelInstanceGroup
	59, // 41: inference.v1.ModelConfig.cc_model_filenames:type_name -> inference.v1.ModelConfig.CcModelFilenamesEntry
	60, // 42: inference.v1.ModelConfig.metric_tags:type_name -> inference.v1.ModelConfig.MetricTagsEntry
	61, // 43: inference.v1.ModelConfig.parameters:type_name -> inference.v1.ModelConfig.ParametersEntry
	23, // 44: inference.v1.ModelConfig.model_warmup:type_name -> inference.v1.ModelWarmup
	24, // 45: inference.v1.ModelConfig.model_operations:type_name -> inference.v1.ModelOperations
	25, // 46: inference.v1.ModelConfig.model_transaction_policy:type_name -> inference.v1.ModelTransactionPolicy
	26, // 47: inference.v1.ModelConfig.model_repository_agents:type_name -> inference.v1.ModelRepositoryAgents
	27, // 48: inference.v1.ModelConfig.response_cache:type_name -> inference.v1.ModelResponseCache
	2,  // 49: inference.v1.ModelInstanceGroup.SecondaryDevice.kind:type_name -> inference.v1.ModelInstanceGroup.SecondaryDevice.SecondaryDeviceKind
	38, // 50: inference.v1.ModelOptimizationPolicy.Cuda.graph_spec:type_name -> inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec
	43, // 51: inference.v1.ModelOptimizationPolicy.ExecutionAccelerators.gpu_execution_accelerator:type_name -> inference.v1.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator
	43, // 52: inference.v1.ModelOptimizationPolicy.ExecutionAccelerators.cpu_execution_accelerator:type_name -> inference.v1.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator
	41, // 53: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.input:type_name -> inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.InputEntry
	40, // 54: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.graph_lower_bound:type_name -> inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound
	42, // 55: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound.input:type_name -> inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound.InputEntry
	39, // 56: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.InputEntry.value:type_name -> inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.Shape
	39, // 57: inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound.InputEntry.value:type_name -> inference.v1.ModelOptimizationPolicy.Cuda.GraphSpec.Shape
	44, // 58: inference.v1.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator.parameters:type_name -> inference.v1.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator.ParametersEntry
	18, // 59: inference.v1.ModelDynamicBatching.PriorityQueuePolicyEntry.value:type_name -> inference.v1.ModelQueuePolicy
	8,  // 60: inference.v1.ModelSequenceBatching.Control.kind:type_name -> inference.v1.ModelSequenceBatching.Control.Kind
	0,  // 61: inference.v1.ModelSequenceBatching.Control.data_type:type_name -> inference.v1.DataType
	46, // 62: inference.v1.ModelSequenceBatching.ControlInput.control:type_name -> inference.v1.ModelSequenceBatching.Control
	0,  // 63: inference.v1.ModelSequenceBatching.InitialState.data_type:type_name -> inference.v1.DataType
	0,  // 64: inference.v1.ModelSequenceBatching.State.data_type:type_name -> inference.v1.DataType
	48, // 65: inference.v1.ModelSequenceBatching.State.initial_state:type_name -> inference.v1.ModelSequenceBatching.InitialState
	53, // 66: inference.v1.ModelEnsembling.Step.input_map:type_name -> inference.v1.ModelEnsembling.Step.InputMapEntry
	54, // 67: inference.v1.ModelEnsembling.Step.output_map:type_name -> inference.v1.ModelEnsembling.Step.OutputMapEntry
	0,  // 68: inference.v1.ModelWarmup.Input.data_type:type_name -> inference.v1.DataType
	55, // 69: inference.v1.ModelWarmup.InputsEntry.value:type_name -> inference.v1.ModelWarmup.Input
	58, // 70: inference.v1.ModelRepositoryAgents.Agent.parameters:type_name -> inference.v1.ModelRepositoryAgents.Agent.ParametersEntry
	22, // 71: inference.v1.ModelConfig.ParametersEntry.value:type_name -> inference.v1.ModelParameter
	72, // [72:72] is the sub-list for method output_type
	72, // [72:72] is the sub-list for method input_type
	72, // [72:72] is the sub-list for extension type_name
	72, // [72:72] is the sub-list for extension extendee
	0,  // [0:72] is the sub-list for field type_name
}

func init() { file_pkg_apis_inference_v1_model_config_proto_init() }
func file_pkg_apis_inference_v1_model_config_proto_init() {
	if File_pkg_apis_inference_v1_model_config_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelRateLimiter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelInstanceGroup); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelTensorReshape); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelInput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOutput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BatchInput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BatchOutput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelVersionPolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelQueuePolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelDynamicBatching); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelSequenceBatching); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelEnsembling); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelParameter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelWarmup); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOperations); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelTransactionPolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelRepositoryAgents); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelResponseCache); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelRateLimiter_Resource); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelInstanceGroup_SecondaryDevice); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelVersionPolicy_Latest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelVersionPolicy_All); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelVersionPolicy_Specific); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy_Graph); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy_Cuda); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy_ExecutionAccelerators); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy_PinnedMemoryBuffer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy_Cuda_GraphSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy_Cuda_GraphSpec_Shape); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy_Cuda_GraphSpec_LowerBound); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelOptimizationPolicy_ExecutionAccelerators_Accelerator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelSequenceBatching_Control); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelSequenceBatching_ControlInput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelSequenceBatching_InitialState); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelSequenceBatching_State); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelSequenceBatching_StrategyDirect); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelSequenceBatching_StrategyOldest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelEnsembling_Step); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelWarmup_Input); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_pkg_apis_inference_v1_model_config_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ModelRepositoryAgents_Agent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_pkg_apis_inference_v1_model_config_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*ModelVersionPolicy_Latest_)(nil),
		(*ModelVersionPolicy_All_)(nil),
		(*ModelVersionPolicy_Specific_)(nil),
	}
	file_pkg_apis_inference_v1_model_config_proto_msgTypes[11].OneofWrappers = []interface{}{
		(*ModelSequenceBatching_Direct)(nil),
		(*ModelSequenceBatching_Oldest)(nil),
	}
	file_pkg_apis_inference_v1_model_config_proto_msgTypes[19].OneofWrappers = []interface{}{
		(*ModelConfig_DynamicBatching)(nil),
		(*ModelConfig_SequenceBatching)(nil),
		(*ModelConfig_EnsembleScheduling)(nil),
	}
	file_pkg_apis_inference_v1_model_config_proto_msgTypes[39].OneofWrappers = []interface{}{
		(*ModelSequenceBatching_InitialState_ZeroData)(nil),
		(*ModelSequenceBatching_InitialState_DataFile)(nil),
	}
	file_pkg_apis_inference_v1_model_config_proto_msgTypes[46].OneofWrappers = []interface{}{
		(*ModelWarmup_Input_ZeroData)(nil),
		(*ModelWarmup_Input_RandomData)(nil),
		(*ModelWarmup_Input_InputDataFile)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_pkg_apis_inference_v1_model_config_proto_rawDesc,
			NumEnums:      9,
			NumMessages:   53,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_pkg_apis_inference_v1_model_config_proto_goTypes,
		DependencyIndexes: file_pkg_apis_inference_v1_model_config_proto_depIdxs,
		EnumInfos:         file_pkg_apis_inference_v1_model_config_proto_enumTypes,
		MessageInfos:      file_pkg_apis_inference_v1_model_config_proto_msgTypes,
	}.Build()
	File_pkg_apis_inference_v1_model_config_proto = out.File
	file_pkg_apis_inference_v1_model_config_proto_rawDesc = nil
	file_pkg_apis_inference_v1_model_config_proto_goTypes = nil
	file_pkg_apis_inference_v1_model_config_proto_depIdxs = nil
}
