//
//Сервис реализует функционал регистрации в системе RFID-ключей.
//Только зарегистрированные RFID-ключи доступны для активации пользователям

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.30.0
// 	protoc        v4.23.1
// source: keyapis/rfidregistry/v1/keyapis_rfidregistry_record_v1.proto

package keyapis_rfidregistry_v1

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	_ "google.golang.org/protobuf/types/descriptorpb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	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)
)

// Справочник типов ключей.
// # Тип: byte
type Record_RfidType int32

const (
	// Значение не указано
	Record_RFID_TYPE_UNKNOWN Record_RfidType = 0
	// Брелок
	Record_FOB Record_RfidType = 1
	// Карта
	Record_CARD Record_RfidType = 2
	// Браслет
	Record_BAND Record_RfidType = 3
	// Стикер
	Record_STICKER Record_RfidType = 4
	// Активная метка
	Record_ACTIVE_TAG Record_RfidType = 5
)

// Enum value maps for Record_RfidType.
var (
	Record_RfidType_name = map[int32]string{
		0: "RFID_TYPE_UNKNOWN",
		1: "FOB",
		2: "CARD",
		3: "BAND",
		4: "STICKER",
		5: "ACTIVE_TAG",
	}
	Record_RfidType_value = map[string]int32{
		"RFID_TYPE_UNKNOWN": 0,
		"FOB":               1,
		"CARD":              2,
		"BAND":              3,
		"STICKER":           4,
		"ACTIVE_TAG":        5,
	}
)

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

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

func (Record_RfidType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[0].Descriptor()
}

func (Record_RfidType) Type() protoreflect.EnumType {
	return &file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[0]
}

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

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

// Справочник типов шифрования ключа.
// # Тип: byte
type Record_EncryptionType int32

const (
	// Значение не указано
	Record_ENCRYPTION_TYPE_UNKNOWN Record_EncryptionType = 0
	// Без шифрования
	Record_SL0 Record_EncryptionType = 1
	// С шифрованием, копируемый
	Record_SL1 Record_EncryptionType = 2
	// С шифрованием, не копируемый
	Record_SL3 Record_EncryptionType = 3
)

// Enum value maps for Record_EncryptionType.
var (
	Record_EncryptionType_name = map[int32]string{
		0: "ENCRYPTION_TYPE_UNKNOWN",
		1: "SL0",
		2: "SL1",
		3: "SL3",
	}
	Record_EncryptionType_value = map[string]int32{
		"ENCRYPTION_TYPE_UNKNOWN": 0,
		"SL0":                     1,
		"SL1":                     2,
		"SL3":                     3,
	}
)

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

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

func (Record_EncryptionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[1].Descriptor()
}

func (Record_EncryptionType) Type() protoreflect.EnumType {
	return &file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[1]
}

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

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

// Справочник типов статусов ключа.
// # Тип: byte
type Record_StatusType int32

const (
	// Значение не указано
	Record_STATUS_TYPE_UNKNOWN Record_StatusType = 0
	// Новый
	Record_NEW Record_StatusType = 1
	// Отгружен
	Record_SHIPPED Record_StatusType = 2
	// Брак
	Record_DEFECT Record_StatusType = 3
	// Использован
	Record_IN_USE Record_StatusType = 4
)

// Enum value maps for Record_StatusType.
var (
	Record_StatusType_name = map[int32]string{
		0: "STATUS_TYPE_UNKNOWN",
		1: "NEW",
		2: "SHIPPED",
		3: "DEFECT",
		4: "IN_USE",
	}
	Record_StatusType_value = map[string]int32{
		"STATUS_TYPE_UNKNOWN": 0,
		"NEW":                 1,
		"SHIPPED":             2,
		"DEFECT":              3,
		"IN_USE":              4,
	}
)

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

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

func (Record_StatusType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[2].Descriptor()
}

func (Record_StatusType) Type() protoreflect.EnumType {
	return &file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[2]
}

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

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

// Справочник методов идентификации.
// # Тип: byte
type Record_IdentificationMethodType int32

const (
	// Значение не указано
	Record_IDENTIFICATION_METHOD_TYPE_UNKNOWN Record_IdentificationMethodType = 0
	// Значение Mifare
	Record_MIFARE Record_IdentificationMethodType = 1
	// Значение Bluetooth low energy
	Record_BLE Record_IdentificationMethodType = 2
	// Значение Ultra high frequency
	Record_UHF Record_IdentificationMethodType = 3
	// Значение em-marine
	Record_EM_MARINE Record_IdentificationMethodType = 4
)

// Enum value maps for Record_IdentificationMethodType.
var (
	Record_IdentificationMethodType_name = map[int32]string{
		0: "IDENTIFICATION_METHOD_TYPE_UNKNOWN",
		1: "MIFARE",
		2: "BLE",
		3: "UHF",
		4: "EM_MARINE",
	}
	Record_IdentificationMethodType_value = map[string]int32{
		"IDENTIFICATION_METHOD_TYPE_UNKNOWN": 0,
		"MIFARE":                             1,
		"BLE":                                2,
		"UHF":                                3,
		"EM_MARINE":                          4,
	}
)

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

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

func (Record_IdentificationMethodType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[3].Descriptor()
}

func (Record_IdentificationMethodType) Type() protoreflect.EnumType {
	return &file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[3]
}

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

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

// Справочник типов значений сортировки.
// # Тип: byte
type RecordPaging_OrderByType int32

const (
	// Значение не указано
	RecordPaging_ORDER_BY_TYPE_UNKNOWN RecordPaging_OrderByType = 0
	// По дате перевода в статус new (дате создания)
	RecordPaging_NEW_AT RecordPaging_OrderByType = 1
	// По времени изменения
	RecordPaging_CHANGED_AT RecordPaging_OrderByType = 2
	// По времени заказа
	RecordPaging_ORDER_AT RecordPaging_OrderByType = 3
	// По номеру заказа
	RecordPaging_ORDER_NUMBER RecordPaging_OrderByType = 4
	// По рангу для поиска по тексту.
	// Применяется когда передано поле для поиска по тексту.
	// В случае если текстовое поле не передано, применяется значение по умолчанию
	RecordPaging_RANK RecordPaging_OrderByType = 5
)

// Enum value maps for RecordPaging_OrderByType.
var (
	RecordPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "NEW_AT",
		2: "CHANGED_AT",
		3: "ORDER_AT",
		4: "ORDER_NUMBER",
		5: "RANK",
	}
	RecordPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"NEW_AT":                1,
		"CHANGED_AT":            2,
		"ORDER_AT":              3,
		"ORDER_NUMBER":          4,
		"RANK":                  5,
	}
)

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

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

func (RecordPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[4].Descriptor()
}

func (RecordPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[4]
}

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

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

// Справочник типов направлений сортировки.
// # Тип: byte
type RecordPaging_DirectionType int32

const (
	// Значение не указано
	RecordPaging_DIRECTION_TYPE_UNKNOWN RecordPaging_DirectionType = 0
	// От большего к меньшему
	RecordPaging_DESC RecordPaging_DirectionType = 1
	// От меньшего к большему
	RecordPaging_ASC RecordPaging_DirectionType = 2
)

// Enum value maps for RecordPaging_DirectionType.
var (
	RecordPaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	RecordPaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (RecordPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[5].Descriptor()
}

func (RecordPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes[5]
}

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

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

// Запись.
// # Описание модели
type Record struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор.
	// Если не передан создаётся сервером.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Тип ключа
	RfidType Record_RfidType `protobuf:"varint,2,opt,name=rfid_type,json=rfidType,proto3,enum=keyapis.rfidregistry.v1.Record_RfidType" json:"rfid_type,omitempty"`
	// Тип шифрования ключа.
	// Максимально поддерживаемый ключом тип шифрования
	EncryptionType Record_EncryptionType `protobuf:"varint,3,opt,name=encryption_type,json=encryptionType,proto3,enum=keyapis.rfidregistry.v1.Record_EncryptionType" json:"encryption_type,omitempty"`
	// Номер ключа.
	// Указывается при создании.
	// # Диапазон: 1..14
	Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"`
	// Тип статуса ключа
	StatusType Record_StatusType `protobuf:"varint,5,opt,name=status_type,json=statusType,proto3,enum=keyapis.rfidregistry.v1.Record_StatusType" json:"status_type,omitempty"`
	// Дата перевода в статус "Новый".
	// # Тип: DateTime
	NewAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=new_at,json=newAt,proto3" json:"new_at,omitempty"`
	// Дата перевода в статус "Отгружен".
	// # Тип: DateTime
	ShippedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=shipped_at,json=shippedAt,proto3" json:"shipped_at,omitempty"`
	// Дата перевода в статус "Брак".
	// # Тип: DateTime
	DefectAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=defect_at,json=defectAt,proto3" json:"defect_at,omitempty"`
	// Дата перевода в статус "Использован".
	// # Тип: DateTime
	InUseAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=in_use_at,json=inUseAt,proto3" json:"in_use_at,omitempty"`
	// Идентификатор привязанного ключа.
	// Заполняется при переводе в статус "Использован".
	// # Диапазон: 0..16
	InUseRfidId *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=in_use_rfid_id,json=inUseRfidId,proto3" json:"in_use_rfid_id,omitempty"`
	// Содержимое ячеек ключа
	DataCells []*Record_DataCell `protobuf:"bytes,11,rep,name=data_cells,json=dataCells,proto3" json:"data_cells,omitempty"`
	// Идентификатор владельца.
	// Заполняется сервером.
	// # Диапазон: 0..255
	ResourceOwnerId string `protobuf:"bytes,12,opt,name=resource_owner_id,json=resourceOwnerId,proto3" json:"resource_owner_id,omitempty"`
	// Номер коробки.
	// # Диапазон: 1..2147483647
	PackageInfoBox int32 `protobuf:"varint,13,opt,name=package_info_box,json=packageInfoBox,proto3" json:"package_info_box,omitempty"`
	// Номер места в коробке.
	// # Диапазон: 1..2147483647
	PackageInfoPlace int32 `protobuf:"varint,14,opt,name=package_info_place,json=packageInfoPlace,proto3" json:"package_info_place,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении.
	// Является версией объекта.
	// # Тип: DateTime
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Конфигурации шифрования ключа
	AesKeyConfigurations []*Record_AesKeyConfiguration `protobuf:"bytes,16,rep,name=aes_key_configurations,json=aesKeyConfigurations,proto3" json:"aes_key_configurations,omitempty"`
	// Контрольные суммы.
	// Нужны для ключей SL1 и SL3
	Trailers []*Record_Trailer `protobuf:"bytes,17,rep,name=trailers,proto3" json:"trailers,omitempty"`
	// Номер заказа.
	// # Диапазон: 0..256
	OrderNumber string `protobuf:"bytes,18,opt,name=order_number,json=orderNumber,proto3" json:"order_number,omitempty"`
	// Дата заказа.
	// # Тип: DateTime
	OrderAt *timestamppb.Timestamp `protobuf:"bytes,19,opt,name=order_at,json=orderAt,proto3" json:"order_at,omitempty"`
	// Владелец привязанного ключа.
	// Заполняется сервером, значение берётся из токена при использовании ключа.
	// # Диапазон: 0..255
	InUseResourceOwnerId *wrapperspb.StringValue `protobuf:"bytes,20,opt,name=in_use_resource_owner_id,json=inUseResourceOwnerId,proto3" json:"in_use_resource_owner_id,omitempty"`
	// Признак, удалена ли запись
	IsDeleted bool `protobuf:"varint,21,opt,name=is_deleted,json=isDeleted,proto3" json:"is_deleted,omitempty"`
	// Дата удаления.
	// # Тип: DateTime
	DeletedAt *timestamppb.Timestamp `protobuf:"bytes,22,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
	// Производитель.
	// # Диапазон: 3..100
	VendorName *wrapperspb.StringValue `protobuf:"bytes,23,opt,name=vendor_name,json=vendorName,proto3" json:"vendor_name,omitempty"`
	// Метод идентификации
	IdentificationMethodType Record_IdentificationMethodType `protobuf:"varint,24,opt,name=identification_method_type,json=identificationMethodType,proto3,enum=keyapis.rfidregistry.v1.Record_IdentificationMethodType" json:"identification_method_type,omitempty"`
}

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

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

func (*Record) ProtoMessage() {}

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

func (x *Record) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Record) GetRfidType() Record_RfidType {
	if x != nil {
		return x.RfidType
	}
	return Record_RFID_TYPE_UNKNOWN
}

func (x *Record) GetEncryptionType() Record_EncryptionType {
	if x != nil {
		return x.EncryptionType
	}
	return Record_ENCRYPTION_TYPE_UNKNOWN
}

func (x *Record) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *Record) GetStatusType() Record_StatusType {
	if x != nil {
		return x.StatusType
	}
	return Record_STATUS_TYPE_UNKNOWN
}

func (x *Record) GetNewAt() *timestamppb.Timestamp {
	if x != nil {
		return x.NewAt
	}
	return nil
}

func (x *Record) GetShippedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ShippedAt
	}
	return nil
}

func (x *Record) GetDefectAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DefectAt
	}
	return nil
}

func (x *Record) GetInUseAt() *timestamppb.Timestamp {
	if x != nil {
		return x.InUseAt
	}
	return nil
}

func (x *Record) GetInUseRfidId() *wrapperspb.StringValue {
	if x != nil {
		return x.InUseRfidId
	}
	return nil
}

func (x *Record) GetDataCells() []*Record_DataCell {
	if x != nil {
		return x.DataCells
	}
	return nil
}

func (x *Record) GetResourceOwnerId() string {
	if x != nil {
		return x.ResourceOwnerId
	}
	return ""
}

func (x *Record) GetPackageInfoBox() int32 {
	if x != nil {
		return x.PackageInfoBox
	}
	return 0
}

func (x *Record) GetPackageInfoPlace() int32 {
	if x != nil {
		return x.PackageInfoPlace
	}
	return 0
}

func (x *Record) GetChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ChangedAt
	}
	return nil
}

func (x *Record) GetAesKeyConfigurations() []*Record_AesKeyConfiguration {
	if x != nil {
		return x.AesKeyConfigurations
	}
	return nil
}

func (x *Record) GetTrailers() []*Record_Trailer {
	if x != nil {
		return x.Trailers
	}
	return nil
}

func (x *Record) GetOrderNumber() string {
	if x != nil {
		return x.OrderNumber
	}
	return ""
}

func (x *Record) GetOrderAt() *timestamppb.Timestamp {
	if x != nil {
		return x.OrderAt
	}
	return nil
}

func (x *Record) GetInUseResourceOwnerId() *wrapperspb.StringValue {
	if x != nil {
		return x.InUseResourceOwnerId
	}
	return nil
}

func (x *Record) GetIsDeleted() bool {
	if x != nil {
		return x.IsDeleted
	}
	return false
}

func (x *Record) GetDeletedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DeletedAt
	}
	return nil
}

func (x *Record) GetVendorName() *wrapperspb.StringValue {
	if x != nil {
		return x.VendorName
	}
	return nil
}

func (x *Record) GetIdentificationMethodType() Record_IdentificationMethodType {
	if x != nil {
		return x.IdentificationMethodType
	}
	return Record_IDENTIFICATION_METHOD_TYPE_UNKNOWN
}

// Фильтр записей
type RecordFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По типам ключей
	RfidTypes []Record_RfidType `protobuf:"varint,1,rep,packed,name=rfid_types,json=rfidTypes,proto3,enum=keyapis.rfidregistry.v1.Record_RfidType" json:"rfid_types,omitempty"`
	// По типам шифрования
	EncryptionTypes []Record_EncryptionType `protobuf:"varint,2,rep,packed,name=encryption_types,json=encryptionTypes,proto3,enum=keyapis.rfidregistry.v1.Record_EncryptionType" json:"encryption_types,omitempty"`
	// По номерам ключей
	Uids []string `protobuf:"bytes,3,rep,name=uids,proto3" json:"uids,omitempty"`
	// По типам статуса
	StatusTypes []Record_StatusType `protobuf:"varint,4,rep,packed,name=status_types,json=statusTypes,proto3,enum=keyapis.rfidregistry.v1.Record_StatusType" json:"status_types,omitempty"`
	// По номерам привязанных ключей
	InUseRfidIds []string `protobuf:"bytes,5,rep,name=in_use_rfid_ids,json=inUseRfidIds,proto3" json:"in_use_rfid_ids,omitempty"`
	// По владельцам
	ResourceOwnerIds []string `protobuf:"bytes,6,rep,name=resource_owner_ids,json=resourceOwnerIds,proto3" json:"resource_owner_ids,omitempty"`
	// По номерам заказа
	OrderNumbers []string `protobuf:"bytes,7,rep,name=order_numbers,json=orderNumbers,proto3" json:"order_numbers,omitempty"`
	// По владельцам привязанных ключей
	InUseResourceOwnerIds []string `protobuf:"bytes,8,rep,name=in_use_resource_owner_ids,json=inUseResourceOwnerIds,proto3" json:"in_use_resource_owner_ids,omitempty"`
	// По удалённым записям.
	// По умолчанию: false
	IsDeleted *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=is_deleted,json=isDeleted,proto3" json:"is_deleted,omitempty"`
	// По тексту.
	// Если значение не передано то поиск по нему не производится.
	// # Диапазон: 3..64.
	// # Поиск производится по полям:
	// # - Номер заказа;
	// # - Производитель
	Text *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=text,proto3" json:"text,omitempty"`
	// Дата отгрузки от
	StartShippedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_shipped_at,json=startShippedAt,proto3" json:"start_shipped_at,omitempty"`
	// Дата отгрузки до
	EndShippedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=end_shipped_at,json=endShippedAt,proto3" json:"end_shipped_at,omitempty"`
	// По номеру коробки
	PackageInfoBoxes []int32 `protobuf:"varint,13,rep,packed,name=package_info_boxes,json=packageInfoBoxes,proto3" json:"package_info_boxes,omitempty"`
	// По номеру места в коробке
	PackageInfoPlaces []int32 `protobuf:"varint,14,rep,packed,name=package_info_places,json=packageInfoPlaces,proto3" json:"package_info_places,omitempty"`
	// По методу идентификации
	IdentificationMethodTypes []Record_IdentificationMethodType `protobuf:"varint,15,rep,packed,name=identification_method_types,json=identificationMethodTypes,proto3,enum=keyapis.rfidregistry.v1.Record_IdentificationMethodType" json:"identification_method_types,omitempty"`
}

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

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

func (*RecordFilter) ProtoMessage() {}

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

func (x *RecordFilter) GetRfidTypes() []Record_RfidType {
	if x != nil {
		return x.RfidTypes
	}
	return nil
}

func (x *RecordFilter) GetEncryptionTypes() []Record_EncryptionType {
	if x != nil {
		return x.EncryptionTypes
	}
	return nil
}

func (x *RecordFilter) GetUids() []string {
	if x != nil {
		return x.Uids
	}
	return nil
}

func (x *RecordFilter) GetStatusTypes() []Record_StatusType {
	if x != nil {
		return x.StatusTypes
	}
	return nil
}

func (x *RecordFilter) GetInUseRfidIds() []string {
	if x != nil {
		return x.InUseRfidIds
	}
	return nil
}

func (x *RecordFilter) GetResourceOwnerIds() []string {
	if x != nil {
		return x.ResourceOwnerIds
	}
	return nil
}

func (x *RecordFilter) GetOrderNumbers() []string {
	if x != nil {
		return x.OrderNumbers
	}
	return nil
}

func (x *RecordFilter) GetInUseResourceOwnerIds() []string {
	if x != nil {
		return x.InUseResourceOwnerIds
	}
	return nil
}

func (x *RecordFilter) GetIsDeleted() *wrapperspb.BoolValue {
	if x != nil {
		return x.IsDeleted
	}
	return nil
}

func (x *RecordFilter) GetText() *wrapperspb.StringValue {
	if x != nil {
		return x.Text
	}
	return nil
}

func (x *RecordFilter) GetStartShippedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.StartShippedAt
	}
	return nil
}

func (x *RecordFilter) GetEndShippedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.EndShippedAt
	}
	return nil
}

func (x *RecordFilter) GetPackageInfoBoxes() []int32 {
	if x != nil {
		return x.PackageInfoBoxes
	}
	return nil
}

func (x *RecordFilter) GetPackageInfoPlaces() []int32 {
	if x != nil {
		return x.PackageInfoPlaces
	}
	return nil
}

func (x *RecordFilter) GetIdentificationMethodTypes() []Record_IdentificationMethodType {
	if x != nil {
		return x.IdentificationMethodTypes
	}
	return nil
}

// Пагинация записей
type RecordPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// Если значение не передано, то будет взято значение по умолчанию.
	// # По умолчанию: NEW_AT
	OrderByType RecordPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.rfidregistry.v1.RecordPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// # По умолчанию: DESC
	DirectionType RecordPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.rfidregistry.v1.RecordPaging_DirectionType" json:"direction_type,omitempty"`
	// Количество записей на страницу.
	// Если значение 0 (не передано), то будет взято значение по умолчанию.
	// # Диапазон: 0..100.
	// # По умолчанию: 20
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// # Диапазон: 0..2147483647
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

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

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

func (*RecordPaging) ProtoMessage() {}

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

func (x *RecordPaging) GetOrderByType() RecordPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return RecordPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *RecordPaging) GetDirectionType() RecordPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return RecordPaging_DIRECTION_TYPE_UNKNOWN
}

func (x *RecordPaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *RecordPaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Запрос сохранения записи
type PostRecordRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Запись
	Data *Record `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*PostRecordRequest) ProtoMessage() {}

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

func (x *PostRecordRequest) GetData() *Record {
	if x != nil {
		return x.Data
	}
	return nil
}

// Ответ на запрос сохранения записи
type PostRecordResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*PostRecordResponse_Data
	//	*PostRecordResponse_Error_
	Type isPostRecordResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*PostRecordResponse) ProtoMessage() {}

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

func (m *PostRecordResponse) GetType() isPostRecordResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostRecordResponse) GetData() *Record {
	if x, ok := x.GetType().(*PostRecordResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostRecordResponse) GetError() *PostRecordResponse_Error {
	if x, ok := x.GetType().(*PostRecordResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostRecordResponse_Type interface {
	isPostRecordResponse_Type()
}

type PostRecordResponse_Data struct {
	// Запись
	Data *Record `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type PostRecordResponse_Error_ struct {
	// Ошибка
	Error *PostRecordResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*PostRecordResponse_Data) isPostRecordResponse_Type() {}

func (*PostRecordResponse_Error_) isPostRecordResponse_Type() {}

// Запрос получения записи
type GetRecordRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*GetRecordRequest) ProtoMessage() {}

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

func (x *GetRecordRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

// Ответ на запрос получения записи
type GetRecordResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetRecordResponse_Data
	Type isGetRecordResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetRecordResponse) ProtoMessage() {}

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

func (m *GetRecordResponse) GetType() isGetRecordResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetRecordResponse) GetData() *Record {
	if x, ok := x.GetType().(*GetRecordResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetRecordResponse_Type interface {
	isGetRecordResponse_Type()
}

type GetRecordResponse_Data struct {
	// Запись
	Data *Record `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetRecordResponse_Data) isGetRecordResponse_Type() {}

// Запрос получения количества записей
type GetRecordCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр
	Filter *RecordFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

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

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

func (*GetRecordCountRequest) ProtoMessage() {}

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

func (x *GetRecordCountRequest) GetFilter() *RecordFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Ответ на запрос получения количества записей
type GetRecordCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetRecordCountResponse_Data
	//	*GetRecordCountResponse_Error_
	Type isGetRecordCountResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetRecordCountResponse) ProtoMessage() {}

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

func (m *GetRecordCountResponse) GetType() isGetRecordCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetRecordCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetRecordCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

func (x *GetRecordCountResponse) GetError() *GetRecordCountResponse_Error {
	if x, ok := x.GetType().(*GetRecordCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetRecordCountResponse_Type interface {
	isGetRecordCountResponse_Type()
}

type GetRecordCountResponse_Data struct {
	// Всего записей
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

type GetRecordCountResponse_Error_ struct {
	// Ошибка
	Error *GetRecordCountResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetRecordCountResponse_Data) isGetRecordCountResponse_Type() {}

func (*GetRecordCountResponse_Error_) isGetRecordCountResponse_Type() {}

// Запрос получения списка
type GetRecordListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр
	Filter *RecordFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetRecordListRequest_Paging
	Pagination isGetRecordListRequest_Pagination `protobuf_oneof:"pagination"`
}

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

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

func (*GetRecordListRequest) ProtoMessage() {}

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

func (x *GetRecordListRequest) GetFilter() *RecordFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetRecordListRequest) GetPagination() isGetRecordListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetRecordListRequest) GetPaging() *RecordPaging {
	if x, ok := x.GetPagination().(*GetRecordListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetRecordListRequest_Pagination interface {
	isGetRecordListRequest_Pagination()
}

type GetRecordListRequest_Paging struct {
	// Пагинация
	Paging *RecordPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetRecordListRequest_Paging) isGetRecordListRequest_Pagination() {}

// Ответ на запрос получения списка записей
type GetRecordListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetRecordListResponse_Data
	//	*GetRecordListResponse_Error_
	Type isGetRecordListResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetRecordListResponse) ProtoMessage() {}

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

func (m *GetRecordListResponse) GetType() isGetRecordListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetRecordListResponse) GetData() *Record {
	if x, ok := x.GetType().(*GetRecordListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetRecordListResponse) GetError() *GetRecordListResponse_Error {
	if x, ok := x.GetType().(*GetRecordListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetRecordListResponse_Type interface {
	isGetRecordListResponse_Type()
}

type GetRecordListResponse_Data struct {
	// Запись
	Data *Record `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type GetRecordListResponse_Error_ struct {
	// Ошибка
	Error *GetRecordListResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetRecordListResponse_Data) isGetRecordListResponse_Type() {}

func (*GetRecordListResponse_Error_) isGetRecordListResponse_Type() {}

// Запрос удаления записи из реестра.
// Можно удалить только свои записи
type DeleteRecordRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор записи.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*DeleteRecordRequest) ProtoMessage() {}

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

func (x *DeleteRecordRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

// Ответ на запрос удаления записи из реестра
type DeleteRecordResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип ответа
	//
	// Types that are assignable to Type:
	//
	//	*DeleteRecordResponse_Error_
	Type isDeleteRecordResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*DeleteRecordResponse) ProtoMessage() {}

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

func (m *DeleteRecordResponse) GetType() isDeleteRecordResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *DeleteRecordResponse) GetError() *DeleteRecordResponse_Error {
	if x, ok := x.GetType().(*DeleteRecordResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isDeleteRecordResponse_Type interface {
	isDeleteRecordResponse_Type()
}

type DeleteRecordResponse_Error_ struct {
	// Ошибка
	Error *DeleteRecordResponse_Error `protobuf:"bytes,1,opt,name=error,proto3,oneof"`
}

func (*DeleteRecordResponse_Error_) isDeleteRecordResponse_Type() {}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования прото
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

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

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

func (*ValidationError) ProtoMessage() {}

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

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

func (x *ValidationError) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

// Содержимое ячейки ключа
type Record_DataCell struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Сектор.
	// # Диапазон: 0..127
	Section int32 `protobuf:"varint,1,opt,name=section,proto3" json:"section,omitempty"`
	// Блок.
	// # Диапазон: 0..127
	Block int32 `protobuf:"varint,2,opt,name=block,proto3" json:"block,omitempty"`
	// Данные.
	// # Паттерн: /^[A-Za-z0-9=]+$/
	Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*Record_DataCell) ProtoMessage() {}

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

func (x *Record_DataCell) GetSection() int32 {
	if x != nil {
		return x.Section
	}
	return 0
}

func (x *Record_DataCell) GetBlock() int32 {
	if x != nil {
		return x.Block
	}
	return 0
}

func (x *Record_DataCell) GetData() string {
	if x != nil {
		return x.Data
	}
	return ""
}

// Конфигурация шифрования ключа
type Record_AesKeyConfiguration struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Адрес.
	// # Паттерн: /^[A-Za-z0-9=]+$/
	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	// Данные.
	// # Паттерн: /^[A-Za-z0-9=]+$/
	Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*Record_AesKeyConfiguration) ProtoMessage() {}

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

func (x *Record_AesKeyConfiguration) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *Record_AesKeyConfiguration) GetData() string {
	if x != nil {
		return x.Data
	}
	return ""
}

// Контрольная сумма
type Record_Trailer struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Сектор.
	// # Диапазон: 0..15
	Sector int32 `protobuf:"varint,1,opt,name=sector,proto3" json:"sector,omitempty"`
	// Ключ А.
	// # Диапазон: 1..256
	KeyA string `protobuf:"bytes,2,opt,name=key_a,json=keyA,proto3" json:"key_a,omitempty"`
	// Ключ Б.
	// # Диапазон: 1..256
	KeyB string `protobuf:"bytes,3,opt,name=key_b,json=keyB,proto3" json:"key_b,omitempty"`
	// Маска доступа.
	// # Диапазон: 1..512
	AccessMask string `protobuf:"bytes,4,opt,name=access_mask,json=accessMask,proto3" json:"access_mask,omitempty"`
}

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

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

func (*Record_Trailer) ProtoMessage() {}

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

func (x *Record_Trailer) GetSector() int32 {
	if x != nil {
		return x.Sector
	}
	return 0
}

func (x *Record_Trailer) GetKeyA() string {
	if x != nil {
		return x.KeyA
	}
	return ""
}

func (x *Record_Trailer) GetKeyB() string {
	if x != nil {
		return x.KeyB
	}
	return ""
}

func (x *Record_Trailer) GetAccessMask() string {
	if x != nil {
		return x.AccessMask
	}
	return ""
}

// Ошибка сохранения записи.
// Эти проверки выполняются при работе с базой данных и сторонними сервисами
type Record_SavingError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*Record_SavingError_StatusTypeRestricted_
	//	*Record_SavingError_UidExist_
	//	*Record_SavingError_OwnedByAnotherUser_
	//	*Record_SavingError_AlreadyLinked_
	//	*Record_SavingError_Conflict_
	Reason isRecord_SavingError_Reason `protobuf_oneof:"reason"`
}

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

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

func (*Record_SavingError) ProtoMessage() {}

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

func (m *Record_SavingError) GetReason() isRecord_SavingError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *Record_SavingError) GetStatusTypeRestricted() *Record_SavingError_StatusTypeRestricted {
	if x, ok := x.GetReason().(*Record_SavingError_StatusTypeRestricted_); ok {
		return x.StatusTypeRestricted
	}
	return nil
}

func (x *Record_SavingError) GetUidExist() *Record_SavingError_UidExist {
	if x, ok := x.GetReason().(*Record_SavingError_UidExist_); ok {
		return x.UidExist
	}
	return nil
}

func (x *Record_SavingError) GetOwnedByAnotherUser() *Record_SavingError_OwnedByAnotherUser {
	if x, ok := x.GetReason().(*Record_SavingError_OwnedByAnotherUser_); ok {
		return x.OwnedByAnotherUser
	}
	return nil
}

func (x *Record_SavingError) GetAlreadyLinked() *Record_SavingError_AlreadyLinked {
	if x, ok := x.GetReason().(*Record_SavingError_AlreadyLinked_); ok {
		return x.AlreadyLinked
	}
	return nil
}

func (x *Record_SavingError) GetConflict() *Record_SavingError_Conflict {
	if x, ok := x.GetReason().(*Record_SavingError_Conflict_); ok {
		return x.Conflict
	}
	return nil
}

type isRecord_SavingError_Reason interface {
	isRecord_SavingError_Reason()
}

type Record_SavingError_StatusTypeRestricted_ struct {
	// Перевод статуса запрещён
	StatusTypeRestricted *Record_SavingError_StatusTypeRestricted `protobuf:"bytes,1,opt,name=status_type_restricted,json=statusTypeRestricted,proto3,oneof"`
}

type Record_SavingError_UidExist_ struct {
	// Запись уже существует
	UidExist *Record_SavingError_UidExist `protobuf:"bytes,2,opt,name=uid_exist,json=uidExist,proto3,oneof"`
}

type Record_SavingError_OwnedByAnotherUser_ struct {
	// Вы не владелец
	OwnedByAnotherUser *Record_SavingError_OwnedByAnotherUser `protobuf:"bytes,3,opt,name=owned_by_another_user,json=ownedByAnotherUser,proto3,oneof"`
}

type Record_SavingError_AlreadyLinked_ struct {
	// Ключ уже использован
	AlreadyLinked *Record_SavingError_AlreadyLinked `protobuf:"bytes,4,opt,name=already_linked,json=alreadyLinked,proto3,oneof"`
}

type Record_SavingError_Conflict_ struct {
	// Конфликт версий
	Conflict *Record_SavingError_Conflict `protobuf:"bytes,5,opt,name=conflict,proto3,oneof"`
}

func (*Record_SavingError_StatusTypeRestricted_) isRecord_SavingError_Reason() {}

func (*Record_SavingError_UidExist_) isRecord_SavingError_Reason() {}

func (*Record_SavingError_OwnedByAnotherUser_) isRecord_SavingError_Reason() {}

func (*Record_SavingError_AlreadyLinked_) isRecord_SavingError_Reason() {}

func (*Record_SavingError_Conflict_) isRecord_SavingError_Reason() {}

// Причины:
// - Недопустимый перевод статуса.
// - Не переданы обязательные поля https://openapi-key.deploy.rtkit.dev/keyapis_rfidregistry_v1/#таблица-обязательности-передачи-полей-в-request
type Record_SavingError_StatusTypeRestricted struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*Record_SavingError_StatusTypeRestricted) ProtoMessage() {}

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

// Причины:
// - Ключ уже существует
type Record_SavingError_UidExist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*Record_SavingError_UidExist) ProtoMessage() {}

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

// Причины:
// - Запись принадлежит другому пользователю
type Record_SavingError_OwnedByAnotherUser struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*Record_SavingError_OwnedByAnotherUser) ProtoMessage() {}

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

// Причины:
// - Такой ключ уже привязан к другой записи
type Record_SavingError_AlreadyLinked struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*Record_SavingError_AlreadyLinked) ProtoMessage() {}

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

// Причины:
// - В базе хранится более новая версия записи, значения changed_at отличаются
type Record_SavingError_Conflict struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*Record_SavingError_Conflict) ProtoMessage() {}

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

// Ошибка запроса сохранения записи
type PostRecordResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*PostRecordResponse_Error_Validation
	//	*PostRecordResponse_Error_Saving
	Reason isPostRecordResponse_Error_Reason `protobuf_oneof:"reason"`
}

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

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

func (*PostRecordResponse_Error) ProtoMessage() {}

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

func (m *PostRecordResponse_Error) GetReason() isPostRecordResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostRecordResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*PostRecordResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

func (x *PostRecordResponse_Error) GetSaving() *Record_SavingError {
	if x, ok := x.GetReason().(*PostRecordResponse_Error_Saving); ok {
		return x.Saving
	}
	return nil
}

type isPostRecordResponse_Error_Reason interface {
	isPostRecordResponse_Error_Reason()
}

type PostRecordResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

type PostRecordResponse_Error_Saving struct {
	// Ошибка сохранения записи
	Saving *Record_SavingError `protobuf:"bytes,2,opt,name=saving,proto3,oneof"`
}

func (*PostRecordResponse_Error_Validation) isPostRecordResponse_Error_Reason() {}

func (*PostRecordResponse_Error_Saving) isPostRecordResponse_Error_Reason() {}

// Ошибка запроса получения количества записей
type GetRecordCountResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetRecordCountResponse_Error_Validation
	Reason isGetRecordCountResponse_Error_Reason `protobuf_oneof:"reason"`
}

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

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

func (*GetRecordCountResponse_Error) ProtoMessage() {}

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

func (m *GetRecordCountResponse_Error) GetReason() isGetRecordCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetRecordCountResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*GetRecordCountResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isGetRecordCountResponse_Error_Reason interface {
	isGetRecordCountResponse_Error_Reason()
}

type GetRecordCountResponse_Error_Validation struct {
	// Ошибка фильтрации записей
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*GetRecordCountResponse_Error_Validation) isGetRecordCountResponse_Error_Reason() {}

// Ошибка запроса получения списка записей
type GetRecordListResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetRecordListResponse_Error_Validation
	Reason isGetRecordListResponse_Error_Reason `protobuf_oneof:"reason"`
}

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

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

func (*GetRecordListResponse_Error) ProtoMessage() {}

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

func (m *GetRecordListResponse_Error) GetReason() isGetRecordListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetRecordListResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*GetRecordListResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isGetRecordListResponse_Error_Reason interface {
	isGetRecordListResponse_Error_Reason()
}

type GetRecordListResponse_Error_Validation struct {
	// Ошибка фильтрации записей
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*GetRecordListResponse_Error_Validation) isGetRecordListResponse_Error_Reason() {}

// Ошибка удаления записи
type DeleteRecordResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*DeleteRecordResponse_Error_Validation
	Reason isDeleteRecordResponse_Error_Reason `protobuf_oneof:"reason"`
}

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

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

func (*DeleteRecordResponse_Error) ProtoMessage() {}

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

func (m *DeleteRecordResponse_Error) GetReason() isDeleteRecordResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *DeleteRecordResponse_Error) GetValidation() *ValidationError {
	if x, ok := x.GetReason().(*DeleteRecordResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isDeleteRecordResponse_Error_Reason interface {
	isDeleteRecordResponse_Error_Reason()
}

type DeleteRecordResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*DeleteRecordResponse_Error_Validation) isDeleteRecordResponse_Error_Reason() {}

var File_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto protoreflect.FileDescriptor

var file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDesc = []byte{
	0x0a, 0x3c, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x5f, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x72,
	0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x76, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
	0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65,
	0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x88, 0x16, 0x0a, 0x06, 0x52, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x4a, 0x0a, 0x09, 0x72, 0x66, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76,
	0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x52, 0x66, 0x69, 0x64, 0x54, 0x79, 0x70,
	0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x72, 0x66, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x5c, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e,
	0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15,
	0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x50, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
	0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6e, 0x65, 0x77, 0x5f, 0x61,
	0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x6e, 0x65, 0x77, 0x41, 0x74, 0x12,
	0x3e, 0x0a, 0x0a, 0x73, 0x68, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42,
	0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x68, 0x69, 0x70, 0x70, 0x65, 0x64, 0x41, 0x74, 0x12,
	0x3c, 0x0a, 0x09, 0x64, 0x65, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03,
	0xe0, 0x41, 0x03, 0x52, 0x08, 0x64, 0x65, 0x66, 0x65, 0x63, 0x74, 0x41, 0x74, 0x12, 0x3b, 0x0a,
	0x09, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x52, 0x07, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x41, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x69, 0x6e,
	0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x66, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x52, 0x0b, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x52, 0x66, 0x69, 0x64, 0x49, 0x64, 0x12, 0x47, 0x0a,
	0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64,
	0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f,
	0x72, 0x64, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x09, 0x64, 0x61, 0x74,
	0x61, 0x43, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x61, 0x63, 0x6b, 0x61,
	0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x62, 0x6f, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6f,
	0x78, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66,
	0x6f, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70,
	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x12,
	0x3e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42,
	0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x12,
	0x69, 0x0a, 0x16, 0x61, 0x65, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x33, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
	0x2e, 0x41, 0x65, 0x73, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x61, 0x65, 0x73, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x08, 0x74, 0x72,
	0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73,
	0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x54, 0x72,
	0x61, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12,
	0x26, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
	0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65,
	0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72,
	0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65,
	0x72, 0x41, 0x74, 0x12, 0x59, 0x0a, 0x18, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
	0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x52,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22,
	0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01,
	0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74,
	0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
	0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
	0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
	0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x76, 0x0a, 0x1a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x18, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e,
	0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52,
	0x18, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
	0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x5d, 0x0a, 0x08, 0x44, 0x61, 0x74,
	0x61, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x73, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12,
	0x17, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4d, 0x0a, 0x13, 0x41, 0x65, 0x73, 0x4b,
	0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17,
	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x80, 0x01, 0x0a, 0x07, 0x54, 0x72, 0x61, 0x69,
	0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72,
	0x12, 0x18, 0x0a, 0x05, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x41, 0x12, 0x18, 0x0a, 0x05, 0x6b, 0x65,
	0x79, 0x5f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04,
	0x6b, 0x65, 0x79, 0x42, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d,
	0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a,
	0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x1a, 0xea, 0x04, 0x0a, 0x0b, 0x53,
	0x61, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x78, 0x0a, 0x16, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69,
	0x63, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
	0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x61, 0x76, 0x69,
	0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x14,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69,
	0x63, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x09, 0x75, 0x69, 0x64, 0x5f, 0x65, 0x78, 0x69, 0x73,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76,
	0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x2e, 0x55, 0x69, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52,
	0x08, 0x75, 0x69, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x73, 0x0a, 0x15, 0x6f, 0x77, 0x6e,
	0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x75, 0x73,
	0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
	0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x41, 0x6e, 0x6f,
	0x74, 0x68, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x77, 0x6e, 0x65,
	0x64, 0x42, 0x79, 0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x62,
	0x0a, 0x0e, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31,
	0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x2e, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x65,
	0x64, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4c, 0x69, 0x6e, 0x6b,
	0x65, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72,
	0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52,
	0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f,
	0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x1a, 0x16, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x1a, 0x0a,
	0x0a, 0x08, 0x55, 0x69, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x1a, 0x14, 0x0a, 0x12, 0x4f, 0x77,
	0x6e, 0x65, 0x64, 0x42, 0x79, 0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72,
	0x1a, 0x0f, 0x0a, 0x0d, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x65,
	0x64, 0x1a, 0x0a, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x08, 0x0a,
	0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x08, 0x52, 0x66, 0x69, 0x64, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x46, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f,
	0x42, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x08, 0x0a,
	0x04, 0x42, 0x41, 0x4e, 0x44, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x49, 0x43, 0x4b,
	0x45, 0x52, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x54,
	0x41, 0x47, 0x10, 0x05, 0x22, 0x48, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4c, 0x30, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,
	0x53, 0x4c, 0x31, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4c, 0x33, 0x10, 0x03, 0x22, 0x53,
	0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13,
	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x0b,
	0x0a, 0x07, 0x53, 0x48, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44,
	0x45, 0x46, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x5f, 0x55, 0x53,
	0x45, 0x10, 0x04, 0x22, 0x6f, 0x0a, 0x18, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x26, 0x0a, 0x22, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
	0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x49, 0x46, 0x41, 0x52,
	0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03,
	0x55, 0x48, 0x46, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x4d, 0x5f, 0x4d, 0x41, 0x52, 0x49,
	0x4e, 0x45, 0x10, 0x04, 0x22, 0x96, 0x07, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x66, 0x69, 0x64, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x52, 0x66, 0x69, 0x64, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x66, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x59,
	0x0a, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
	0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x69, 0x64,
	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a,
	0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20,
	0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66,
	0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52,
	0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0f,
	0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x66, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18,
	0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x52, 0x66, 0x69, 0x64,
	0x49, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64,
	0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65,
	0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e,
	0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x19, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65,
	0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f,
	0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x69, 0x6e, 0x55, 0x73, 0x65,
	0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73,
	0x12, 0x39, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x74,
	0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x44, 0x0a,
	0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x68, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x61,
	0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x68, 0x69, 0x70, 0x70, 0x65,
	0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x68, 0x69, 0x70, 0x70,
	0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x53, 0x68, 0x69, 0x70,
	0x70, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28,
	0x05, 0x52, 0x10, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6f,
	0x78, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69,
	0x6e, 0x66, 0x6f, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05,
	0x52, 0x11, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x6c, 0x61,
	0x63, 0x65, 0x73, 0x12, 0x78, 0x0a, 0x1b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
	0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x9f, 0x03,
	0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x55,
	0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e,
	0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x72, 0x64,
	0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42,
	0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22,
	0x6e, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19,
	0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x45, 0x57,
	0x5f, 0x41, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44,
	0x5f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x41,
	0x54, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4e, 0x55, 0x4d,
	0x42, 0x45, 0x52, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x41, 0x4e, 0x4b, 0x10, 0x05, 0x22,
	0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59,
	0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
	0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x02, 0x22,
	0x4d, 0x0a, 0x11, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69,
	0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc5,
	0x02, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66,
	0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x49, 0x0a, 0x05,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
	0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00,
	0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0xa4, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x4a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a,
	0x06, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53,
	0x61, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x61,
	0x76, 0x69, 0x6e, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06,
	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x27, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22,
	0x52, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69,
	0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06,
	0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73,
	0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xe4, 0x01, 0x0a, 0x16,
	0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x05,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
	0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x5d, 0x0a, 0x05, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
	0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x66,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
	0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
	0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x70,
	0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x83, 0x02, 0x0a, 0x15, 0x47, 0x65,
	0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64,
	0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f,
	0x72, 0x64, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, 0x0a, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x5d, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x4a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a,
	0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22,
	0x2a, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0xca, 0x01, 0x0a, 0x14,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66,
	0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x1a, 0x5d, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x0a, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67,
	0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
	0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x70,
	0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04,
	0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x32, 0x82, 0x06, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65,
	0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x12, 0x2a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72,
	0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x2b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72,
	0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52,
	0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x72, 0x66, 0x69, 0x64, 0x72,
	0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72,
	0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x12, 0x29, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66,
	0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
	0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67,
	0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f,
	0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x22, 0x12, 0x20, 0x2f, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
	0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f,
	0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9a, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f,
	0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f,
	0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30,
	0x01, 0x12, 0x9c, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72,
	0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72,
	0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f,
	0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x95, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72,
	0x64, 0x12, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64,
	0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x2d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x2a, 0x20, 0x2f, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67,
	0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0xc2, 0x01, 0x0a, 0x1a, 0x72, 0x75, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x42, 0x1a, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x52, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x56, 0x31, 0x50, 0x72,
	0x6f, 0x74, 0x6f, 0x48, 0x03, 0x50, 0x00, 0x5a, 0x18, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x5f, 0x72, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x76,
	0x31, 0xd8, 0x01, 0x01, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x15, 0x4b, 0x45, 0x59, 0x41, 0x50, 0x49,
	0x53, 0x52, 0x46, 0x49, 0x44, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x56, 0x31, 0xaa,
	0x02, 0x17, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x52, 0x66, 0x69, 0x64, 0x72, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x4b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x5c, 0x52, 0x66, 0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
	0x5c, 0x56, 0x31, 0xea, 0x02, 0x17, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x3a, 0x52, 0x66,
	0x69, 0x64, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDescOnce sync.Once
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDescData = file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDesc
)

func file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDescGZIP() []byte {
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDescOnce.Do(func() {
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDescData = protoimpl.X.CompressGZIP(file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDescData)
	})
	return file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDescData
}

var file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
var file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
var file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_goTypes = []interface{}{
	(Record_RfidType)(0),                            // 0: keyapis.rfidregistry.v1.Record.RfidType
	(Record_EncryptionType)(0),                      // 1: keyapis.rfidregistry.v1.Record.EncryptionType
	(Record_StatusType)(0),                          // 2: keyapis.rfidregistry.v1.Record.StatusType
	(Record_IdentificationMethodType)(0),            // 3: keyapis.rfidregistry.v1.Record.IdentificationMethodType
	(RecordPaging_OrderByType)(0),                   // 4: keyapis.rfidregistry.v1.RecordPaging.OrderByType
	(RecordPaging_DirectionType)(0),                 // 5: keyapis.rfidregistry.v1.RecordPaging.DirectionType
	(*Record)(nil),                                  // 6: keyapis.rfidregistry.v1.Record
	(*RecordFilter)(nil),                            // 7: keyapis.rfidregistry.v1.RecordFilter
	(*RecordPaging)(nil),                            // 8: keyapis.rfidregistry.v1.RecordPaging
	(*PostRecordRequest)(nil),                       // 9: keyapis.rfidregistry.v1.PostRecordRequest
	(*PostRecordResponse)(nil),                      // 10: keyapis.rfidregistry.v1.PostRecordResponse
	(*GetRecordRequest)(nil),                        // 11: keyapis.rfidregistry.v1.GetRecordRequest
	(*GetRecordResponse)(nil),                       // 12: keyapis.rfidregistry.v1.GetRecordResponse
	(*GetRecordCountRequest)(nil),                   // 13: keyapis.rfidregistry.v1.GetRecordCountRequest
	(*GetRecordCountResponse)(nil),                  // 14: keyapis.rfidregistry.v1.GetRecordCountResponse
	(*GetRecordListRequest)(nil),                    // 15: keyapis.rfidregistry.v1.GetRecordListRequest
	(*GetRecordListResponse)(nil),                   // 16: keyapis.rfidregistry.v1.GetRecordListResponse
	(*DeleteRecordRequest)(nil),                     // 17: keyapis.rfidregistry.v1.DeleteRecordRequest
	(*DeleteRecordResponse)(nil),                    // 18: keyapis.rfidregistry.v1.DeleteRecordResponse
	(*ValidationError)(nil),                         // 19: keyapis.rfidregistry.v1.ValidationError
	(*Record_DataCell)(nil),                         // 20: keyapis.rfidregistry.v1.Record.DataCell
	(*Record_AesKeyConfiguration)(nil),              // 21: keyapis.rfidregistry.v1.Record.AesKeyConfiguration
	(*Record_Trailer)(nil),                          // 22: keyapis.rfidregistry.v1.Record.Trailer
	(*Record_SavingError)(nil),                      // 23: keyapis.rfidregistry.v1.Record.SavingError
	(*Record_SavingError_StatusTypeRestricted)(nil), // 24: keyapis.rfidregistry.v1.Record.SavingError.StatusTypeRestricted
	(*Record_SavingError_UidExist)(nil),             // 25: keyapis.rfidregistry.v1.Record.SavingError.UidExist
	(*Record_SavingError_OwnedByAnotherUser)(nil),   // 26: keyapis.rfidregistry.v1.Record.SavingError.OwnedByAnotherUser
	(*Record_SavingError_AlreadyLinked)(nil),        // 27: keyapis.rfidregistry.v1.Record.SavingError.AlreadyLinked
	(*Record_SavingError_Conflict)(nil),             // 28: keyapis.rfidregistry.v1.Record.SavingError.Conflict
	(*PostRecordResponse_Error)(nil),                // 29: keyapis.rfidregistry.v1.PostRecordResponse.Error
	(*GetRecordCountResponse_Error)(nil),            // 30: keyapis.rfidregistry.v1.GetRecordCountResponse.Error
	(*GetRecordListResponse_Error)(nil),             // 31: keyapis.rfidregistry.v1.GetRecordListResponse.Error
	(*DeleteRecordResponse_Error)(nil),              // 32: keyapis.rfidregistry.v1.DeleteRecordResponse.Error
	(*timestamppb.Timestamp)(nil),                   // 33: google.protobuf.Timestamp
	(*wrapperspb.StringValue)(nil),                  // 34: google.protobuf.StringValue
	(*wrapperspb.BoolValue)(nil),                    // 35: google.protobuf.BoolValue
}
var file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_depIdxs = []int32{
	0,  // 0: keyapis.rfidregistry.v1.Record.rfid_type:type_name -> keyapis.rfidregistry.v1.Record.RfidType
	1,  // 1: keyapis.rfidregistry.v1.Record.encryption_type:type_name -> keyapis.rfidregistry.v1.Record.EncryptionType
	2,  // 2: keyapis.rfidregistry.v1.Record.status_type:type_name -> keyapis.rfidregistry.v1.Record.StatusType
	33, // 3: keyapis.rfidregistry.v1.Record.new_at:type_name -> google.protobuf.Timestamp
	33, // 4: keyapis.rfidregistry.v1.Record.shipped_at:type_name -> google.protobuf.Timestamp
	33, // 5: keyapis.rfidregistry.v1.Record.defect_at:type_name -> google.protobuf.Timestamp
	33, // 6: keyapis.rfidregistry.v1.Record.in_use_at:type_name -> google.protobuf.Timestamp
	34, // 7: keyapis.rfidregistry.v1.Record.in_use_rfid_id:type_name -> google.protobuf.StringValue
	20, // 8: keyapis.rfidregistry.v1.Record.data_cells:type_name -> keyapis.rfidregistry.v1.Record.DataCell
	33, // 9: keyapis.rfidregistry.v1.Record.changed_at:type_name -> google.protobuf.Timestamp
	21, // 10: keyapis.rfidregistry.v1.Record.aes_key_configurations:type_name -> keyapis.rfidregistry.v1.Record.AesKeyConfiguration
	22, // 11: keyapis.rfidregistry.v1.Record.trailers:type_name -> keyapis.rfidregistry.v1.Record.Trailer
	33, // 12: keyapis.rfidregistry.v1.Record.order_at:type_name -> google.protobuf.Timestamp
	34, // 13: keyapis.rfidregistry.v1.Record.in_use_resource_owner_id:type_name -> google.protobuf.StringValue
	33, // 14: keyapis.rfidregistry.v1.Record.deleted_at:type_name -> google.protobuf.Timestamp
	34, // 15: keyapis.rfidregistry.v1.Record.vendor_name:type_name -> google.protobuf.StringValue
	3,  // 16: keyapis.rfidregistry.v1.Record.identification_method_type:type_name -> keyapis.rfidregistry.v1.Record.IdentificationMethodType
	0,  // 17: keyapis.rfidregistry.v1.RecordFilter.rfid_types:type_name -> keyapis.rfidregistry.v1.Record.RfidType
	1,  // 18: keyapis.rfidregistry.v1.RecordFilter.encryption_types:type_name -> keyapis.rfidregistry.v1.Record.EncryptionType
	2,  // 19: keyapis.rfidregistry.v1.RecordFilter.status_types:type_name -> keyapis.rfidregistry.v1.Record.StatusType
	35, // 20: keyapis.rfidregistry.v1.RecordFilter.is_deleted:type_name -> google.protobuf.BoolValue
	34, // 21: keyapis.rfidregistry.v1.RecordFilter.text:type_name -> google.protobuf.StringValue
	33, // 22: keyapis.rfidregistry.v1.RecordFilter.start_shipped_at:type_name -> google.protobuf.Timestamp
	33, // 23: keyapis.rfidregistry.v1.RecordFilter.end_shipped_at:type_name -> google.protobuf.Timestamp
	3,  // 24: keyapis.rfidregistry.v1.RecordFilter.identification_method_types:type_name -> keyapis.rfidregistry.v1.Record.IdentificationMethodType
	4,  // 25: keyapis.rfidregistry.v1.RecordPaging.order_by_type:type_name -> keyapis.rfidregistry.v1.RecordPaging.OrderByType
	5,  // 26: keyapis.rfidregistry.v1.RecordPaging.direction_type:type_name -> keyapis.rfidregistry.v1.RecordPaging.DirectionType
	6,  // 27: keyapis.rfidregistry.v1.PostRecordRequest.data:type_name -> keyapis.rfidregistry.v1.Record
	6,  // 28: keyapis.rfidregistry.v1.PostRecordResponse.data:type_name -> keyapis.rfidregistry.v1.Record
	29, // 29: keyapis.rfidregistry.v1.PostRecordResponse.error:type_name -> keyapis.rfidregistry.v1.PostRecordResponse.Error
	6,  // 30: keyapis.rfidregistry.v1.GetRecordResponse.data:type_name -> keyapis.rfidregistry.v1.Record
	7,  // 31: keyapis.rfidregistry.v1.GetRecordCountRequest.filter:type_name -> keyapis.rfidregistry.v1.RecordFilter
	30, // 32: keyapis.rfidregistry.v1.GetRecordCountResponse.error:type_name -> keyapis.rfidregistry.v1.GetRecordCountResponse.Error
	7,  // 33: keyapis.rfidregistry.v1.GetRecordListRequest.filter:type_name -> keyapis.rfidregistry.v1.RecordFilter
	8,  // 34: keyapis.rfidregistry.v1.GetRecordListRequest.paging:type_name -> keyapis.rfidregistry.v1.RecordPaging
	6,  // 35: keyapis.rfidregistry.v1.GetRecordListResponse.data:type_name -> keyapis.rfidregistry.v1.Record
	31, // 36: keyapis.rfidregistry.v1.GetRecordListResponse.error:type_name -> keyapis.rfidregistry.v1.GetRecordListResponse.Error
	32, // 37: keyapis.rfidregistry.v1.DeleteRecordResponse.error:type_name -> keyapis.rfidregistry.v1.DeleteRecordResponse.Error
	24, // 38: keyapis.rfidregistry.v1.Record.SavingError.status_type_restricted:type_name -> keyapis.rfidregistry.v1.Record.SavingError.StatusTypeRestricted
	25, // 39: keyapis.rfidregistry.v1.Record.SavingError.uid_exist:type_name -> keyapis.rfidregistry.v1.Record.SavingError.UidExist
	26, // 40: keyapis.rfidregistry.v1.Record.SavingError.owned_by_another_user:type_name -> keyapis.rfidregistry.v1.Record.SavingError.OwnedByAnotherUser
	27, // 41: keyapis.rfidregistry.v1.Record.SavingError.already_linked:type_name -> keyapis.rfidregistry.v1.Record.SavingError.AlreadyLinked
	28, // 42: keyapis.rfidregistry.v1.Record.SavingError.conflict:type_name -> keyapis.rfidregistry.v1.Record.SavingError.Conflict
	19, // 43: keyapis.rfidregistry.v1.PostRecordResponse.Error.validation:type_name -> keyapis.rfidregistry.v1.ValidationError
	23, // 44: keyapis.rfidregistry.v1.PostRecordResponse.Error.saving:type_name -> keyapis.rfidregistry.v1.Record.SavingError
	19, // 45: keyapis.rfidregistry.v1.GetRecordCountResponse.Error.validation:type_name -> keyapis.rfidregistry.v1.ValidationError
	19, // 46: keyapis.rfidregistry.v1.GetRecordListResponse.Error.validation:type_name -> keyapis.rfidregistry.v1.ValidationError
	19, // 47: keyapis.rfidregistry.v1.DeleteRecordResponse.Error.validation:type_name -> keyapis.rfidregistry.v1.ValidationError
	9,  // 48: keyapis.rfidregistry.v1.RecordService.PostRecord:input_type -> keyapis.rfidregistry.v1.PostRecordRequest
	11, // 49: keyapis.rfidregistry.v1.RecordService.GetRecord:input_type -> keyapis.rfidregistry.v1.GetRecordRequest
	15, // 50: keyapis.rfidregistry.v1.RecordService.GetRecordList:input_type -> keyapis.rfidregistry.v1.GetRecordListRequest
	13, // 51: keyapis.rfidregistry.v1.RecordService.GetRecordCount:input_type -> keyapis.rfidregistry.v1.GetRecordCountRequest
	17, // 52: keyapis.rfidregistry.v1.RecordService.DeleteRecord:input_type -> keyapis.rfidregistry.v1.DeleteRecordRequest
	10, // 53: keyapis.rfidregistry.v1.RecordService.PostRecord:output_type -> keyapis.rfidregistry.v1.PostRecordResponse
	12, // 54: keyapis.rfidregistry.v1.RecordService.GetRecord:output_type -> keyapis.rfidregistry.v1.GetRecordResponse
	16, // 55: keyapis.rfidregistry.v1.RecordService.GetRecordList:output_type -> keyapis.rfidregistry.v1.GetRecordListResponse
	14, // 56: keyapis.rfidregistry.v1.RecordService.GetRecordCount:output_type -> keyapis.rfidregistry.v1.GetRecordCountResponse
	18, // 57: keyapis.rfidregistry.v1.RecordService.DeleteRecord:output_type -> keyapis.rfidregistry.v1.DeleteRecordResponse
	53, // [53:58] is the sub-list for method output_type
	48, // [48:53] is the sub-list for method input_type
	48, // [48:48] is the sub-list for extension type_name
	48, // [48:48] is the sub-list for extension extendee
	0,  // [0:48] is the sub-list for field type_name
}

func init() { file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_init() }
func file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_init() {
	if File_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RecordFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RecordPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostRecordRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostRecordResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecordRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecordResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecordCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecordCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecordListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecordListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteRecordRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteRecordResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_DataCell); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_AesKeyConfiguration); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_Trailer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_SavingError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_SavingError_StatusTypeRestricted); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_SavingError_UidExist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_SavingError_OwnedByAnotherUser); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_SavingError_AlreadyLinked); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Record_SavingError_Conflict); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostRecordResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecordCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRecordListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteRecordResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[4].OneofWrappers = []interface{}{
		(*PostRecordResponse_Data)(nil),
		(*PostRecordResponse_Error_)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[6].OneofWrappers = []interface{}{
		(*GetRecordResponse_Data)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[8].OneofWrappers = []interface{}{
		(*GetRecordCountResponse_Data)(nil),
		(*GetRecordCountResponse_Error_)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[9].OneofWrappers = []interface{}{
		(*GetRecordListRequest_Paging)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[10].OneofWrappers = []interface{}{
		(*GetRecordListResponse_Data)(nil),
		(*GetRecordListResponse_Error_)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[12].OneofWrappers = []interface{}{
		(*DeleteRecordResponse_Error_)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[17].OneofWrappers = []interface{}{
		(*Record_SavingError_StatusTypeRestricted_)(nil),
		(*Record_SavingError_UidExist_)(nil),
		(*Record_SavingError_OwnedByAnotherUser_)(nil),
		(*Record_SavingError_AlreadyLinked_)(nil),
		(*Record_SavingError_Conflict_)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[23].OneofWrappers = []interface{}{
		(*PostRecordResponse_Error_Validation)(nil),
		(*PostRecordResponse_Error_Saving)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[24].OneofWrappers = []interface{}{
		(*GetRecordCountResponse_Error_Validation)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[25].OneofWrappers = []interface{}{
		(*GetRecordListResponse_Error_Validation)(nil),
	}
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes[26].OneofWrappers = []interface{}{
		(*DeleteRecordResponse_Error_Validation)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDesc,
			NumEnums:      6,
			NumMessages:   27,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_goTypes,
		DependencyIndexes: file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_depIdxs,
		EnumInfos:         file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_enumTypes,
		MessageInfos:      file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_msgTypes,
	}.Build()
	File_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto = out.File
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_rawDesc = nil
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_goTypes = nil
	file_keyapis_rfidregistry_v1_keyapis_rfidregistry_record_v1_proto_depIdxs = nil
}
