// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.1
// 	protoc        v3.21.12
// source: easyrec_predict.proto

package easyrec

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)
)

type ArrayDataType int32

const (
	// Not a legal value for DataType. Used to indicate a DataType field
	// has not been set.
	ArrayDataType_DT_INVALID ArrayDataType = 0
	// Data types that all computation devices are expected to be
	// capable to support.
	ArrayDataType_DT_FLOAT      ArrayDataType = 1
	ArrayDataType_DT_DOUBLE     ArrayDataType = 2
	ArrayDataType_DT_INT32      ArrayDataType = 3
	ArrayDataType_DT_UINT8      ArrayDataType = 4
	ArrayDataType_DT_INT16      ArrayDataType = 5
	ArrayDataType_DT_INT8       ArrayDataType = 6
	ArrayDataType_DT_STRING     ArrayDataType = 7
	ArrayDataType_DT_COMPLEX64  ArrayDataType = 8 // Single-precision complex
	ArrayDataType_DT_INT64      ArrayDataType = 9
	ArrayDataType_DT_BOOL       ArrayDataType = 10
	ArrayDataType_DT_QINT8      ArrayDataType = 11 // Quantized int8
	ArrayDataType_DT_QUINT8     ArrayDataType = 12 // Quantized uint8
	ArrayDataType_DT_QINT32     ArrayDataType = 13 // Quantized int32
	ArrayDataType_DT_BFLOAT16   ArrayDataType = 14 // Float32 truncated to 16 bits.  Only for cast ops.
	ArrayDataType_DT_QINT16     ArrayDataType = 15 // Quantized int16
	ArrayDataType_DT_QUINT16    ArrayDataType = 16 // Quantized uint16
	ArrayDataType_DT_UINT16     ArrayDataType = 17
	ArrayDataType_DT_COMPLEX128 ArrayDataType = 18 // Double-precision complex
	ArrayDataType_DT_HALF       ArrayDataType = 19
	ArrayDataType_DT_RESOURCE   ArrayDataType = 20
	ArrayDataType_DT_VARIANT    ArrayDataType = 21 // Arbitrary C++ data types
)

// Enum value maps for ArrayDataType.
var (
	ArrayDataType_name = map[int32]string{
		0:  "DT_INVALID",
		1:  "DT_FLOAT",
		2:  "DT_DOUBLE",
		3:  "DT_INT32",
		4:  "DT_UINT8",
		5:  "DT_INT16",
		6:  "DT_INT8",
		7:  "DT_STRING",
		8:  "DT_COMPLEX64",
		9:  "DT_INT64",
		10: "DT_BOOL",
		11: "DT_QINT8",
		12: "DT_QUINT8",
		13: "DT_QINT32",
		14: "DT_BFLOAT16",
		15: "DT_QINT16",
		16: "DT_QUINT16",
		17: "DT_UINT16",
		18: "DT_COMPLEX128",
		19: "DT_HALF",
		20: "DT_RESOURCE",
		21: "DT_VARIANT",
	}
	ArrayDataType_value = map[string]int32{
		"DT_INVALID":    0,
		"DT_FLOAT":      1,
		"DT_DOUBLE":     2,
		"DT_INT32":      3,
		"DT_UINT8":      4,
		"DT_INT16":      5,
		"DT_INT8":       6,
		"DT_STRING":     7,
		"DT_COMPLEX64":  8,
		"DT_INT64":      9,
		"DT_BOOL":       10,
		"DT_QINT8":      11,
		"DT_QUINT8":     12,
		"DT_QINT32":     13,
		"DT_BFLOAT16":   14,
		"DT_QINT16":     15,
		"DT_QUINT16":    16,
		"DT_UINT16":     17,
		"DT_COMPLEX128": 18,
		"DT_HALF":       19,
		"DT_RESOURCE":   20,
		"DT_VARIANT":    21,
	}
)

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

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

func (ArrayDataType) Descriptor() protoreflect.EnumDescriptor {
	return file_easyrec_predict_proto_enumTypes[0].Descriptor()
}

func (ArrayDataType) Type() protoreflect.EnumType {
	return &file_easyrec_predict_proto_enumTypes[0]
}

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

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

type StatusCode int32

const (
	StatusCode_OK          StatusCode = 0
	StatusCode_INPUT_EMPTY StatusCode = 1
	StatusCode_EXCEPTION   StatusCode = 2
)

// Enum value maps for StatusCode.
var (
	StatusCode_name = map[int32]string{
		0: "OK",
		1: "INPUT_EMPTY",
		2: "EXCEPTION",
	}
	StatusCode_value = map[string]int32{
		"OK":          0,
		"INPUT_EMPTY": 1,
		"EXCEPTION":   2,
	}
)

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

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

func (StatusCode) Descriptor() protoreflect.EnumDescriptor {
	return file_easyrec_predict_proto_enumTypes[1].Descriptor()
}

func (StatusCode) Type() protoreflect.EnumType {
	return &file_easyrec_predict_proto_enumTypes[1]
}

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

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

// Dimensions of an array
type ArrayShape struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Dim []int64 `protobuf:"varint,1,rep,packed,name=dim,proto3" json:"dim,omitempty"`
}

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

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

func (*ArrayShape) ProtoMessage() {}

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

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

// Protocol buffer representing an array
type ArrayProto struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Data Type.
	Dtype ArrayDataType `protobuf:"varint,1,opt,name=dtype,proto3,enum=easyrec.ArrayDataType" json:"dtype,omitempty"`
	// Shape of the array.
	ArrayShape *ArrayShape `protobuf:"bytes,2,opt,name=array_shape,json=arrayShape,proto3" json:"array_shape,omitempty"`
	// DT_FLOAT.
	FloatVal []float32 `protobuf:"fixed32,3,rep,packed,name=float_val,json=floatVal,proto3" json:"float_val,omitempty"`
	// DT_DOUBLE.
	DoubleVal []float64 `protobuf:"fixed64,4,rep,packed,name=double_val,json=doubleVal,proto3" json:"double_val,omitempty"`
	// DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
	IntVal []int32 `protobuf:"varint,5,rep,packed,name=int_val,json=intVal,proto3" json:"int_val,omitempty"`
	// DT_STRING.
	StringVal [][]byte `protobuf:"bytes,6,rep,name=string_val,json=stringVal,proto3" json:"string_val,omitempty"`
	// DT_INT64.
	Int64Val []int64 `protobuf:"varint,7,rep,packed,name=int64_val,json=int64Val,proto3" json:"int64_val,omitempty"`
	// DT_BOOL.
	BoolVal []bool `protobuf:"varint,8,rep,packed,name=bool_val,json=boolVal,proto3" json:"bool_val,omitempty"`
}

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

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

func (*ArrayProto) ProtoMessage() {}

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

func (x *ArrayProto) GetDtype() ArrayDataType {
	if x != nil {
		return x.Dtype
	}
	return ArrayDataType_DT_INVALID
}

func (x *ArrayProto) GetArrayShape() *ArrayShape {
	if x != nil {
		return x.ArrayShape
	}
	return nil
}

func (x *ArrayProto) GetFloatVal() []float32 {
	if x != nil {
		return x.FloatVal
	}
	return nil
}

func (x *ArrayProto) GetDoubleVal() []float64 {
	if x != nil {
		return x.DoubleVal
	}
	return nil
}

func (x *ArrayProto) GetIntVal() []int32 {
	if x != nil {
		return x.IntVal
	}
	return nil
}

func (x *ArrayProto) GetStringVal() [][]byte {
	if x != nil {
		return x.StringVal
	}
	return nil
}

func (x *ArrayProto) GetInt64Val() []int64 {
	if x != nil {
		return x.Int64Val
	}
	return nil
}

func (x *ArrayProto) GetBoolVal() []bool {
	if x != nil {
		return x.BoolVal
	}
	return nil
}

// context features
type ContextFeatures struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Features []*PBFeature `protobuf:"bytes,1,rep,name=features,proto3" json:"features,omitempty"`
}

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

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

func (*ContextFeatures) ProtoMessage() {}

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

func (x *ContextFeatures) GetFeatures() []*PBFeature {
	if x != nil {
		return x.Features
	}
	return nil
}

// long->others
type LongStringMap struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MapField map[int64]string `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*LongStringMap) ProtoMessage() {}

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

func (x *LongStringMap) GetMapField() map[int64]string {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[int64]int32 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*LongIntMap) ProtoMessage() {}

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

func (x *LongIntMap) GetMapField() map[int64]int32 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[int64]int64 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*LongLongMap) ProtoMessage() {}

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

func (x *LongLongMap) GetMapField() map[int64]int64 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[int64]float32 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
}

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

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

func (*LongFloatMap) ProtoMessage() {}

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

func (x *LongFloatMap) GetMapField() map[int64]float32 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[int64]float64 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
}

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

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

func (*LongDoubleMap) ProtoMessage() {}

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

func (x *LongDoubleMap) GetMapField() map[int64]float64 {
	if x != nil {
		return x.MapField
	}
	return nil
}

// string->others
type StringStringMap struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MapField map[string]string `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*StringStringMap) ProtoMessage() {}

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

func (x *StringStringMap) GetMapField() map[string]string {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[string]int32 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*StringIntMap) ProtoMessage() {}

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

func (x *StringIntMap) GetMapField() map[string]int32 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[string]int64 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*StringLongMap) ProtoMessage() {}

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

func (x *StringLongMap) GetMapField() map[string]int64 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[string]float32 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
}

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

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

func (*StringFloatMap) ProtoMessage() {}

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

func (x *StringFloatMap) GetMapField() map[string]float32 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[string]float64 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
}

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

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

func (*StringDoubleMap) ProtoMessage() {}

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

func (x *StringDoubleMap) GetMapField() map[string]float64 {
	if x != nil {
		return x.MapField
	}
	return nil
}

// int32->others
type IntStringMap struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MapField map[int32]string `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*IntStringMap) ProtoMessage() {}

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

func (x *IntStringMap) GetMapField() map[int32]string {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[int32]int32 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*IntIntMap) ProtoMessage() {}

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

func (x *IntIntMap) GetMapField() map[int32]int32 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[int32]int64 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*IntLongMap) ProtoMessage() {}

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

func (x *IntLongMap) GetMapField() map[int32]int64 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[int32]float32 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
}

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

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

func (*IntFloatMap) ProtoMessage() {}

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

func (x *IntFloatMap) GetMapField() map[int32]float32 {
	if x != nil {
		return x.MapField
	}
	return nil
}

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

	MapField map[int32]float64 `protobuf:"bytes,1,rep,name=map_field,json=mapField,proto3" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
}

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

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

func (*IntDoubleMap) ProtoMessage() {}

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

func (x *IntDoubleMap) GetMapField() map[int32]float64 {
	if x != nil {
		return x.MapField
	}
	return nil
}

// list
type IntList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Features []int32 `protobuf:"varint,1,rep,packed,name=features,proto3" json:"features,omitempty"`
}

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

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

func (*IntList) ProtoMessage() {}

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

func (x *IntList) GetFeatures() []int32 {
	if x != nil {
		return x.Features
	}
	return nil
}

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

	Features []int64 `protobuf:"varint,1,rep,packed,name=features,proto3" json:"features,omitempty"`
}

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

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

func (*LongList) ProtoMessage() {}

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

func (x *LongList) GetFeatures() []int64 {
	if x != nil {
		return x.Features
	}
	return nil
}

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

	Features []float32 `protobuf:"fixed32,1,rep,packed,name=features,proto3" json:"features,omitempty"`
}

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

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

func (*FloatList) ProtoMessage() {}

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

func (x *FloatList) GetFeatures() []float32 {
	if x != nil {
		return x.Features
	}
	return nil
}

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

	Features []float64 `protobuf:"fixed64,1,rep,packed,name=features,proto3" json:"features,omitempty"`
}

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

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

func (*DoubleList) ProtoMessage() {}

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

func (x *DoubleList) GetFeatures() []float64 {
	if x != nil {
		return x.Features
	}
	return nil
}

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

	Features []string `protobuf:"bytes,1,rep,name=features,proto3" json:"features,omitempty"`
}

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

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

func (*StringList) ProtoMessage() {}

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

func (x *StringList) GetFeatures() []string {
	if x != nil {
		return x.Features
	}
	return nil
}

// lists
type IntLists struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Lists []*IntList `protobuf:"bytes,1,rep,name=lists,proto3" json:"lists,omitempty"`
}

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

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

func (*IntLists) ProtoMessage() {}

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

func (x *IntLists) GetLists() []*IntList {
	if x != nil {
		return x.Lists
	}
	return nil
}

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

	Lists []*LongList `protobuf:"bytes,1,rep,name=lists,proto3" json:"lists,omitempty"`
}

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

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

func (*LongLists) ProtoMessage() {}

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

func (x *LongLists) GetLists() []*LongList {
	if x != nil {
		return x.Lists
	}
	return nil
}

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

	Lists []*FloatList `protobuf:"bytes,1,rep,name=lists,proto3" json:"lists,omitempty"`
}

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

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

func (*FloatLists) ProtoMessage() {}

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

func (x *FloatLists) GetLists() []*FloatList {
	if x != nil {
		return x.Lists
	}
	return nil
}

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

	Lists []*DoubleList `protobuf:"bytes,1,rep,name=lists,proto3" json:"lists,omitempty"`
}

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

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

func (*DoubleLists) ProtoMessage() {}

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

func (x *DoubleLists) GetLists() []*DoubleList {
	if x != nil {
		return x.Lists
	}
	return nil
}

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

	Lists []*StringList `protobuf:"bytes,1,rep,name=lists,proto3" json:"lists,omitempty"`
}

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

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

func (*StringLists) ProtoMessage() {}

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

func (x *StringLists) GetLists() []*StringList {
	if x != nil {
		return x.Lists
	}
	return nil
}

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

	// Types that are assignable to Value:
	//
	//	*PBFeature_IntFeature
	//	*PBFeature_LongFeature
	//	*PBFeature_StringFeature
	//	*PBFeature_FloatFeature
	//	*PBFeature_DoubleFeature
	//	*PBFeature_LongStringMap
	//	*PBFeature_LongIntMap
	//	*PBFeature_LongLongMap
	//	*PBFeature_LongFloatMap
	//	*PBFeature_LongDoubleMap
	//	*PBFeature_StringStringMap
	//	*PBFeature_StringIntMap
	//	*PBFeature_StringLongMap
	//	*PBFeature_StringFloatMap
	//	*PBFeature_StringDoubleMap
	//	*PBFeature_IntStringMap
	//	*PBFeature_IntIntMap
	//	*PBFeature_IntLongMap
	//	*PBFeature_IntFloatMap
	//	*PBFeature_IntDoubleMap
	//	*PBFeature_IntList
	//	*PBFeature_LongList
	//	*PBFeature_StringList
	//	*PBFeature_FloatList
	//	*PBFeature_DoubleList
	//	*PBFeature_IntLists
	//	*PBFeature_LongLists
	//	*PBFeature_StringLists
	//	*PBFeature_FloatLists
	//	*PBFeature_DoubleLists
	Value isPBFeature_Value `protobuf_oneof:"value"`
}

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

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

func (*PBFeature) ProtoMessage() {}

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

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

func (x *PBFeature) GetIntFeature() int32 {
	if x, ok := x.GetValue().(*PBFeature_IntFeature); ok {
		return x.IntFeature
	}
	return 0
}

func (x *PBFeature) GetLongFeature() int64 {
	if x, ok := x.GetValue().(*PBFeature_LongFeature); ok {
		return x.LongFeature
	}
	return 0
}

func (x *PBFeature) GetStringFeature() string {
	if x, ok := x.GetValue().(*PBFeature_StringFeature); ok {
		return x.StringFeature
	}
	return ""
}

func (x *PBFeature) GetFloatFeature() float32 {
	if x, ok := x.GetValue().(*PBFeature_FloatFeature); ok {
		return x.FloatFeature
	}
	return 0
}

func (x *PBFeature) GetDoubleFeature() float64 {
	if x, ok := x.GetValue().(*PBFeature_DoubleFeature); ok {
		return x.DoubleFeature
	}
	return 0
}

func (x *PBFeature) GetLongStringMap() *LongStringMap {
	if x, ok := x.GetValue().(*PBFeature_LongStringMap); ok {
		return x.LongStringMap
	}
	return nil
}

func (x *PBFeature) GetLongIntMap() *LongIntMap {
	if x, ok := x.GetValue().(*PBFeature_LongIntMap); ok {
		return x.LongIntMap
	}
	return nil
}

func (x *PBFeature) GetLongLongMap() *LongLongMap {
	if x, ok := x.GetValue().(*PBFeature_LongLongMap); ok {
		return x.LongLongMap
	}
	return nil
}

func (x *PBFeature) GetLongFloatMap() *LongFloatMap {
	if x, ok := x.GetValue().(*PBFeature_LongFloatMap); ok {
		return x.LongFloatMap
	}
	return nil
}

func (x *PBFeature) GetLongDoubleMap() *LongDoubleMap {
	if x, ok := x.GetValue().(*PBFeature_LongDoubleMap); ok {
		return x.LongDoubleMap
	}
	return nil
}

func (x *PBFeature) GetStringStringMap() *StringStringMap {
	if x, ok := x.GetValue().(*PBFeature_StringStringMap); ok {
		return x.StringStringMap
	}
	return nil
}

func (x *PBFeature) GetStringIntMap() *StringIntMap {
	if x, ok := x.GetValue().(*PBFeature_StringIntMap); ok {
		return x.StringIntMap
	}
	return nil
}

func (x *PBFeature) GetStringLongMap() *StringLongMap {
	if x, ok := x.GetValue().(*PBFeature_StringLongMap); ok {
		return x.StringLongMap
	}
	return nil
}

func (x *PBFeature) GetStringFloatMap() *StringFloatMap {
	if x, ok := x.GetValue().(*PBFeature_StringFloatMap); ok {
		return x.StringFloatMap
	}
	return nil
}

func (x *PBFeature) GetStringDoubleMap() *StringDoubleMap {
	if x, ok := x.GetValue().(*PBFeature_StringDoubleMap); ok {
		return x.StringDoubleMap
	}
	return nil
}

func (x *PBFeature) GetIntStringMap() *IntStringMap {
	if x, ok := x.GetValue().(*PBFeature_IntStringMap); ok {
		return x.IntStringMap
	}
	return nil
}

func (x *PBFeature) GetIntIntMap() *IntIntMap {
	if x, ok := x.GetValue().(*PBFeature_IntIntMap); ok {
		return x.IntIntMap
	}
	return nil
}

func (x *PBFeature) GetIntLongMap() *IntLongMap {
	if x, ok := x.GetValue().(*PBFeature_IntLongMap); ok {
		return x.IntLongMap
	}
	return nil
}

func (x *PBFeature) GetIntFloatMap() *IntFloatMap {
	if x, ok := x.GetValue().(*PBFeature_IntFloatMap); ok {
		return x.IntFloatMap
	}
	return nil
}

func (x *PBFeature) GetIntDoubleMap() *IntDoubleMap {
	if x, ok := x.GetValue().(*PBFeature_IntDoubleMap); ok {
		return x.IntDoubleMap
	}
	return nil
}

func (x *PBFeature) GetIntList() *IntList {
	if x, ok := x.GetValue().(*PBFeature_IntList); ok {
		return x.IntList
	}
	return nil
}

func (x *PBFeature) GetLongList() *LongList {
	if x, ok := x.GetValue().(*PBFeature_LongList); ok {
		return x.LongList
	}
	return nil
}

func (x *PBFeature) GetStringList() *StringList {
	if x, ok := x.GetValue().(*PBFeature_StringList); ok {
		return x.StringList
	}
	return nil
}

func (x *PBFeature) GetFloatList() *FloatList {
	if x, ok := x.GetValue().(*PBFeature_FloatList); ok {
		return x.FloatList
	}
	return nil
}

func (x *PBFeature) GetDoubleList() *DoubleList {
	if x, ok := x.GetValue().(*PBFeature_DoubleList); ok {
		return x.DoubleList
	}
	return nil
}

func (x *PBFeature) GetIntLists() *IntLists {
	if x, ok := x.GetValue().(*PBFeature_IntLists); ok {
		return x.IntLists
	}
	return nil
}

func (x *PBFeature) GetLongLists() *LongLists {
	if x, ok := x.GetValue().(*PBFeature_LongLists); ok {
		return x.LongLists
	}
	return nil
}

func (x *PBFeature) GetStringLists() *StringLists {
	if x, ok := x.GetValue().(*PBFeature_StringLists); ok {
		return x.StringLists
	}
	return nil
}

func (x *PBFeature) GetFloatLists() *FloatLists {
	if x, ok := x.GetValue().(*PBFeature_FloatLists); ok {
		return x.FloatLists
	}
	return nil
}

func (x *PBFeature) GetDoubleLists() *DoubleLists {
	if x, ok := x.GetValue().(*PBFeature_DoubleLists); ok {
		return x.DoubleLists
	}
	return nil
}

type isPBFeature_Value interface {
	isPBFeature_Value()
}

type PBFeature_IntFeature struct {
	IntFeature int32 `protobuf:"varint,1,opt,name=int_feature,json=intFeature,proto3,oneof"`
}

type PBFeature_LongFeature struct {
	LongFeature int64 `protobuf:"varint,2,opt,name=long_feature,json=longFeature,proto3,oneof"`
}

type PBFeature_StringFeature struct {
	StringFeature string `protobuf:"bytes,3,opt,name=string_feature,json=stringFeature,proto3,oneof"`
}

type PBFeature_FloatFeature struct {
	FloatFeature float32 `protobuf:"fixed32,4,opt,name=float_feature,json=floatFeature,proto3,oneof"`
}

type PBFeature_DoubleFeature struct {
	DoubleFeature float64 `protobuf:"fixed64,5,opt,name=double_feature,json=doubleFeature,proto3,oneof"`
}

type PBFeature_LongStringMap struct {
	LongStringMap *LongStringMap `protobuf:"bytes,6,opt,name=long_string_map,json=longStringMap,proto3,oneof"`
}

type PBFeature_LongIntMap struct {
	LongIntMap *LongIntMap `protobuf:"bytes,7,opt,name=long_int_map,json=longIntMap,proto3,oneof"`
}

type PBFeature_LongLongMap struct {
	LongLongMap *LongLongMap `protobuf:"bytes,8,opt,name=long_long_map,json=longLongMap,proto3,oneof"`
}

type PBFeature_LongFloatMap struct {
	LongFloatMap *LongFloatMap `protobuf:"bytes,9,opt,name=long_float_map,json=longFloatMap,proto3,oneof"`
}

type PBFeature_LongDoubleMap struct {
	LongDoubleMap *LongDoubleMap `protobuf:"bytes,10,opt,name=long_double_map,json=longDoubleMap,proto3,oneof"`
}

type PBFeature_StringStringMap struct {
	StringStringMap *StringStringMap `protobuf:"bytes,11,opt,name=string_string_map,json=stringStringMap,proto3,oneof"`
}

type PBFeature_StringIntMap struct {
	StringIntMap *StringIntMap `protobuf:"bytes,12,opt,name=string_int_map,json=stringIntMap,proto3,oneof"`
}

type PBFeature_StringLongMap struct {
	StringLongMap *StringLongMap `protobuf:"bytes,13,opt,name=string_long_map,json=stringLongMap,proto3,oneof"`
}

type PBFeature_StringFloatMap struct {
	StringFloatMap *StringFloatMap `protobuf:"bytes,14,opt,name=string_float_map,json=stringFloatMap,proto3,oneof"`
}

type PBFeature_StringDoubleMap struct {
	StringDoubleMap *StringDoubleMap `protobuf:"bytes,15,opt,name=string_double_map,json=stringDoubleMap,proto3,oneof"`
}

type PBFeature_IntStringMap struct {
	IntStringMap *IntStringMap `protobuf:"bytes,16,opt,name=int_string_map,json=intStringMap,proto3,oneof"`
}

type PBFeature_IntIntMap struct {
	IntIntMap *IntIntMap `protobuf:"bytes,17,opt,name=int_int_map,json=intIntMap,proto3,oneof"`
}

type PBFeature_IntLongMap struct {
	IntLongMap *IntLongMap `protobuf:"bytes,18,opt,name=int_long_map,json=intLongMap,proto3,oneof"`
}

type PBFeature_IntFloatMap struct {
	IntFloatMap *IntFloatMap `protobuf:"bytes,19,opt,name=int_float_map,json=intFloatMap,proto3,oneof"`
}

type PBFeature_IntDoubleMap struct {
	IntDoubleMap *IntDoubleMap `protobuf:"bytes,20,opt,name=int_double_map,json=intDoubleMap,proto3,oneof"`
}

type PBFeature_IntList struct {
	IntList *IntList `protobuf:"bytes,21,opt,name=int_list,json=intList,proto3,oneof"`
}

type PBFeature_LongList struct {
	LongList *LongList `protobuf:"bytes,22,opt,name=long_list,json=longList,proto3,oneof"`
}

type PBFeature_StringList struct {
	StringList *StringList `protobuf:"bytes,23,opt,name=string_list,json=stringList,proto3,oneof"`
}

type PBFeature_FloatList struct {
	FloatList *FloatList `protobuf:"bytes,24,opt,name=float_list,json=floatList,proto3,oneof"`
}

type PBFeature_DoubleList struct {
	DoubleList *DoubleList `protobuf:"bytes,25,opt,name=double_list,json=doubleList,proto3,oneof"`
}

type PBFeature_IntLists struct {
	IntLists *IntLists `protobuf:"bytes,26,opt,name=int_lists,json=intLists,proto3,oneof"`
}

type PBFeature_LongLists struct {
	LongLists *LongLists `protobuf:"bytes,27,opt,name=long_lists,json=longLists,proto3,oneof"`
}

type PBFeature_StringLists struct {
	StringLists *StringLists `protobuf:"bytes,28,opt,name=string_lists,json=stringLists,proto3,oneof"`
}

type PBFeature_FloatLists struct {
	FloatLists *FloatLists `protobuf:"bytes,29,opt,name=float_lists,json=floatLists,proto3,oneof"`
}

type PBFeature_DoubleLists struct {
	DoubleLists *DoubleLists `protobuf:"bytes,30,opt,name=double_lists,json=doubleLists,proto3,oneof"`
}

func (*PBFeature_IntFeature) isPBFeature_Value() {}

func (*PBFeature_LongFeature) isPBFeature_Value() {}

func (*PBFeature_StringFeature) isPBFeature_Value() {}

func (*PBFeature_FloatFeature) isPBFeature_Value() {}

func (*PBFeature_DoubleFeature) isPBFeature_Value() {}

func (*PBFeature_LongStringMap) isPBFeature_Value() {}

func (*PBFeature_LongIntMap) isPBFeature_Value() {}

func (*PBFeature_LongLongMap) isPBFeature_Value() {}

func (*PBFeature_LongFloatMap) isPBFeature_Value() {}

func (*PBFeature_LongDoubleMap) isPBFeature_Value() {}

func (*PBFeature_StringStringMap) isPBFeature_Value() {}

func (*PBFeature_StringIntMap) isPBFeature_Value() {}

func (*PBFeature_StringLongMap) isPBFeature_Value() {}

func (*PBFeature_StringFloatMap) isPBFeature_Value() {}

func (*PBFeature_StringDoubleMap) isPBFeature_Value() {}

func (*PBFeature_IntStringMap) isPBFeature_Value() {}

func (*PBFeature_IntIntMap) isPBFeature_Value() {}

func (*PBFeature_IntLongMap) isPBFeature_Value() {}

func (*PBFeature_IntFloatMap) isPBFeature_Value() {}

func (*PBFeature_IntDoubleMap) isPBFeature_Value() {}

func (*PBFeature_IntList) isPBFeature_Value() {}

func (*PBFeature_LongList) isPBFeature_Value() {}

func (*PBFeature_StringList) isPBFeature_Value() {}

func (*PBFeature_FloatList) isPBFeature_Value() {}

func (*PBFeature_DoubleList) isPBFeature_Value() {}

func (*PBFeature_IntLists) isPBFeature_Value() {}

func (*PBFeature_LongLists) isPBFeature_Value() {}

func (*PBFeature_StringLists) isPBFeature_Value() {}

func (*PBFeature_FloatLists) isPBFeature_Value() {}

func (*PBFeature_DoubleLists) isPBFeature_Value() {}

// PBRequest specifies the request for aggregator
type PBRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// debug mode
	DebugLevel int32 `protobuf:"varint,1,opt,name=debug_level,json=debugLevel,proto3" json:"debug_level,omitempty"`
	// user features
	UserFeatures map[string]*PBFeature `protobuf:"bytes,2,rep,name=user_features,json=userFeatures,proto3" json:"user_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// item ids
	ItemIds []string `protobuf:"bytes,3,rep,name=item_ids,json=itemIds,proto3" json:"item_ids,omitempty"`
	// context features for each item
	ContextFeatures map[string]*ContextFeatures `protobuf:"bytes,4,rep,name=context_features,json=contextFeatures,proto3" json:"context_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// user realtime embedding return num
	FaissNeighNum int32 `protobuf:"varint,5,opt,name=faiss_neigh_num,json=faissNeighNum,proto3" json:"faiss_neigh_num,omitempty"`
	// item features for each item, key is item input name
	ItemFeatures map[string]*ContextFeatures `protobuf:"bytes,6,rep,name=item_features,json=itemFeatures,proto3" json:"item_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*PBRequest) ProtoMessage() {}

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

func (x *PBRequest) GetDebugLevel() int32 {
	if x != nil {
		return x.DebugLevel
	}
	return 0
}

func (x *PBRequest) GetUserFeatures() map[string]*PBFeature {
	if x != nil {
		return x.UserFeatures
	}
	return nil
}

func (x *PBRequest) GetItemIds() []string {
	if x != nil {
		return x.ItemIds
	}
	return nil
}

func (x *PBRequest) GetContextFeatures() map[string]*ContextFeatures {
	if x != nil {
		return x.ContextFeatures
	}
	return nil
}

func (x *PBRequest) GetFaissNeighNum() int32 {
	if x != nil {
		return x.FaissNeighNum
	}
	return 0
}

func (x *PBRequest) GetItemFeatures() map[string]*ContextFeatures {
	if x != nil {
		return x.ItemFeatures
	}
	return nil
}

// return results
type Results struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Scores []float64 `protobuf:"fixed64,1,rep,packed,name=scores,proto3" json:"scores,omitempty"`
}

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

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

func (*Results) ProtoMessage() {}

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

func (x *Results) GetScores() []float64 {
	if x != nil {
		return x.Scores
	}
	return nil
}

// PBResponse specifies the response for aggregator
type PBResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// results
	Results map[string]*Results `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// item features
	ItemFeatures map[string]string `protobuf:"bytes,2,rep,name=item_features,json=itemFeatures,proto3" json:"item_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// generate features
	GenerateFeatures map[string]string `protobuf:"bytes,3,rep,name=generate_features,json=generateFeatures,proto3" json:"generate_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// context features
	ContextFeatures map[string]*ContextFeatures `protobuf:"bytes,4,rep,name=context_features,json=contextFeatures,proto3" json:"context_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	ErrorMsg        string                      `protobuf:"bytes,5,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"`
	StatusCode      StatusCode                  `protobuf:"varint,6,opt,name=status_code,json=statusCode,proto3,enum=easyrec.StatusCode" json:"status_code,omitempty"`
	// item ids
	ItemIds []string `protobuf:"bytes,7,rep,name=item_ids,json=itemIds,proto3" json:"item_ids,omitempty"`
	Outputs []string `protobuf:"bytes,8,rep,name=outputs,proto3" json:"outputs,omitempty"`
	// all fg input features
	RawFeatures map[string]string      `protobuf:"bytes,9,rep,name=raw_features,json=rawFeatures,proto3" json:"raw_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	TfOutputs   map[string]*ArrayProto `protobuf:"bytes,10,rep,name=tf_outputs,json=tfOutputs,proto3" json:"tf_outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*PBResponse) ProtoMessage() {}

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

func (x *PBResponse) GetResults() map[string]*Results {
	if x != nil {
		return x.Results
	}
	return nil
}

func (x *PBResponse) GetItemFeatures() map[string]string {
	if x != nil {
		return x.ItemFeatures
	}
	return nil
}

func (x *PBResponse) GetGenerateFeatures() map[string]string {
	if x != nil {
		return x.GenerateFeatures
	}
	return nil
}

func (x *PBResponse) GetContextFeatures() map[string]*ContextFeatures {
	if x != nil {
		return x.ContextFeatures
	}
	return nil
}

func (x *PBResponse) GetErrorMsg() string {
	if x != nil {
		return x.ErrorMsg
	}
	return ""
}

func (x *PBResponse) GetStatusCode() StatusCode {
	if x != nil {
		return x.StatusCode
	}
	return StatusCode_OK
}

func (x *PBResponse) GetItemIds() []string {
	if x != nil {
		return x.ItemIds
	}
	return nil
}

func (x *PBResponse) GetOutputs() []string {
	if x != nil {
		return x.Outputs
	}
	return nil
}

func (x *PBResponse) GetRawFeatures() map[string]string {
	if x != nil {
		return x.RawFeatures
	}
	return nil
}

func (x *PBResponse) GetTfOutputs() map[string]*ArrayProto {
	if x != nil {
		return x.TfOutputs
	}
	return nil
}

// TorchRecPBResponse specifies the response for aggregator
type TorchRecPBResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// torch output tensors
	MapOutputs map[string]*ArrayProto `protobuf:"bytes,1,rep,name=map_outputs,json=mapOutputs,proto3" json:"map_outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// fg ouput features
	GenerateFeatures map[string]string `protobuf:"bytes,2,rep,name=generate_features,json=generateFeatures,proto3" json:"generate_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// all fg input features
	RawFeatures map[string]string `protobuf:"bytes,3,rep,name=raw_features,json=rawFeatures,proto3" json:"raw_features,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// item ids
	ItemIds []string `protobuf:"bytes,4,rep,name=item_ids,json=itemIds,proto3" json:"item_ids,omitempty"`
}

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

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

func (*TorchRecPBResponse) ProtoMessage() {}

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

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

func (x *TorchRecPBResponse) GetMapOutputs() map[string]*ArrayProto {
	if x != nil {
		return x.MapOutputs
	}
	return nil
}

func (x *TorchRecPBResponse) GetGenerateFeatures() map[string]string {
	if x != nil {
		return x.GenerateFeatures
	}
	return nil
}

func (x *TorchRecPBResponse) GetRawFeatures() map[string]string {
	if x != nil {
		return x.RawFeatures
	}
	return nil
}

func (x *TorchRecPBResponse) GetItemIds() []string {
	if x != nil {
		return x.ItemIds
	}
	return nil
}

var File_easyrec_predict_proto protoreflect.FileDescriptor

var file_easyrec_predict_proto_rawDesc = []byte{
	0x0a, 0x15, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63,
	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63,
	0x22, 0x22, 0x0a, 0x0a, 0x41, 0x72, 0x72, 0x61, 0x79, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x14,
	0x0a, 0x03, 0x64, 0x69, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52,
	0x03, 0x64, 0x69, 0x6d, 0x22, 0xb0, 0x02, 0x0a, 0x0a, 0x41, 0x72, 0x72, 0x61, 0x79, 0x50, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x2c, 0x0a, 0x05, 0x64, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x16, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x41, 0x72, 0x72,
	0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x64, 0x74, 0x79, 0x70,
	0x65, 0x12, 0x34, 0x0a, 0x0b, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63,
	0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x53, 0x68, 0x61, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x72, 0x72,
	0x61, 0x79, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74,
	0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x08,
	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x0a, 0x64, 0x6f, 0x75, 0x62,
	0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x01,
	0x52, 0x09, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x07, 0x69,
	0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01,
	0x52, 0x06, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x36, 0x34,
	0x5f, 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52, 0x08,
	0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6c,
	0x5f, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x01, 0x52, 0x07,
	0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x22, 0x41, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x78, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x08, 0x66, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x65,
	0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x0d, 0x4c,
	0x6f, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x41, 0x0a, 0x09,
	0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x24, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x53, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a,
	0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x89, 0x01, 0x0a,
	0x0a, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x3e, 0x0a, 0x09, 0x6d,
	0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
	0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6e, 0x74,
	0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d,
	0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, 0x01, 0x0a, 0x0b, 0x4c, 0x6f, 0x6e,
	0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x3f, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x61,
	0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61,
	0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70,
	0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x01, 0x0a, 0x0c, 0x4c, 0x6f, 0x6e, 0x67, 0x46,
	0x6c, 0x6f, 0x61, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x40, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66,
	0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x61, 0x73,
	0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4d, 0x61,
	0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70,
	0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x6e, 0x67, 0x44,
	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x41, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x61,
	0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
	0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d,
	0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x93, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, 0x09,
	0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x26, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65,
	0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c,
	0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 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, 0x8d,
	0x01, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x12,
	0x40, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65,
	0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c,
	0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f,
	0x01, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70,
	0x12, 0x41, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69,
	0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 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, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0x91, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x6f, 0x61, 0x74,
	0x4d, 0x61, 0x70, 0x12, 0x42, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63,
	0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4d, 0x61, 0x70, 0x2e,
	0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d,
	0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69,
	0x65, 0x6c, 0x64, 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, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x22, 0x93, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44,
	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x61,
	0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x6f, 0x75, 0x62,
	0x6c, 0x65, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a,
	0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 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, 0x01, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x01, 0x0a, 0x0c, 0x49,
	0x6e, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x40, 0x0a, 0x09, 0x6d,
	0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23,
	0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a,
	0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 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, 0x87, 0x01, 0x0a, 0x09, 0x49,
	0x6e, 0x74, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x3d, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x61,
	0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x2e,
	0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d,
	0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69,
	0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x49, 0x6e, 0x74, 0x4c, 0x6f, 0x6e, 0x67,
	0x4d, 0x61, 0x70, 0x12, 0x3e, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63,
	0x2e, 0x49, 0x6e, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69,
	0x65, 0x6c, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0x8b, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4d, 0x61, 0x70,
	0x12, 0x3f, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x49, 0x6e,
	0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65,
	0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c,
	0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d,
	0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x12,
	0x40, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74,
	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65,
	0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c,
	0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25,
	0x0a, 0x07, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x66, 0x65, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x26, 0x0a, 0x08, 0x4c, 0x6f, 0x6e, 0x67, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x03, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x27, 0x0a,
	0x09, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x66, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x28, 0x0a, 0x0a, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
	0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x01, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
	0x22, 0x28, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a,
	0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x08, 0x49, 0x6e,
	0x74, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x05, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e,
	0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x22, 0x34,
	0x0a, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x6c,
	0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x65, 0x61, 0x73,
	0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x6c,
	0x69, 0x73, 0x74, 0x73, 0x22, 0x36, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4c, 0x69, 0x73,
	0x74, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x46, 0x6c, 0x6f, 0x61,
	0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x22, 0x38, 0x0a, 0x0b,
	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x6c,
	0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73,
	0x79, 0x72, 0x65, 0x63, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
	0x05, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x22, 0x38, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x73, 0x74, 0x73,
	0x22, 0xa7, 0x0d, 0x0a, 0x09, 0x50, 0x42, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x21,
	0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x6f, 0x6e, 0x67, 0x46,
	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
	0x52, 0x0d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12,
	0x25, 0x0a, 0x0d, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x46,
	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
	0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00,
	0x52, 0x0d, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12,
	0x40, 0x0a, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d,
	0x61, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72,
	0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70,
	0x48, 0x00, 0x52, 0x0d, 0x6c, 0x6f, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61,
	0x70, 0x12, 0x37, 0x0a, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6d, 0x61,
	0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65,
	0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0a,
	0x6c, 0x6f, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x3a, 0x0a, 0x0d, 0x6c, 0x6f,
	0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x14, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67,
	0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x6f, 0x6e, 0x67, 0x4c,
	0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x3d, 0x0a, 0x0e, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x66,
	0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
	0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x46, 0x6c, 0x6f,
	0x61, 0x74, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x46, 0x6c, 0x6f,
	0x61, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x40, 0x0a, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x6f,
	0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
	0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x44, 0x6f, 0x75,
	0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x6c, 0x6f, 0x6e, 0x67, 0x44, 0x6f,
	0x75, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0f,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12,
	0x3d, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6d, 0x61,
	0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65,
	0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x48, 0x00,
	0x52, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x40,
	0x0a, 0x0f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6d, 0x61,
	0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65,
	0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x48,
	0x00, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70,
	0x12, 0x43, 0x0a, 0x10, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
	0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x65, 0x61, 0x73,
	0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x6f, 0x61, 0x74,
	0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x6f,
	0x61, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f,
	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x18, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x3d, 0x0a,
	0x0e, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18,
	0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e,
	0x49, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0c,
	0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x34, 0x0a, 0x0b,
	0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x49,
	0x6e, 0x74, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x4d,
	0x61, 0x70, 0x12, 0x37, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6d,
	0x61, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72,
	0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52,
	0x0a, 0x69, 0x6e, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x3a, 0x0a, 0x0d, 0x69,
	0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x13, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74,
	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x46,
	0x6c, 0x6f, 0x61, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x3d, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x5f, 0x64,
	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x15, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x44, 0x6f, 0x75,
	0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x44, 0x6f, 0x75,
	0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x2d, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x5f, 0x6c, 0x69,
	0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72,
	0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e,
	0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6c, 0x69,
	0x73, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72,
	0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x6c,
	0x6f, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65,
	0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73,
	0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
	0x33, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x18, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x46, 0x6c,
	0x6f, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74,
	0x4c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6c,
	0x69, 0x73, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73, 0x79,
	0x72, 0x65, 0x63, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00,
	0x52, 0x0a, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09,
	0x69, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x11, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73,
	0x74, 0x73, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x33,
	0x0a, 0x0a, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x1b, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x6e,
	0x67, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x4c, 0x69,
	0x73, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69,
	0x73, 0x74, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x61, 0x73, 0x79,
	0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x48,
	0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x36,
	0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x1d, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x46, 0x6c,
	0x6f, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61,
	0x74, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
	0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65,
	0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73,
	0x74, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74,
	0x73, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe7, 0x04, 0x0a, 0x09, 0x50,
	0x42, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x62, 0x75,
	0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64,
	0x65, 0x62, 0x75, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x49, 0x0a, 0x0d, 0x75, 0x73, 0x65,
	0x72, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x24, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74,
	0x75, 0x72, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x73, 0x12,
	0x52, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x61, 0x73, 0x79,
	0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x73, 0x73, 0x5f, 0x6e, 0x65, 0x69,
	0x67, 0x68, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x61,
	0x69, 0x73, 0x73, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x4e, 0x75, 0x6d, 0x12, 0x49, 0x0a, 0x0d, 0x69,
	0x74, 0x65, 0x6d, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x46, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x69, 0x74, 0x65, 0x6d, 0x46, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x53, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x65,
	0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a, 0x14, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x59, 0x0a, 0x11, 0x49, 0x74, 0x65,
	0x6d, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x18, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
	0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x22, 0x25, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12,
	0x1a, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x01, 0x42,
	0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x9a, 0x08, 0x0a, 0x0a,
	0x50, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x61,
	0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x66,
	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
	0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x69, 0x74, 0x65, 0x6d, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x73, 0x12, 0x56, 0x0a, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x66,
	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e,
	0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
	0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x10, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50,
	0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
	0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12,
	0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x34, 0x0a, 0x0b,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f,
	0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a,
	0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
	0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x61, 0x77, 0x5f, 0x66,
	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
	0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x0b, 0x72, 0x61, 0x77, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
	0x12, 0x41, 0x0a, 0x0a, 0x74, 0x66, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x0a,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x50,
	0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x66, 0x4f, 0x75, 0x74, 0x70,
	0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x66, 0x4f, 0x75, 0x74, 0x70,
	0x75, 0x74, 0x73, 0x1a, 0x4c, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x75, 0x6c, 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, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x52,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 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, 0x43, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x65,
	0x61, 0x74, 0x75, 0x72, 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, 0x5c, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x78, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x18, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x78, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x52, 0x61, 0x77, 0x46, 0x65, 0x61, 0x74,
	0x75, 0x72, 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, 0x51, 0x0a, 0x0e, 0x54, 0x66, 0x4f, 0x75, 0x74, 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, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72,
	0x65, 0x63, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x87, 0x04, 0x0a, 0x12, 0x54, 0x6f, 0x72,
	0x63, 0x68, 0x52, 0x65, 0x63, 0x50, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x4c, 0x0a, 0x0b, 0x6d, 0x61, 0x70, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x54,
	0x6f, 0x72, 0x63, 0x68, 0x52, 0x65, 0x63, 0x50, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x4d, 0x61, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x5e, 0x0a,
	0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72,
	0x65, 0x63, 0x2e, 0x54, 0x6f, 0x72, 0x63, 0x68, 0x52, 0x65, 0x63, 0x50, 0x42, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x67, 0x65, 0x6e,
	0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x4f, 0x0a,
	0x0c, 0x72, 0x61, 0x77, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x54, 0x6f,
	0x72, 0x63, 0x68, 0x52, 0x65, 0x63, 0x50, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x2e, 0x52, 0x61, 0x77, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0b, 0x72, 0x61, 0x77, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x19,
	0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x73, 0x1a, 0x52, 0x0a, 0x0f, 0x4d, 0x61, 0x70,
	0x4f, 0x75, 0x74, 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, 0x29,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
	0x65, 0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x50, 0x72, 0x6f,
	0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a,
	0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 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, 0x3e, 0x0a, 0x10, 0x52, 0x61, 0x77, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 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, 0x2a, 0xdb, 0x02, 0x0a, 0x0d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c,
	0x49, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54,
	0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x54, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10,
	0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x03, 0x12,
	0x0c, 0x0a, 0x08, 0x44, 0x54, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x38, 0x10, 0x04, 0x12, 0x0c, 0x0a,
	0x08, 0x44, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x44,
	0x54, 0x5f, 0x49, 0x4e, 0x54, 0x38, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x54, 0x5f, 0x53,
	0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x54, 0x5f, 0x43, 0x4f,
	0x4d, 0x50, 0x4c, 0x45, 0x58, 0x36, 0x34, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x54, 0x5f,
	0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x54, 0x5f, 0x42, 0x4f,
	0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x54, 0x5f, 0x51, 0x49, 0x4e, 0x54, 0x38,
	0x10, 0x0b, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x54, 0x5f, 0x51, 0x55, 0x49, 0x4e, 0x54, 0x38, 0x10,
	0x0c, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x54, 0x5f, 0x51, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d,
	0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x54, 0x5f, 0x42, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x31, 0x36, 0x10,
	0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x54, 0x5f, 0x51, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x0f,
	0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x54, 0x5f, 0x51, 0x55, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x10,
	0x12, 0x0d, 0x0a, 0x09, 0x44, 0x54, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x11, 0x12,
	0x11, 0x0a, 0x0d, 0x44, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x58, 0x31, 0x32, 0x38,
	0x10, 0x12, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x54, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x10, 0x13, 0x12,
	0x0f, 0x0a, 0x0b, 0x44, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x14,
	0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x54, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x10, 0x15,
	0x2a, 0x34, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06,
	0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f,
	0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x58, 0x43, 0x45, 0x50,
	0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x42, 0x3e, 0x0a, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6c,
	0x69, 0x62, 0x61, 0x62, 0x61, 0x2e, 0x70, 0x61, 0x69, 0x72, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f,
	0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x0d, 0x50, 0x72,
	0x65, 0x64, 0x69, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x5a, 0x09, 0x2e, 0x3b, 0x65,
	0x61, 0x73, 0x79, 0x72, 0x65, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_easyrec_predict_proto_rawDescOnce sync.Once
	file_easyrec_predict_proto_rawDescData = file_easyrec_predict_proto_rawDesc
)

func file_easyrec_predict_proto_rawDescGZIP() []byte {
	file_easyrec_predict_proto_rawDescOnce.Do(func() {
		file_easyrec_predict_proto_rawDescData = protoimpl.X.CompressGZIP(file_easyrec_predict_proto_rawDescData)
	})
	return file_easyrec_predict_proto_rawDescData
}

var file_easyrec_predict_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_easyrec_predict_proto_msgTypes = make([]protoimpl.MessageInfo, 60)
var file_easyrec_predict_proto_goTypes = []interface{}{
	(ArrayDataType)(0),         // 0: easyrec.ArrayDataType
	(StatusCode)(0),            // 1: easyrec.StatusCode
	(*ArrayShape)(nil),         // 2: easyrec.ArrayShape
	(*ArrayProto)(nil),         // 3: easyrec.ArrayProto
	(*ContextFeatures)(nil),    // 4: easyrec.ContextFeatures
	(*LongStringMap)(nil),      // 5: easyrec.LongStringMap
	(*LongIntMap)(nil),         // 6: easyrec.LongIntMap
	(*LongLongMap)(nil),        // 7: easyrec.LongLongMap
	(*LongFloatMap)(nil),       // 8: easyrec.LongFloatMap
	(*LongDoubleMap)(nil),      // 9: easyrec.LongDoubleMap
	(*StringStringMap)(nil),    // 10: easyrec.StringStringMap
	(*StringIntMap)(nil),       // 11: easyrec.StringIntMap
	(*StringLongMap)(nil),      // 12: easyrec.StringLongMap
	(*StringFloatMap)(nil),     // 13: easyrec.StringFloatMap
	(*StringDoubleMap)(nil),    // 14: easyrec.StringDoubleMap
	(*IntStringMap)(nil),       // 15: easyrec.IntStringMap
	(*IntIntMap)(nil),          // 16: easyrec.IntIntMap
	(*IntLongMap)(nil),         // 17: easyrec.IntLongMap
	(*IntFloatMap)(nil),        // 18: easyrec.IntFloatMap
	(*IntDoubleMap)(nil),       // 19: easyrec.IntDoubleMap
	(*IntList)(nil),            // 20: easyrec.IntList
	(*LongList)(nil),           // 21: easyrec.LongList
	(*FloatList)(nil),          // 22: easyrec.FloatList
	(*DoubleList)(nil),         // 23: easyrec.DoubleList
	(*StringList)(nil),         // 24: easyrec.StringList
	(*IntLists)(nil),           // 25: easyrec.IntLists
	(*LongLists)(nil),          // 26: easyrec.LongLists
	(*FloatLists)(nil),         // 27: easyrec.FloatLists
	(*DoubleLists)(nil),        // 28: easyrec.DoubleLists
	(*StringLists)(nil),        // 29: easyrec.StringLists
	(*PBFeature)(nil),          // 30: easyrec.PBFeature
	(*PBRequest)(nil),          // 31: easyrec.PBRequest
	(*Results)(nil),            // 32: easyrec.Results
	(*PBResponse)(nil),         // 33: easyrec.PBResponse
	(*TorchRecPBResponse)(nil), // 34: easyrec.TorchRecPBResponse
	nil,                        // 35: easyrec.LongStringMap.MapFieldEntry
	nil,                        // 36: easyrec.LongIntMap.MapFieldEntry
	nil,                        // 37: easyrec.LongLongMap.MapFieldEntry
	nil,                        // 38: easyrec.LongFloatMap.MapFieldEntry
	nil,                        // 39: easyrec.LongDoubleMap.MapFieldEntry
	nil,                        // 40: easyrec.StringStringMap.MapFieldEntry
	nil,                        // 41: easyrec.StringIntMap.MapFieldEntry
	nil,                        // 42: easyrec.StringLongMap.MapFieldEntry
	nil,                        // 43: easyrec.StringFloatMap.MapFieldEntry
	nil,                        // 44: easyrec.StringDoubleMap.MapFieldEntry
	nil,                        // 45: easyrec.IntStringMap.MapFieldEntry
	nil,                        // 46: easyrec.IntIntMap.MapFieldEntry
	nil,                        // 47: easyrec.IntLongMap.MapFieldEntry
	nil,                        // 48: easyrec.IntFloatMap.MapFieldEntry
	nil,                        // 49: easyrec.IntDoubleMap.MapFieldEntry
	nil,                        // 50: easyrec.PBRequest.UserFeaturesEntry
	nil,                        // 51: easyrec.PBRequest.ContextFeaturesEntry
	nil,                        // 52: easyrec.PBRequest.ItemFeaturesEntry
	nil,                        // 53: easyrec.PBResponse.ResultsEntry
	nil,                        // 54: easyrec.PBResponse.ItemFeaturesEntry
	nil,                        // 55: easyrec.PBResponse.GenerateFeaturesEntry
	nil,                        // 56: easyrec.PBResponse.ContextFeaturesEntry
	nil,                        // 57: easyrec.PBResponse.RawFeaturesEntry
	nil,                        // 58: easyrec.PBResponse.TfOutputsEntry
	nil,                        // 59: easyrec.TorchRecPBResponse.MapOutputsEntry
	nil,                        // 60: easyrec.TorchRecPBResponse.GenerateFeaturesEntry
	nil,                        // 61: easyrec.TorchRecPBResponse.RawFeaturesEntry
}
var file_easyrec_predict_proto_depIdxs = []int32{
	0,  // 0: easyrec.ArrayProto.dtype:type_name -> easyrec.ArrayDataType
	2,  // 1: easyrec.ArrayProto.array_shape:type_name -> easyrec.ArrayShape
	30, // 2: easyrec.ContextFeatures.features:type_name -> easyrec.PBFeature
	35, // 3: easyrec.LongStringMap.map_field:type_name -> easyrec.LongStringMap.MapFieldEntry
	36, // 4: easyrec.LongIntMap.map_field:type_name -> easyrec.LongIntMap.MapFieldEntry
	37, // 5: easyrec.LongLongMap.map_field:type_name -> easyrec.LongLongMap.MapFieldEntry
	38, // 6: easyrec.LongFloatMap.map_field:type_name -> easyrec.LongFloatMap.MapFieldEntry
	39, // 7: easyrec.LongDoubleMap.map_field:type_name -> easyrec.LongDoubleMap.MapFieldEntry
	40, // 8: easyrec.StringStringMap.map_field:type_name -> easyrec.StringStringMap.MapFieldEntry
	41, // 9: easyrec.StringIntMap.map_field:type_name -> easyrec.StringIntMap.MapFieldEntry
	42, // 10: easyrec.StringLongMap.map_field:type_name -> easyrec.StringLongMap.MapFieldEntry
	43, // 11: easyrec.StringFloatMap.map_field:type_name -> easyrec.StringFloatMap.MapFieldEntry
	44, // 12: easyrec.StringDoubleMap.map_field:type_name -> easyrec.StringDoubleMap.MapFieldEntry
	45, // 13: easyrec.IntStringMap.map_field:type_name -> easyrec.IntStringMap.MapFieldEntry
	46, // 14: easyrec.IntIntMap.map_field:type_name -> easyrec.IntIntMap.MapFieldEntry
	47, // 15: easyrec.IntLongMap.map_field:type_name -> easyrec.IntLongMap.MapFieldEntry
	48, // 16: easyrec.IntFloatMap.map_field:type_name -> easyrec.IntFloatMap.MapFieldEntry
	49, // 17: easyrec.IntDoubleMap.map_field:type_name -> easyrec.IntDoubleMap.MapFieldEntry
	20, // 18: easyrec.IntLists.lists:type_name -> easyrec.IntList
	21, // 19: easyrec.LongLists.lists:type_name -> easyrec.LongList
	22, // 20: easyrec.FloatLists.lists:type_name -> easyrec.FloatList
	23, // 21: easyrec.DoubleLists.lists:type_name -> easyrec.DoubleList
	24, // 22: easyrec.StringLists.lists:type_name -> easyrec.StringList
	5,  // 23: easyrec.PBFeature.long_string_map:type_name -> easyrec.LongStringMap
	6,  // 24: easyrec.PBFeature.long_int_map:type_name -> easyrec.LongIntMap
	7,  // 25: easyrec.PBFeature.long_long_map:type_name -> easyrec.LongLongMap
	8,  // 26: easyrec.PBFeature.long_float_map:type_name -> easyrec.LongFloatMap
	9,  // 27: easyrec.PBFeature.long_double_map:type_name -> easyrec.LongDoubleMap
	10, // 28: easyrec.PBFeature.string_string_map:type_name -> easyrec.StringStringMap
	11, // 29: easyrec.PBFeature.string_int_map:type_name -> easyrec.StringIntMap
	12, // 30: easyrec.PBFeature.string_long_map:type_name -> easyrec.StringLongMap
	13, // 31: easyrec.PBFeature.string_float_map:type_name -> easyrec.StringFloatMap
	14, // 32: easyrec.PBFeature.string_double_map:type_name -> easyrec.StringDoubleMap
	15, // 33: easyrec.PBFeature.int_string_map:type_name -> easyrec.IntStringMap
	16, // 34: easyrec.PBFeature.int_int_map:type_name -> easyrec.IntIntMap
	17, // 35: easyrec.PBFeature.int_long_map:type_name -> easyrec.IntLongMap
	18, // 36: easyrec.PBFeature.int_float_map:type_name -> easyrec.IntFloatMap
	19, // 37: easyrec.PBFeature.int_double_map:type_name -> easyrec.IntDoubleMap
	20, // 38: easyrec.PBFeature.int_list:type_name -> easyrec.IntList
	21, // 39: easyrec.PBFeature.long_list:type_name -> easyrec.LongList
	24, // 40: easyrec.PBFeature.string_list:type_name -> easyrec.StringList
	22, // 41: easyrec.PBFeature.float_list:type_name -> easyrec.FloatList
	23, // 42: easyrec.PBFeature.double_list:type_name -> easyrec.DoubleList
	25, // 43: easyrec.PBFeature.int_lists:type_name -> easyrec.IntLists
	26, // 44: easyrec.PBFeature.long_lists:type_name -> easyrec.LongLists
	29, // 45: easyrec.PBFeature.string_lists:type_name -> easyrec.StringLists
	27, // 46: easyrec.PBFeature.float_lists:type_name -> easyrec.FloatLists
	28, // 47: easyrec.PBFeature.double_lists:type_name -> easyrec.DoubleLists
	50, // 48: easyrec.PBRequest.user_features:type_name -> easyrec.PBRequest.UserFeaturesEntry
	51, // 49: easyrec.PBRequest.context_features:type_name -> easyrec.PBRequest.ContextFeaturesEntry
	52, // 50: easyrec.PBRequest.item_features:type_name -> easyrec.PBRequest.ItemFeaturesEntry
	53, // 51: easyrec.PBResponse.results:type_name -> easyrec.PBResponse.ResultsEntry
	54, // 52: easyrec.PBResponse.item_features:type_name -> easyrec.PBResponse.ItemFeaturesEntry
	55, // 53: easyrec.PBResponse.generate_features:type_name -> easyrec.PBResponse.GenerateFeaturesEntry
	56, // 54: easyrec.PBResponse.context_features:type_name -> easyrec.PBResponse.ContextFeaturesEntry
	1,  // 55: easyrec.PBResponse.status_code:type_name -> easyrec.StatusCode
	57, // 56: easyrec.PBResponse.raw_features:type_name -> easyrec.PBResponse.RawFeaturesEntry
	58, // 57: easyrec.PBResponse.tf_outputs:type_name -> easyrec.PBResponse.TfOutputsEntry
	59, // 58: easyrec.TorchRecPBResponse.map_outputs:type_name -> easyrec.TorchRecPBResponse.MapOutputsEntry
	60, // 59: easyrec.TorchRecPBResponse.generate_features:type_name -> easyrec.TorchRecPBResponse.GenerateFeaturesEntry
	61, // 60: easyrec.TorchRecPBResponse.raw_features:type_name -> easyrec.TorchRecPBResponse.RawFeaturesEntry
	30, // 61: easyrec.PBRequest.UserFeaturesEntry.value:type_name -> easyrec.PBFeature
	4,  // 62: easyrec.PBRequest.ContextFeaturesEntry.value:type_name -> easyrec.ContextFeatures
	4,  // 63: easyrec.PBRequest.ItemFeaturesEntry.value:type_name -> easyrec.ContextFeatures
	32, // 64: easyrec.PBResponse.ResultsEntry.value:type_name -> easyrec.Results
	4,  // 65: easyrec.PBResponse.ContextFeaturesEntry.value:type_name -> easyrec.ContextFeatures
	3,  // 66: easyrec.PBResponse.TfOutputsEntry.value:type_name -> easyrec.ArrayProto
	3,  // 67: easyrec.TorchRecPBResponse.MapOutputsEntry.value:type_name -> easyrec.ArrayProto
	68, // [68:68] is the sub-list for method output_type
	68, // [68:68] is the sub-list for method input_type
	68, // [68:68] is the sub-list for extension type_name
	68, // [68:68] is the sub-list for extension extendee
	0,  // [0:68] is the sub-list for field type_name
}

func init() { file_easyrec_predict_proto_init() }
func file_easyrec_predict_proto_init() {
	if File_easyrec_predict_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_easyrec_predict_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ArrayShape); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ArrayProto); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ContextFeatures); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LongStringMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LongIntMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LongLongMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LongFloatMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LongDoubleMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringStringMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringIntMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringLongMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringFloatMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringDoubleMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntStringMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntIntMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntLongMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntFloatMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntDoubleMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LongList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FloatList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DoubleList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IntLists); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LongLists); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FloatLists); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DoubleLists); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringLists); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PBFeature); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PBRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Results); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PBResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_easyrec_predict_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TorchRecPBResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_easyrec_predict_proto_msgTypes[28].OneofWrappers = []interface{}{
		(*PBFeature_IntFeature)(nil),
		(*PBFeature_LongFeature)(nil),
		(*PBFeature_StringFeature)(nil),
		(*PBFeature_FloatFeature)(nil),
		(*PBFeature_DoubleFeature)(nil),
		(*PBFeature_LongStringMap)(nil),
		(*PBFeature_LongIntMap)(nil),
		(*PBFeature_LongLongMap)(nil),
		(*PBFeature_LongFloatMap)(nil),
		(*PBFeature_LongDoubleMap)(nil),
		(*PBFeature_StringStringMap)(nil),
		(*PBFeature_StringIntMap)(nil),
		(*PBFeature_StringLongMap)(nil),
		(*PBFeature_StringFloatMap)(nil),
		(*PBFeature_StringDoubleMap)(nil),
		(*PBFeature_IntStringMap)(nil),
		(*PBFeature_IntIntMap)(nil),
		(*PBFeature_IntLongMap)(nil),
		(*PBFeature_IntFloatMap)(nil),
		(*PBFeature_IntDoubleMap)(nil),
		(*PBFeature_IntList)(nil),
		(*PBFeature_LongList)(nil),
		(*PBFeature_StringList)(nil),
		(*PBFeature_FloatList)(nil),
		(*PBFeature_DoubleList)(nil),
		(*PBFeature_IntLists)(nil),
		(*PBFeature_LongLists)(nil),
		(*PBFeature_StringLists)(nil),
		(*PBFeature_FloatLists)(nil),
		(*PBFeature_DoubleLists)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_easyrec_predict_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   60,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_easyrec_predict_proto_goTypes,
		DependencyIndexes: file_easyrec_predict_proto_depIdxs,
		EnumInfos:         file_easyrec_predict_proto_enumTypes,
		MessageInfos:      file_easyrec_predict_proto_msgTypes,
	}.Build()
	File_easyrec_predict_proto = out.File
	file_easyrec_predict_proto_rawDesc = nil
	file_easyrec_predict_proto_goTypes = nil
	file_easyrec_predict_proto_depIdxs = nil
}
