//
//Сервис реализует функционал управления приложениями

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

package keyapis_multiapp_v1

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	_ "google.golang.org/genproto/googleapis/api/visibility"
	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 App_Type int32

const (
	// Значение не указано
	App_TYPE_UNKNOWN App_Type = 0
	// Стандартное приложение
	App_STANDARD App_Type = 1
)

// Enum value maps for App_Type.
var (
	App_Type_name = map[int32]string{
		0: "TYPE_UNKNOWN",
		1: "STANDARD",
	}
	App_Type_value = map[string]int32{
		"TYPE_UNKNOWN": 0,
		"STANDARD":     1,
	}
)

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

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

func (App_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[0].Descriptor()
}

func (App_Type) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[0]
}

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

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

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

const (
	// Значение не указано
	App_STATUS_TYPE_UNKNOWN App_StatusType = 0
	// Заблокирован
	App_BLOCKED App_StatusType = 1
	// Активен
	App_ACTIVE App_StatusType = 2
	// Удален
	App_DELETED App_StatusType = 3
)

// Enum value maps for App_StatusType.
var (
	App_StatusType_name = map[int32]string{
		0: "STATUS_TYPE_UNKNOWN",
		1: "BLOCKED",
		2: "ACTIVE",
		3: "DELETED",
	}
	App_StatusType_value = map[string]int32{
		"STATUS_TYPE_UNKNOWN": 0,
		"BLOCKED":             1,
		"ACTIVE":              2,
		"DELETED":             3,
	}
)

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

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

func (App_StatusType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[1].Descriptor()
}

func (App_StatusType) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[1]
}

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

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

// Справочник платформ.
// # Тип: byte
type App_PlatformType int32

const (
	// Значение не указано
	App_PLATFORM_TYPE_UNKNOWN App_PlatformType = 0
	// Платформа iOS.
	// Приложение размещается в App Store
	App_IOS App_PlatformType = 1
	// Платформа Android.
	// Приложение размещается в Google Play, App Gallery или прочих сторах
	App_ANDROID App_PlatformType = 2
	// Платформа Web.
	// Приложение размещается по интернет адресу
	App_WEB App_PlatformType = 3
)

// Enum value maps for App_PlatformType.
var (
	App_PlatformType_name = map[int32]string{
		0: "PLATFORM_TYPE_UNKNOWN",
		1: "IOS",
		2: "ANDROID",
		3: "WEB",
	}
	App_PlatformType_value = map[string]int32{
		"PLATFORM_TYPE_UNKNOWN": 0,
		"IOS":                   1,
		"ANDROID":               2,
		"WEB":                   3,
	}
)

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

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

func (App_PlatformType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[2].Descriptor()
}

func (App_PlatformType) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[2]
}

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

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

// Справочник разрешений
type App_GrantType int32

const (
	// Значение не указано
	App_GRANT_TYPE_UNKNOWN App_GrantType = 0
	// Разрешение на получение авторизационного токена посредством метода GET /multiapp/api/v1/partner/token
	App_GET_ACCESS_TOKEN App_GrantType = 1
	// Разрешение на получение идентификационного доступа посредством метода GET /multiapp/api/v1/partner/token
	App_GET_ID_TOKEN App_GrantType = 2
	// Разрешение на отправку уведомлений без проверки назначений приложения методом POST /multiapp/api/v1/notification
	App_POST_NOTIF_NO_ASSIGN_CHECK App_GrantType = 3
)

// Enum value maps for App_GrantType.
var (
	App_GrantType_name = map[int32]string{
		0: "GRANT_TYPE_UNKNOWN",
		1: "GET_ACCESS_TOKEN",
		2: "GET_ID_TOKEN",
		3: "POST_NOTIF_NO_ASSIGN_CHECK",
	}
	App_GrantType_value = map[string]int32{
		"GRANT_TYPE_UNKNOWN":         0,
		"GET_ACCESS_TOKEN":           1,
		"GET_ID_TOKEN":               2,
		"POST_NOTIF_NO_ASSIGN_CHECK": 3,
	}
)

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

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

func (App_GrantType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[3].Descriptor()
}

func (App_GrantType) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[3]
}

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

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

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

const (
	// Значение не указано
	App_Link_TYPE_UNKNOWN App_Link_Type = 0
	// Ссылка для перехода на раздел текущего приложения
	App_Link_INTERNAL_APP App_Link_Type = 1
	// Ссылка для перехода на стороннее приложение
	App_Link_EXTERNAL_APP App_Link_Type = 2
	// Ссылка для перехода на веб-вью внутренних (своих) приложений.
	// В окне отсутствует адресаная строка.
	// Для iOS используется WKWebView, для Android используется WebView
	App_Link_WEB_VIEW App_Link_Type = 3
	// Ссылка для перехода на веб-браузер
	App_Link_WEB_BROWSER App_Link_Type = 4
	// Ссылка для перехода на веб-вью внешних (партнёрских) приложений.
	// В окне присутствует адресаная строка.
	// Для iOS используется SFSafariViewController, для Android используется ChromeCustomTabs
	App_Link_EXTERNAL_WEB_VIEW App_Link_Type = 5
)

// Enum value maps for App_Link_Type.
var (
	App_Link_Type_name = map[int32]string{
		0: "TYPE_UNKNOWN",
		1: "INTERNAL_APP",
		2: "EXTERNAL_APP",
		3: "WEB_VIEW",
		4: "WEB_BROWSER",
		5: "EXTERNAL_WEB_VIEW",
	}
	App_Link_Type_value = map[string]int32{
		"TYPE_UNKNOWN":      0,
		"INTERNAL_APP":      1,
		"EXTERNAL_APP":      2,
		"WEB_VIEW":          3,
		"WEB_BROWSER":       4,
		"EXTERNAL_WEB_VIEW": 5,
	}
)

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

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

func (App_Link_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[4].Descriptor()
}

func (App_Link_Type) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[4]
}

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

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

// Справочник разрешенных типов токена
type App_Permissions_AllowedTokenType int32

const (
	// Значение не указано
	App_Permissions_ALLOWED_TOKEN_TYPE_UNKNOWN App_Permissions_AllowedTokenType = 0
	// Идентификационный
	App_Permissions_ID App_Permissions_AllowedTokenType = 1
	// Авторизационный
	App_Permissions_ACCESS App_Permissions_AllowedTokenType = 2
)

// Enum value maps for App_Permissions_AllowedTokenType.
var (
	App_Permissions_AllowedTokenType_name = map[int32]string{
		0: "ALLOWED_TOKEN_TYPE_UNKNOWN",
		1: "ID",
		2: "ACCESS",
	}
	App_Permissions_AllowedTokenType_value = map[string]int32{
		"ALLOWED_TOKEN_TYPE_UNKNOWN": 0,
		"ID":                         1,
		"ACCESS":                     2,
	}
)

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

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

func (App_Permissions_AllowedTokenType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[5].Descriptor()
}

func (App_Permissions_AllowedTokenType) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[5]
}

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

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

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

const (
	// Значение не указано
	AppPaging_ORDER_BY_TYPE_UNKNOWN AppPaging_OrderByType = 0
	// Дата последнего изменения
	AppPaging_CHANGED_AT AppPaging_OrderByType = 1
	// Дата создания
	AppPaging_CREATED_AT AppPaging_OrderByType = 2
	// По рангу для поиска по тексту.
	// Применяется когда передано поле для поиска по тексту.
	// В случае если текстовое поле не передано, применяется значение по умолчанию
	AppPaging_RANK AppPaging_OrderByType = 3
)

// Enum value maps for AppPaging_OrderByType.
var (
	AppPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "CHANGED_AT",
		2: "CREATED_AT",
		3: "RANK",
	}
	AppPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"CHANGED_AT":            1,
		"CREATED_AT":            2,
		"RANK":                  3,
	}
)

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

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

func (AppPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[6].Descriptor()
}

func (AppPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[6]
}

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

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

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

const (
	// Значение не указано
	AppPaging_DIRECTION_TYPE_UNKNOWN AppPaging_DirectionType = 0
	// От большего к меньшему
	AppPaging_DESC AppPaging_DirectionType = 1
	// От меньшего к большему
	AppPaging_ASC AppPaging_DirectionType = 2
)

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

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

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

func (AppPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[7].Descriptor()
}

func (AppPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[7]
}

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

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

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

const (
	// Значение не указано
	AppLitePaging_ORDER_BY_TYPE_UNKNOWN AppLitePaging_OrderByType = 0
	// Дата последнего изменения
	AppLitePaging_CHANGED_AT AppLitePaging_OrderByType = 1
	// Дата создания
	AppLitePaging_CREATED_AT AppLitePaging_OrderByType = 2
)

// Enum value maps for AppLitePaging_OrderByType.
var (
	AppLitePaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "CHANGED_AT",
		2: "CREATED_AT",
	}
	AppLitePaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"CHANGED_AT":            1,
		"CREATED_AT":            2,
	}
)

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

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

func (AppLitePaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[8].Descriptor()
}

func (AppLitePaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[8]
}

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

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

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

const (
	// Значение не указано
	AppLitePaging_DIRECTION_TYPE_UNKNOWN AppLitePaging_DirectionType = 0
	// От большего к меньшему
	AppLitePaging_DESC AppLitePaging_DirectionType = 1
	// От меньшего к большему
	AppLitePaging_ASC AppLitePaging_DirectionType = 2
)

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

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

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

func (AppLitePaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[9].Descriptor()
}

func (AppLitePaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes[9]
}

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

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

// Приложение.
// # Описание модели
type App struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор.
	// Если не передан создаётся сервером.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Идентификатор партнера.
	// # Тип: Guid
	PartnerId string `protobuf:"bytes,2,opt,name=partner_id,json=partnerId,proto3" json:"partner_id,omitempty"`
	// Тип приложения
	Type App_Type `protobuf:"varint,3,opt,name=type,proto3,enum=keyapis.multiapp.v1.App_Type" json:"type,omitempty"`
	// Системное наименование.
	// Не отображается пользователям.
	// # Диапазон: 3..256
	Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	// Заголовок.
	// # Диапазон: 3..30
	Header *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=header,proto3" json:"header,omitempty"`
	// Подзаголовок.
	// # Диапазон: 3..60
	Subtitle *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=subtitle,proto3" json:"subtitle,omitempty"`
	// Цвет заднего плана(подложки).
	// Все цвета должны быть в формате hex #RRGGBBAA.
	// Пример: #7e00c380.
	// # Диапазон: 9..9.
	// # Паттерн: /^#[0-9a-fA-F]{8}$/
	BackgroundColor *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=background_color,json=backgroundColor,proto3" json:"background_color,omitempty"`
	// Статус приложения
	StatusType App_StatusType `protobuf:"varint,8,opt,name=status_type,json=statusType,proto3,enum=keyapis.multiapp.v1.App_StatusType" json:"status_type,omitempty"`
	// Ссылки для переходов.
	// # Диапазон: 0..100
	Links []*App_Link `protobuf:"bytes,9,rep,name=links,proto3" json:"links,omitempty"`
	// Список тегов пользователей.
	// Обязательное.
	// Описывает кто может видеть приложение.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 1..100.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	UserTags []string `protobuf:"bytes,10,rep,name=user_tags,json=userTags,proto3" json:"user_tags,omitempty"`
	// Список тегов приложений.
	// Обязательное.
	// Описывает какие клиенты могут видеть приложение.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 1..20.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	AppTags []string `protobuf:"bytes,11,rep,name=app_tags,json=appTags,proto3" json:"app_tags,omitempty"`
	// Дата создания.
	// # Тип: DateTime
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// При изменении должен совпадать со значением из БД.
	// Является версией объекта.
	// # Тип: DateTime
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Разрешения
	//
	// Deprecated: Marked as deprecated in keyapis/multiapp/v1/keyapis_multiapp_app_v1.proto.
	Permissions *App_Permissions `protobuf:"bytes,14,opt,name=permissions,proto3" json:"permissions,omitempty"`
	// Список разрешений
	GrantTypes []App_GrantType `protobuf:"varint,15,rep,packed,name=grant_types,json=grantTypes,proto3,enum=keyapis.multiapp.v1.App_GrantType" json:"grant_types,omitempty"`
}

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

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

func (*App) ProtoMessage() {}

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

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

func (x *App) GetPartnerId() string {
	if x != nil {
		return x.PartnerId
	}
	return ""
}

func (x *App) GetType() App_Type {
	if x != nil {
		return x.Type
	}
	return App_TYPE_UNKNOWN
}

func (x *App) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *App) GetHeader() *wrapperspb.StringValue {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *App) GetSubtitle() *wrapperspb.StringValue {
	if x != nil {
		return x.Subtitle
	}
	return nil
}

func (x *App) GetBackgroundColor() *wrapperspb.StringValue {
	if x != nil {
		return x.BackgroundColor
	}
	return nil
}

func (x *App) GetStatusType() App_StatusType {
	if x != nil {
		return x.StatusType
	}
	return App_STATUS_TYPE_UNKNOWN
}

func (x *App) GetLinks() []*App_Link {
	if x != nil {
		return x.Links
	}
	return nil
}

func (x *App) GetUserTags() []string {
	if x != nil {
		return x.UserTags
	}
	return nil
}

func (x *App) GetAppTags() []string {
	if x != nil {
		return x.AppTags
	}
	return nil
}

func (x *App) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

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

// Deprecated: Marked as deprecated in keyapis/multiapp/v1/keyapis_multiapp_app_v1.proto.
func (x *App) GetPermissions() *App_Permissions {
	if x != nil {
		return x.Permissions
	}
	return nil
}

func (x *App) GetGrantTypes() []App_GrantType {
	if x != nil {
		return x.GrantTypes
	}
	return nil
}

// Облегчённое приложение
type AppLite struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор.
	// # Тип: Guid
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Наименование.
	// Не отображается пользователям.
	// # Диапазон: 3..256
	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	// Заголовок.
	// # Диапазон: 3..30
	Header *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=header,proto3" json:"header,omitempty"`
	// Подзаголовок.
	// # Диапазон: 3..60
	Subtitle *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=subtitle,proto3" json:"subtitle,omitempty"`
	// Цвет заднего плана(подложки).
	// Все цвета должны быть в формате hex #RRGGBBAA.
	// Пример: #7e00c380.
	// # Диапазон: 9..9.
	// # Паттерн: /^#[0-9a-fA-F]{8}$/
	BackgroundColor *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=background_color,json=backgroundColor,proto3" json:"background_color,omitempty"`
	// Статус приложения
	StatusType App_StatusType `protobuf:"varint,6,opt,name=status_type,json=statusType,proto3,enum=keyapis.multiapp.v1.App_StatusType" json:"status_type,omitempty"`
	// Ссылки для переходов
	Links []*AppLite_LinkLite `protobuf:"bytes,7,rep,name=links,proto3" json:"links,omitempty"`
}

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

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

func (*AppLite) ProtoMessage() {}

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

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

func (x *AppLite) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *AppLite) GetHeader() *wrapperspb.StringValue {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *AppLite) GetSubtitle() *wrapperspb.StringValue {
	if x != nil {
		return x.Subtitle
	}
	return nil
}

func (x *AppLite) GetBackgroundColor() *wrapperspb.StringValue {
	if x != nil {
		return x.BackgroundColor
	}
	return nil
}

func (x *AppLite) GetStatusType() App_StatusType {
	if x != nil {
		return x.StatusType
	}
	return App_STATUS_TYPE_UNKNOWN
}

func (x *AppLite) GetLinks() []*AppLite_LinkLite {
	if x != nil {
		return x.Links
	}
	return nil
}

// Фильтр приложений
type AppFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По тексту.
	// Если значение не передано то поиск по нему не производится.
	// # Диапазон: 3..64.
	// # Поиск производится по полям:
	// # - Системное наименование;
	// # - Заголовок;
	// # - Подзаголовок;
	// # - Список тегов пользователей;
	// # - Список тегов приложений
	Text *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// По типам приложений
	Types []App_Type `protobuf:"varint,2,rep,packed,name=types,proto3,enum=keyapis.multiapp.v1.App_Type" json:"types,omitempty"`
	// По идентификаторам партнера.
	// # Тип: Guid
	PartnerIds []string `protobuf:"bytes,3,rep,name=partner_ids,json=partnerIds,proto3" json:"partner_ids,omitempty"`
	// По статусам приложений.
	// Если переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)
	StatusTypes []App_StatusType `protobuf:"varint,4,rep,packed,name=status_types,json=statusTypes,proto3,enum=keyapis.multiapp.v1.App_StatusType" json:"status_types,omitempty"`
	// По пользовательским тегам.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 0..20.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	UserTags []string `protobuf:"bytes,5,rep,name=user_tags,json=userTags,proto3" json:"user_tags,omitempty"`
	// По тегам приложений.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 0..20.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	AppTags []string `protobuf:"bytes,6,rep,name=app_tags,json=appTags,proto3" json:"app_tags,omitempty"`
}

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

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

func (*AppFilter) ProtoMessage() {}

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

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

func (x *AppFilter) GetTypes() []App_Type {
	if x != nil {
		return x.Types
	}
	return nil
}

func (x *AppFilter) GetPartnerIds() []string {
	if x != nil {
		return x.PartnerIds
	}
	return nil
}

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

func (x *AppFilter) GetUserTags() []string {
	if x != nil {
		return x.UserTags
	}
	return nil
}

func (x *AppFilter) GetAppTags() []string {
	if x != nil {
		return x.AppTags
	}
	return nil
}

// Упрощённый фильтр по приложениям
type AppLiteFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По типам приложений
	Types []App_Type `protobuf:"varint,1,rep,packed,name=types,proto3,enum=keyapis.multiapp.v1.App_Type" json:"types,omitempty"`
	// По тегам пользователя.
	// Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
	// # Диапазон: 1..20.
	// # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
	UserTags []string `protobuf:"bytes,2,rep,name=user_tags,json=userTags,proto3" json:"user_tags,omitempty"`
	// Тег для приложения
	AppLiteTag *AppLiteFilter_AppLiteTag `protobuf:"bytes,3,opt,name=app_lite_tag,json=appLiteTag,proto3" json:"app_lite_tag,omitempty"`
}

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

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

func (*AppLiteFilter) ProtoMessage() {}

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

func (x *AppLiteFilter) GetTypes() []App_Type {
	if x != nil {
		return x.Types
	}
	return nil
}

func (x *AppLiteFilter) GetUserTags() []string {
	if x != nil {
		return x.UserTags
	}
	return nil
}

func (x *AppLiteFilter) GetAppLiteTag() *AppLiteFilter_AppLiteTag {
	if x != nil {
		return x.AppLiteTag
	}
	return nil
}

// Пагинация приложений
type AppPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// Если значение не передано, то будет взято значение по умолчанию.
	// # По умолчанию: CHANGED_AT
	OrderByType AppPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.multiapp.v1.AppPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// # По умолчанию: DESC
	DirectionType AppPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.multiapp.v1.AppPaging_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 *AppPaging) Reset() {
	*x = AppPaging{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AppPaging) ProtoMessage() {}

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

func (x *AppPaging) GetOrderByType() AppPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return AppPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *AppPaging) GetDirectionType() AppPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return AppPaging_DIRECTION_TYPE_UNKNOWN
}

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

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

// Пагинация упрощенных приложений
type AppLitePaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// Если значение не передано, то будет взято значение по умолчанию.
	// # По умолчанию: CREATED_AT
	OrderByType AppLitePaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.multiapp.v1.AppLitePaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// # По умолчанию: DESC
	DirectionType AppLitePaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.multiapp.v1.AppLitePaging_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 *AppLitePaging) Reset() {
	*x = AppLitePaging{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AppLitePaging) ProtoMessage() {}

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

func (x *AppLitePaging) GetOrderByType() AppLitePaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return AppLitePaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *AppLitePaging) GetDirectionType() AppLitePaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return AppLitePaging_DIRECTION_TYPE_UNKNOWN
}

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

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

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

	// Приложение
	Data *App `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*PostAppRequest) ProtoMessage() {}

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

func (x *PostAppRequest) GetData() *App {
	if x != nil {
		return x.Data
	}
	return nil
}

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

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

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

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

func (*PostAppResponse) ProtoMessage() {}

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

func (m *PostAppResponse) GetType() isPostAppResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostAppResponse) GetData() *App {
	if x, ok := x.GetType().(*PostAppResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostAppResponse) GetError() *PostAppResponse_Error {
	if x, ok := x.GetType().(*PostAppResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostAppResponse_Type interface {
	isPostAppResponse_Type()
}

type PostAppResponse_Data struct {
	// Приложение
	Data *App `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*PostAppResponse_Data) isPostAppResponse_Type() {}

func (*PostAppResponse_Error_) isPostAppResponse_Type() {}

// Запрос получения приложения
type GetAppRequest 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 *GetAppRequest) Reset() {
	*x = GetAppRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetAppRequest) ProtoMessage() {}

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

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

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

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

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

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

func (*GetAppResponse) ProtoMessage() {}

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

func (m *GetAppResponse) GetType() isGetAppResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetAppResponse) GetData() *App {
	if x, ok := x.GetType().(*GetAppResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetAppResponse) GetError() *GetAppResponse_Error {
	if x, ok := x.GetType().(*GetAppResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetAppResponse_Type interface {
	isGetAppResponse_Type()
}

type GetAppResponse_Data struct {
	// Приложение
	Data *App `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetAppResponse_Data) isGetAppResponse_Type() {}

func (*GetAppResponse_Error_) isGetAppResponse_Type() {}

// Запрос получения упрощённого приложения
type GetAppLiteRequest 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 *GetAppLiteRequest) Reset() {
	*x = GetAppLiteRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetAppLiteRequest) ProtoMessage() {}

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

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

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

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

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

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

func (*GetAppLiteResponse) ProtoMessage() {}

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

func (m *GetAppLiteResponse) GetType() isGetAppLiteResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetAppLiteResponse) GetData() *AppLite {
	if x, ok := x.GetType().(*GetAppLiteResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetAppLiteResponse) GetError() *GetAppLiteResponse_Error {
	if x, ok := x.GetType().(*GetAppLiteResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetAppLiteResponse_Type interface {
	isGetAppLiteResponse_Type()
}

type GetAppLiteResponse_Data struct {
	// Упрощённое приложение
	Data *AppLite `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetAppLiteResponse_Data) isGetAppLiteResponse_Type() {}

func (*GetAppLiteResponse_Error_) isGetAppLiteResponse_Type() {}

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

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

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

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

func (*GetAppListRequest) ProtoMessage() {}

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

func (x *GetAppListRequest) GetFilter() *AppFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetAppListRequest) GetPagination() isGetAppListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetAppListRequest) GetPaging() *AppPaging {
	if x, ok := x.GetPagination().(*GetAppListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetAppListRequest_Pagination interface {
	isGetAppListRequest_Pagination()
}

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

func (*GetAppListRequest_Paging) isGetAppListRequest_Pagination() {}

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

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

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

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

func (*GetAppListResponse) ProtoMessage() {}

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

func (m *GetAppListResponse) GetType() isGetAppListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetAppListResponse) GetData() *App {
	if x, ok := x.GetType().(*GetAppListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetAppListResponse) GetError() *GetAppListResponse_Error {
	if x, ok := x.GetType().(*GetAppListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetAppListResponse_Type interface {
	isGetAppListResponse_Type()
}

type GetAppListResponse_Data struct {
	// Приложение
	Data *App `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetAppListResponse_Data) isGetAppListResponse_Type() {}

func (*GetAppListResponse_Error_) isGetAppListResponse_Type() {}

// Запрос получения списка упрощённого приложений
type GetAppLiteListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Упрощённый фильтр
	Filter *AppLiteFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetAppLiteListRequest_Paging
	Pagination isGetAppLiteListRequest_Pagination `protobuf_oneof:"pagination"`
}

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

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

func (*GetAppLiteListRequest) ProtoMessage() {}

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

func (x *GetAppLiteListRequest) GetFilter() *AppLiteFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetAppLiteListRequest) GetPagination() isGetAppLiteListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetAppLiteListRequest) GetPaging() *AppLitePaging {
	if x, ok := x.GetPagination().(*GetAppLiteListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetAppLiteListRequest_Pagination interface {
	isGetAppLiteListRequest_Pagination()
}

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

func (*GetAppLiteListRequest_Paging) isGetAppLiteListRequest_Pagination() {}

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

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

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

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

func (*GetAppLiteListResponse) ProtoMessage() {}

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

func (m *GetAppLiteListResponse) GetType() isGetAppLiteListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetAppLiteListResponse) GetData() *AppLite {
	if x, ok := x.GetType().(*GetAppLiteListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetAppLiteListResponse) GetError() *GetAppLiteListResponse_Error {
	if x, ok := x.GetType().(*GetAppLiteListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetAppLiteListResponse_Type interface {
	isGetAppLiteListResponse_Type()
}

type GetAppLiteListResponse_Data struct {
	// Упрощённое приложение
	Data *AppLite `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetAppLiteListResponse_Data) isGetAppLiteListResponse_Type() {}

func (*GetAppLiteListResponse_Error_) isGetAppLiteListResponse_Type() {}

// Запрос получения количества упрощённых приложений
type GetAppLiteCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Упрощённый фильтр
	Filter *AppLiteFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

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

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

func (*GetAppLiteCountRequest) ProtoMessage() {}

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

func (x *GetAppLiteCountRequest) GetFilter() *AppLiteFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

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

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

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

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

func (*GetAppLiteCountResponse) ProtoMessage() {}

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

func (m *GetAppLiteCountResponse) GetType() isGetAppLiteCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

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

func (x *GetAppLiteCountResponse) GetError() *GetAppLiteCountResponse_Error {
	if x, ok := x.GetType().(*GetAppLiteCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetAppLiteCountResponse_Type interface {
	isGetAppLiteCountResponse_Type()
}

type GetAppLiteCountResponse_Data struct {
	// Всего упрощенных приложений
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

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

func (*GetAppLiteCountResponse_Data) isGetAppLiteCountResponse_Type() {}

func (*GetAppLiteCountResponse_Error_) isGetAppLiteCountResponse_Type() {}

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

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

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

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

func (*GetAppCountRequest) ProtoMessage() {}

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

func (x *GetAppCountRequest) GetFilter() *AppFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

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

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

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

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

func (*GetAppCountResponse) ProtoMessage() {}

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

func (m *GetAppCountResponse) GetType() isGetAppCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

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

func (x *GetAppCountResponse) GetError() *GetAppCountResponse_Error {
	if x, ok := x.GetType().(*GetAppCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetAppCountResponse_Type interface {
	isGetAppCountResponse_Type()
}

type GetAppCountResponse_Data struct {
	// Всего приложений
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

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

func (*GetAppCountResponse_Data) isGetAppCountResponse_Type() {}

func (*GetAppCountResponse_Error_) isGetAppCountResponse_Type() {}

// Запрос на получение кода для перехода в приложение
type GetAppCodeRequest 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 *GetAppCodeRequest) Reset() {
	*x = GetAppCodeRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetAppCodeRequest) ProtoMessage() {}

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

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

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

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

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

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

func (*GetAppCodeResponse) ProtoMessage() {}

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

func (m *GetAppCodeResponse) GetType() isGetAppCodeResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetAppCodeResponse) GetData() string {
	if x, ok := x.GetType().(*GetAppCodeResponse_Data); ok {
		return x.Data
	}
	return ""
}

func (x *GetAppCodeResponse) GetError() *GetAppCodeResponse_Error {
	if x, ok := x.GetType().(*GetAppCodeResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetAppCodeResponse_Type interface {
	isGetAppCodeResponse_Type()
}

type GetAppCodeResponse_Data struct {
	// Код
	Data string `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetAppCodeResponse_Data) isGetAppCodeResponse_Type() {}

func (*GetAppCodeResponse_Error_) isGetAppCodeResponse_Type() {}

// Запрос удаления приложения
type DeleteAppRequest 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 *DeleteAppRequest) Reset() {
	*x = DeleteAppRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteAppRequest) ProtoMessage() {}

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

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

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

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

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

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

func (*DeleteAppResponse) ProtoMessage() {}

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

func (m *DeleteAppResponse) GetType() isDeleteAppResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *DeleteAppResponse) GetError() *DeleteAppResponse_Error {
	if x, ok := x.GetType().(*DeleteAppResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isDeleteAppResponse_Type interface {
	isDeleteAppResponse_Type()
}

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

func (*DeleteAppResponse_Error_) isDeleteAppResponse_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_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[24]
		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_multiapp_v1_keyapis_multiapp_app_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 ValidationError.ProtoReflect.Descriptor instead.
func (*ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescGZIP(), []int{24}
}

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 App_Link struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип платформы.
	// Обязательное
	PlatformType App_PlatformType `protobuf:"varint,1,opt,name=platform_type,json=platformType,proto3,enum=keyapis.multiapp.v1.App_PlatformType" json:"platform_type,omitempty"`
	// Тип ссылки.
	// Обязательное
	Type App_Link_Type `protobuf:"varint,2,opt,name=type,proto3,enum=keyapis.multiapp.v1.App_Link_Type" json:"type,omitempty"`
	// Значение ссылки для перехода.
	// Обязательное.
	// # Диапазон: 12..512
	Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
	// Список пакетов.
	// Если пусто попытка перехода осуществляется безусловно.
	// Если заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве, иначе обработка переходит к следующей ссылке.
	// # Диапазон: 0..20
	Packages []string `protobuf:"bytes,4,rep,name=packages,proto3" json:"packages,omitempty"`
}

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

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

func (*App_Link) ProtoMessage() {}

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

func (x *App_Link) GetPlatformType() App_PlatformType {
	if x != nil {
		return x.PlatformType
	}
	return App_PLATFORM_TYPE_UNKNOWN
}

func (x *App_Link) GetType() App_Link_Type {
	if x != nil {
		return x.Type
	}
	return App_Link_TYPE_UNKNOWN
}

func (x *App_Link) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *App_Link) GetPackages() []string {
	if x != nil {
		return x.Packages
	}
	return nil
}

// Разрешения
type App_Permissions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Список разрешенных типов токена
	AllowedTokenTypes []App_Permissions_AllowedTokenType `protobuf:"varint,1,rep,packed,name=allowed_token_types,json=allowedTokenTypes,proto3,enum=keyapis.multiapp.v1.App_Permissions_AllowedTokenType" json:"allowed_token_types,omitempty"`
}

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

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

func (*App_Permissions) ProtoMessage() {}

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

func (x *App_Permissions) GetAllowedTokenTypes() []App_Permissions_AllowedTokenType {
	if x != nil {
		return x.AllowedTokenTypes
	}
	return nil
}

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

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

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

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

func (*App_SavingError) ProtoMessage() {}

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

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

func (m *App_SavingError) GetReason() isApp_SavingError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *App_SavingError) GetConflict() *App_SavingError_Conflict {
	if x, ok := x.GetReason().(*App_SavingError_Conflict_); ok {
		return x.Conflict
	}
	return nil
}

func (x *App_SavingError) GetPartnerIsNotExist() *App_SavingError_PartnerIsNotExist {
	if x, ok := x.GetReason().(*App_SavingError_PartnerIsNotExist_); ok {
		return x.PartnerIsNotExist
	}
	return nil
}

func (x *App_SavingError) GetPartnerIsDeleted() *App_SavingError_PartnerIsDeleted {
	if x, ok := x.GetReason().(*App_SavingError_PartnerIsDeleted_); ok {
		return x.PartnerIsDeleted
	}
	return nil
}

type isApp_SavingError_Reason interface {
	isApp_SavingError_Reason()
}

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

type App_SavingError_PartnerIsNotExist_ struct {
	// Переданный партнер не существует
	PartnerIsNotExist *App_SavingError_PartnerIsNotExist `protobuf:"bytes,2,opt,name=partner_is_not_exist,json=partnerIsNotExist,proto3,oneof"`
}

type App_SavingError_PartnerIsDeleted_ struct {
	// Переданный партнер удален
	PartnerIsDeleted *App_SavingError_PartnerIsDeleted `protobuf:"bytes,3,opt,name=partner_is_deleted,json=partnerIsDeleted,proto3,oneof"`
}

func (*App_SavingError_Conflict_) isApp_SavingError_Reason() {}

func (*App_SavingError_PartnerIsNotExist_) isApp_SavingError_Reason() {}

func (*App_SavingError_PartnerIsDeleted_) isApp_SavingError_Reason() {}

// Конфликт версий.
// Причины:
// - В базе хранится другая версия строки, значения changed_at отличаются
type App_SavingError_Conflict struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*App_SavingError_Conflict) ProtoMessage() {}

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

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

// Переданный партнер не существует.
// Причины:
// - В базе нет партнера с переданным partner_id
type App_SavingError_PartnerIsNotExist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*App_SavingError_PartnerIsNotExist) ProtoMessage() {}

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

// Deprecated: Use App_SavingError_PartnerIsNotExist.ProtoReflect.Descriptor instead.
func (*App_SavingError_PartnerIsNotExist) Descriptor() ([]byte, []int) {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescGZIP(), []int{0, 2, 1}
}

// Переданный партнер удален.
// Причины:
// - В базе удален партнер с переданным partner_id
type App_SavingError_PartnerIsDeleted struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*App_SavingError_PartnerIsDeleted) ProtoMessage() {}

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

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

// Упрощённая ссылка
type AppLite_LinkLite struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип платформы.
	// Обязательное
	PlatformType App_PlatformType `protobuf:"varint,1,opt,name=platform_type,json=platformType,proto3,enum=keyapis.multiapp.v1.App_PlatformType" json:"platform_type,omitempty"`
	// Тип ссылки.
	// Обязательное
	Type App_Link_Type `protobuf:"varint,2,opt,name=type,proto3,enum=keyapis.multiapp.v1.App_Link_Type" json:"type,omitempty"`
	// Значение ссылки для перехода.
	// Обязательное
	Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
	// Список пакетов.
	// Если пусто попытка перехода осуществляется безусловно.
	// Если заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве, иначе обработка переходит к следующей ссылке
	Packages []string `protobuf:"bytes,4,rep,name=packages,proto3" json:"packages,omitempty"`
}

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

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

func (*AppLite_LinkLite) ProtoMessage() {}

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

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

func (x *AppLite_LinkLite) GetPlatformType() App_PlatformType {
	if x != nil {
		return x.PlatformType
	}
	return App_PLATFORM_TYPE_UNKNOWN
}

func (x *AppLite_LinkLite) GetType() App_Link_Type {
	if x != nil {
		return x.Type
	}
	return App_Link_TYPE_UNKNOWN
}

func (x *AppLite_LinkLite) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *AppLite_LinkLite) GetPackages() []string {
	if x != nil {
		return x.Packages
	}
	return nil
}

// Тег для приложения
type AppLiteFilter_AppLiteTag struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип платформы
	PlatformType App_PlatformType `protobuf:"varint,1,opt,name=platform_type,json=platformType,proto3,enum=keyapis.multiapp.v1.App_PlatformType" json:"platform_type,omitempty"`
	// Название приложения, которое работает с данным сервисом.
	// Для МП и PWA значение "1".
	// # Паттерн: /^[0-9A-Z-]{1,19}$/
	AppName *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"`
}

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

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

func (*AppLiteFilter_AppLiteTag) ProtoMessage() {}

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

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

func (x *AppLiteFilter_AppLiteTag) GetPlatformType() App_PlatformType {
	if x != nil {
		return x.PlatformType
	}
	return App_PLATFORM_TYPE_UNKNOWN
}

func (x *AppLiteFilter_AppLiteTag) GetAppName() *wrapperspb.StringValue {
	if x != nil {
		return x.AppName
	}
	return nil
}

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

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

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

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

func (*PostAppResponse_Error) ProtoMessage() {}

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

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

func (m *PostAppResponse_Error) GetReason() isPostAppResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

func (x *PostAppResponse_Error) GetSaving() *App_SavingError {
	if x, ok := x.GetReason().(*PostAppResponse_Error_Saving); ok {
		return x.Saving
	}
	return nil
}

type isPostAppResponse_Error_Reason interface {
	isPostAppResponse_Error_Reason()
}

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

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

func (*PostAppResponse_Error_Validation) isPostAppResponse_Error_Reason() {}

func (*PostAppResponse_Error_Saving) isPostAppResponse_Error_Reason() {}

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

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

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

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

func (*GetAppResponse_Error) ProtoMessage() {}

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

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

func (m *GetAppResponse_Error) GetReason() isGetAppResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isGetAppResponse_Error_Reason interface {
	isGetAppResponse_Error_Reason()
}

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

func (*GetAppResponse_Error_Validation) isGetAppResponse_Error_Reason() {}

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

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

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

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

func (*GetAppLiteResponse_Error) ProtoMessage() {}

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

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

func (m *GetAppLiteResponse_Error) GetReason() isGetAppLiteResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isGetAppLiteResponse_Error_Reason interface {
	isGetAppLiteResponse_Error_Reason()
}

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

func (*GetAppLiteResponse_Error_Validation) isGetAppLiteResponse_Error_Reason() {}

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

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

func (x *GetAppListResponse_Error) Reset() {
	*x = GetAppListResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetAppListResponse_Error) ProtoMessage() {}

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

func (m *GetAppListResponse_Error) GetReason() isGetAppListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isGetAppListResponse_Error_Reason interface {
	isGetAppListResponse_Error_Reason()
}

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

func (*GetAppListResponse_Error_Validation) isGetAppListResponse_Error_Reason() {}

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

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

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

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

func (*GetAppLiteListResponse_Error) ProtoMessage() {}

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

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

func (m *GetAppLiteListResponse_Error) GetReason() isGetAppLiteListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isGetAppLiteListResponse_Error_Reason interface {
	isGetAppLiteListResponse_Error_Reason()
}

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

func (*GetAppLiteListResponse_Error_Validation) isGetAppLiteListResponse_Error_Reason() {}

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

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

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

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

func (*GetAppLiteCountResponse_Error) ProtoMessage() {}

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

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

func (m *GetAppLiteCountResponse_Error) GetReason() isGetAppLiteCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isGetAppLiteCountResponse_Error_Reason interface {
	isGetAppLiteCountResponse_Error_Reason()
}

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

func (*GetAppLiteCountResponse_Error_Validation) isGetAppLiteCountResponse_Error_Reason() {}

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

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

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

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

func (*GetAppCountResponse_Error) ProtoMessage() {}

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

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

func (m *GetAppCountResponse_Error) GetReason() isGetAppCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isGetAppCountResponse_Error_Reason interface {
	isGetAppCountResponse_Error_Reason()
}

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

func (*GetAppCountResponse_Error_Validation) isGetAppCountResponse_Error_Reason() {}

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

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

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

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

func (*GetAppCodeResponse_Error) ProtoMessage() {}

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

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

func (m *GetAppCodeResponse_Error) GetReason() isGetAppCodeResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

func (x *GetAppCodeResponse_Error) GetPartnerKeyDoesNotExist() *GetAppCodeResponse_Error_PartnerKeyDoesNotExist {
	if x, ok := x.GetReason().(*GetAppCodeResponse_Error_PartnerKeyDoesNotExist_); ok {
		return x.PartnerKeyDoesNotExist
	}
	return nil
}

func (x *GetAppCodeResponse_Error) GetAppIsInactive() *GetAppCodeResponse_Error_AppIsInactive {
	if x, ok := x.GetReason().(*GetAppCodeResponse_Error_AppIsInactive_); ok {
		return x.AppIsInactive
	}
	return nil
}

type isGetAppCodeResponse_Error_Reason interface {
	isGetAppCodeResponse_Error_Reason()
}

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

type GetAppCodeResponse_Error_PartnerKeyDoesNotExist_ struct {
	// Ошибка наличия публичного ключа у партнера
	PartnerKeyDoesNotExist *GetAppCodeResponse_Error_PartnerKeyDoesNotExist `protobuf:"bytes,2,opt,name=partner_key_does_not_exist,json=partnerKeyDoesNotExist,proto3,oneof"`
}

type GetAppCodeResponse_Error_AppIsInactive_ struct {
	// Приложение не в статусе ACTIVE
	AppIsInactive *GetAppCodeResponse_Error_AppIsInactive `protobuf:"bytes,3,opt,name=app_is_inactive,json=appIsInactive,proto3,oneof"`
}

func (*GetAppCodeResponse_Error_Validation) isGetAppCodeResponse_Error_Reason() {}

func (*GetAppCodeResponse_Error_PartnerKeyDoesNotExist_) isGetAppCodeResponse_Error_Reason() {}

func (*GetAppCodeResponse_Error_AppIsInactive_) isGetAppCodeResponse_Error_Reason() {}

// Ошибка наличия публичного ключа у партнера
type GetAppCodeResponse_Error_PartnerKeyDoesNotExist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*GetAppCodeResponse_Error_PartnerKeyDoesNotExist) ProtoMessage() {}

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

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

// Приложение не в статусе ACTIVE
type GetAppCodeResponse_Error_AppIsInactive struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*GetAppCodeResponse_Error_AppIsInactive) ProtoMessage() {}

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

// Deprecated: Use GetAppCodeResponse_Error_AppIsInactive.ProtoReflect.Descriptor instead.
func (*GetAppCodeResponse_Error_AppIsInactive) Descriptor() ([]byte, []int) {
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescGZIP(), []int{21, 0, 1}
}

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

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

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

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

func (*DeleteAppResponse_Error) ProtoMessage() {}

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

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

func (m *DeleteAppResponse_Error) GetReason() isDeleteAppResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isDeleteAppResponse_Error_Reason interface {
	isDeleteAppResponse_Error_Reason()
}

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

func (*DeleteAppResponse_Error_Validation) isDeleteAppResponse_Error_Reason() {}

var File_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto protoreflect.FileDescriptor

var file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDesc = []byte{
	0x0a, 0x31, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61,
	0x70, 0x70, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x6d, 0x75,
	0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x76, 0x31, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x13, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c,
	0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 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, 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, 0x1b, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74,
	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbc, 0x0f, 0x0a, 0x03, 0x41, 0x70, 0x70, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
	0x22, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65,
	0x72, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x1d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x54, 0x79, 0x70, 0x65,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x74,
	0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
	0x18, 0x05, 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, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08,
	0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 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, 0x08, 0x73, 0x75,
	0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
	0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x07, 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, 0x0f,
	0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12,
	0x49, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d,
	0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 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, 0x33, 0x0a, 0x05, 0x6c, 0x69,
	0x6e, 0x6b, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x70, 0x70, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12,
	0x20, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x61, 0x67,
	0x73, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20,
	0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x61, 0x70, 0x70, 0x54, 0x61, 0x67,
	0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
	0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
	0x0d, 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, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x12, 0x5c, 0x0a, 0x0b,
	0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x65, 0x72, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x14, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12,
	0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x52, 0x0b, 0x70,
	0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x0b, 0x67, 0x72,
	0x61, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0e, 0x32,
	0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61,
	0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a,
	0xbb, 0x02, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x4f, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74,
	0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x25, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61,
	0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x70, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70,
	0x70, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a,
	0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x72, 0x0a, 0x04, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f,
	0x41, 0x50, 0x50, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41,
	0x4c, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x45, 0x42, 0x5f, 0x56,
	0x49, 0x45, 0x57, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x45, 0x42, 0x5f, 0x42, 0x52, 0x4f,
	0x57, 0x53, 0x45, 0x52, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e,
	0x41, 0x4c, 0x5f, 0x57, 0x45, 0x42, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x05, 0x1a, 0xbc, 0x01,
	0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65, 0x0a,
	0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31,
	0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73,
	0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54,
	0x79, 0x70, 0x65, 0x73, 0x22, 0x46, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x54,
	0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x4c, 0x4f,
	0x57, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,
	0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x44, 0x10, 0x01,
	0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x1a, 0xeb, 0x02, 0x0a,
	0x0b, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4b, 0x0a, 0x08,
	0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70,
	0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 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, 0x12, 0x69, 0x0a, 0x14, 0x70, 0x61, 0x72,
	0x74, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70,
	0x70, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x50, 0x61,
	0x72, 0x74, 0x6e, 0x65, 0x72, 0x49, 0x73, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x48,
	0x00, 0x52, 0x11, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x49, 0x73, 0x4e, 0x6f, 0x74, 0x45,
	0x78, 0x69, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f,
	0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x35, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e,
	0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x49, 0x73,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x10, 0x70, 0x61, 0x72, 0x74, 0x6e,
	0x65, 0x72, 0x49, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, 0x0a, 0x0a, 0x08, 0x43,
	0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x1a, 0x13, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x6e,
	0x65, 0x72, 0x49, 0x73, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x1a, 0x12, 0x0a, 0x10,
	0x50, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x49, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
	0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x04, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
	0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44,
	0x10, 0x01, 0x22, 0x4b, 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, 0x0b, 0x0a, 0x07, 0x42, 0x4c, 0x4f,
	0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45,
	0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x22,
	0x48, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x19, 0x0a, 0x15, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4f,
	0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x02,
	0x12, 0x07, 0x0a, 0x03, 0x57, 0x45, 0x42, 0x10, 0x03, 0x22, 0x6b, 0x0a, 0x09, 0x47, 0x72, 0x61,
	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f,
	0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14,
	0x0a, 0x10, 0x47, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x4f, 0x4b,
	0x45, 0x4e, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x45, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x54,
	0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x4e,
	0x4f, 0x54, 0x49, 0x46, 0x5f, 0x4e, 0x4f, 0x5f, 0x41, 0x53, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x43,
	0x48, 0x45, 0x43, 0x4b, 0x10, 0x03, 0x22, 0xc3, 0x04, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x4c, 0x69,
	0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
	0x69, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x34, 0x0a,
	0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 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, 0x06, 0x68, 0x65, 0x61,
	0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
	0x04, 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, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x47, 0x0a,
	0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
	0x72, 0x18, 0x05, 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, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e,
	0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76,
	0x31, 0x2e, 0x41, 0x70, 0x70, 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, 0x3b, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x25, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x2e, 0x4c,
	0x69, 0x6e, 0x6b, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x1a, 0xcb,
	0x01, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x6b, 0x4c, 0x69, 0x74, 0x65, 0x12, 0x4f, 0x0a, 0x0d, 0x70,
	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c,
	0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c,
	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31,
	0x2e, 0x41, 0x70, 0x70, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03,
	0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x75, 0x72, 0x6c,
	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x93, 0x02, 0x0a,
	0x09, 0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x65,
	0x78, 0x74, 0x18, 0x01, 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, 0x33, 0x0a, 0x05,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76,
	0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x49,
	0x64, 0x73, 0x12, 0x46, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x70, 0x70, 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, 0x1b, 0x0a, 0x09, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x75,
	0x73, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x74,
	0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x54, 0x61,
	0x67, 0x73, 0x22, 0xc6, 0x02, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75,
	0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65,
	0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73,
	0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x69,
	0x74, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e,
	0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x2e, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x61, 0x70, 0x70,
	0x4c, 0x69, 0x74, 0x65, 0x54, 0x61, 0x67, 0x1a, 0x91, 0x01, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x4c,
	0x69, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x4a, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70,
	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
	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, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf2, 0x02, 0x0a, 0x09,
	0x41, 0x70, 0x70, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x0d, 0x6f, 0x72, 0x64,
	0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x2a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 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, 0x53, 0x0a, 0x0e, 0x64, 0x69, 0x72,
	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 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, 0x52, 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, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45,
	0x44, 0x5f, 0x41, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45,
	0x44, 0x5f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x41, 0x4e, 0x4b, 0x10, 0x03,
	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, 0xf4, 0x02, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x50, 0x61, 0x67, 0x69,
	0x6e, 0x67, 0x12, 0x52, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 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, 0x57, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70,
	0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 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, 0x48, 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, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x41, 0x4e, 0x47,
	0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x41, 0x54,
	0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x02, 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, 0x43, 0x0a, 0x0e, 0x50, 0x6f, 0x73, 0x74, 0x41,
	0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70,
	0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa9, 0x02, 0x0a,
	0x0f, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70,
	0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x12, 0x42, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x2a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61,
	0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x1a, 0x99, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x46,
	0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c,
	0x74, 0x69, 0x61, 0x70, 0x70, 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, 0x3e, 0x0a, 0x06, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70,
	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, 0x24, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41,
	0x70, 0x70, 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, 0xe6,
	0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x18, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61,
	0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x12, 0x41, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x29, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x1a, 0x59, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x46, 0x0a,
	0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x61, 0x70, 0x70, 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, 0x28, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x70,
	0x70, 0x4c, 0x69, 0x74, 0x65, 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, 0xf2, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70,
	0x4c, 0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x05,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x1a, 0x59, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0a,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 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, 0x93, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x70,
	0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06,
	0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e,
	0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d,
	0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 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, 0xee, 0x01, 0x0a,
	0x12, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x48, 0x00, 0x52, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c,
	0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 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, 0x59, 0x0a, 0x05, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 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, 0x9f, 0x01,
	0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70,
	0x70, 0x4c, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75,
	0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74,
	0x65, 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,
	0xfa, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 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, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 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, 0x59, 0x0a, 0x05, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 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, 0x54, 0x0a, 0x16,
	0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70,
	0x4c, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x22, 0xde, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74,
	0x65, 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, 0x4a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75,
	0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70,
	0x4c, 0x69, 0x74, 0x65, 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, 0x59, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70,
	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, 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x22, 0xd6, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 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,
	0x46, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70,
	0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 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, 0x59, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x12, 0x46, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d,
	0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 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, 0x28, 0x0a, 0x11, 0x47, 0x65,
	0x74, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 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, 0xec, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x43,
	0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x64,
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0xf0, 0x02, 0x0a, 0x05, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 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, 0x82, 0x01, 0x0a, 0x1a, 0x70,
	0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x6f, 0x65, 0x73, 0x5f,
	0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x44, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61,
	0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x50,
	0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x44, 0x6f, 0x65, 0x73, 0x4e, 0x6f, 0x74,
	0x45, 0x78, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x16, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72,
	0x4b, 0x65, 0x79, 0x44, 0x6f, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12,
	0x65, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69,
	0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x41, 0x70, 0x70, 0x49, 0x73, 0x49, 0x6e, 0x61,
	0x63, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x73, 0x49, 0x6e,
	0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1a, 0x18, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x74, 0x6e, 0x65,
	0x72, 0x4b, 0x65, 0x79, 0x44, 0x6f, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74,
	0x1a, 0x0f, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x49, 0x73, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76,
	0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x22, 0x27, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70,
	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, 0xbc, 0x01, 0x0a,
	0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70,
	0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x59, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x46, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 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, 0xc2, 0x09, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x53, 0x65,
	0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x75, 0x0a, 0x07, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x70, 0x70,
	0x12, 0x23, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70,
	0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x70, 0x12, 0x74, 0x0a, 0x06,
	0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x12, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61,
	0x70, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x7b, 0x69,
	0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74,
	0x65, 0x12, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69,
	0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x6d, 0x75, 0x6c,
	0x74, 0x69, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x70,
	0x5f, 0x6c, 0x69, 0x74, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x47,
	0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x1b, 0x12, 0x19, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12,
	0x93, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x4c, 0x69,
	0x73, 0x74, 0x12, 0x2a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c,
	0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c,
	0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70,
	0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x4c,
	0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x2f, 0x6c,
	0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70,
	0x4c, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x41, 0x70, 0x70, 0x4c, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x6d,
	0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61,
	0x70, 0x70, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x84, 0x01,
	0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x41, 0x70, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x85, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x43,
	0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75,
	0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70,
	0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x6d,
	0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61,
	0x70, 0x70, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x7d, 0x0a, 0x09,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x25, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x26, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b,
	0x2a, 0x19, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x76, 0x31, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0xa8, 0x01, 0x0a, 0x16,
	0x72, 0x75, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69,
	0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x16, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x4d,
	0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x56, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x03,
	0x50, 0x00, 0x5a, 0x14, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x6c,
	0x74, 0x69, 0x61, 0x70, 0x70, 0x5f, 0x76, 0x31, 0xd8, 0x01, 0x01, 0xf8, 0x01, 0x01, 0xa2, 0x02,
	0x11, 0x4b, 0x45, 0x59, 0x41, 0x50, 0x49, 0x53, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x41, 0x50, 0x50,
	0x56, 0x31, 0xaa, 0x02, 0x13, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x4d, 0x75, 0x6c,
	0x74, 0x69, 0x61, 0x70, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x4b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x5c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x70, 0x70, 0x5c, 0x56, 0x31, 0xea, 0x02,
	0x15, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x61,
	0x70, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescOnce sync.Once
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescData = file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDesc
)

func file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescGZIP() []byte {
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescOnce.Do(func() {
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescData = protoimpl.X.CompressGZIP(file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescData)
	})
	return file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDescData
}

var file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes = make([]protoimpl.MessageInfo, 44)
var file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_goTypes = []interface{}{
	(App_Type)(0),                                           // 0: keyapis.multiapp.v1.App.Type
	(App_StatusType)(0),                                     // 1: keyapis.multiapp.v1.App.StatusType
	(App_PlatformType)(0),                                   // 2: keyapis.multiapp.v1.App.PlatformType
	(App_GrantType)(0),                                      // 3: keyapis.multiapp.v1.App.GrantType
	(App_Link_Type)(0),                                      // 4: keyapis.multiapp.v1.App.Link.Type
	(App_Permissions_AllowedTokenType)(0),                   // 5: keyapis.multiapp.v1.App.Permissions.AllowedTokenType
	(AppPaging_OrderByType)(0),                              // 6: keyapis.multiapp.v1.AppPaging.OrderByType
	(AppPaging_DirectionType)(0),                            // 7: keyapis.multiapp.v1.AppPaging.DirectionType
	(AppLitePaging_OrderByType)(0),                          // 8: keyapis.multiapp.v1.AppLitePaging.OrderByType
	(AppLitePaging_DirectionType)(0),                        // 9: keyapis.multiapp.v1.AppLitePaging.DirectionType
	(*App)(nil),                                             // 10: keyapis.multiapp.v1.App
	(*AppLite)(nil),                                         // 11: keyapis.multiapp.v1.AppLite
	(*AppFilter)(nil),                                       // 12: keyapis.multiapp.v1.AppFilter
	(*AppLiteFilter)(nil),                                   // 13: keyapis.multiapp.v1.AppLiteFilter
	(*AppPaging)(nil),                                       // 14: keyapis.multiapp.v1.AppPaging
	(*AppLitePaging)(nil),                                   // 15: keyapis.multiapp.v1.AppLitePaging
	(*PostAppRequest)(nil),                                  // 16: keyapis.multiapp.v1.PostAppRequest
	(*PostAppResponse)(nil),                                 // 17: keyapis.multiapp.v1.PostAppResponse
	(*GetAppRequest)(nil),                                   // 18: keyapis.multiapp.v1.GetAppRequest
	(*GetAppResponse)(nil),                                  // 19: keyapis.multiapp.v1.GetAppResponse
	(*GetAppLiteRequest)(nil),                               // 20: keyapis.multiapp.v1.GetAppLiteRequest
	(*GetAppLiteResponse)(nil),                              // 21: keyapis.multiapp.v1.GetAppLiteResponse
	(*GetAppListRequest)(nil),                               // 22: keyapis.multiapp.v1.GetAppListRequest
	(*GetAppListResponse)(nil),                              // 23: keyapis.multiapp.v1.GetAppListResponse
	(*GetAppLiteListRequest)(nil),                           // 24: keyapis.multiapp.v1.GetAppLiteListRequest
	(*GetAppLiteListResponse)(nil),                          // 25: keyapis.multiapp.v1.GetAppLiteListResponse
	(*GetAppLiteCountRequest)(nil),                          // 26: keyapis.multiapp.v1.GetAppLiteCountRequest
	(*GetAppLiteCountResponse)(nil),                         // 27: keyapis.multiapp.v1.GetAppLiteCountResponse
	(*GetAppCountRequest)(nil),                              // 28: keyapis.multiapp.v1.GetAppCountRequest
	(*GetAppCountResponse)(nil),                             // 29: keyapis.multiapp.v1.GetAppCountResponse
	(*GetAppCodeRequest)(nil),                               // 30: keyapis.multiapp.v1.GetAppCodeRequest
	(*GetAppCodeResponse)(nil),                              // 31: keyapis.multiapp.v1.GetAppCodeResponse
	(*DeleteAppRequest)(nil),                                // 32: keyapis.multiapp.v1.DeleteAppRequest
	(*DeleteAppResponse)(nil),                               // 33: keyapis.multiapp.v1.DeleteAppResponse
	(*ValidationError)(nil),                                 // 34: keyapis.multiapp.v1.ValidationError
	(*App_Link)(nil),                                        // 35: keyapis.multiapp.v1.App.Link
	(*App_Permissions)(nil),                                 // 36: keyapis.multiapp.v1.App.Permissions
	(*App_SavingError)(nil),                                 // 37: keyapis.multiapp.v1.App.SavingError
	(*App_SavingError_Conflict)(nil),                        // 38: keyapis.multiapp.v1.App.SavingError.Conflict
	(*App_SavingError_PartnerIsNotExist)(nil),               // 39: keyapis.multiapp.v1.App.SavingError.PartnerIsNotExist
	(*App_SavingError_PartnerIsDeleted)(nil),                // 40: keyapis.multiapp.v1.App.SavingError.PartnerIsDeleted
	(*AppLite_LinkLite)(nil),                                // 41: keyapis.multiapp.v1.AppLite.LinkLite
	(*AppLiteFilter_AppLiteTag)(nil),                        // 42: keyapis.multiapp.v1.AppLiteFilter.AppLiteTag
	(*PostAppResponse_Error)(nil),                           // 43: keyapis.multiapp.v1.PostAppResponse.Error
	(*GetAppResponse_Error)(nil),                            // 44: keyapis.multiapp.v1.GetAppResponse.Error
	(*GetAppLiteResponse_Error)(nil),                        // 45: keyapis.multiapp.v1.GetAppLiteResponse.Error
	(*GetAppListResponse_Error)(nil),                        // 46: keyapis.multiapp.v1.GetAppListResponse.Error
	(*GetAppLiteListResponse_Error)(nil),                    // 47: keyapis.multiapp.v1.GetAppLiteListResponse.Error
	(*GetAppLiteCountResponse_Error)(nil),                   // 48: keyapis.multiapp.v1.GetAppLiteCountResponse.Error
	(*GetAppCountResponse_Error)(nil),                       // 49: keyapis.multiapp.v1.GetAppCountResponse.Error
	(*GetAppCodeResponse_Error)(nil),                        // 50: keyapis.multiapp.v1.GetAppCodeResponse.Error
	(*GetAppCodeResponse_Error_PartnerKeyDoesNotExist)(nil), // 51: keyapis.multiapp.v1.GetAppCodeResponse.Error.PartnerKeyDoesNotExist
	(*GetAppCodeResponse_Error_AppIsInactive)(nil),          // 52: keyapis.multiapp.v1.GetAppCodeResponse.Error.AppIsInactive
	(*DeleteAppResponse_Error)(nil),                         // 53: keyapis.multiapp.v1.DeleteAppResponse.Error
	(*wrapperspb.StringValue)(nil),                          // 54: google.protobuf.StringValue
	(*timestamppb.Timestamp)(nil),                           // 55: google.protobuf.Timestamp
}
var file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_depIdxs = []int32{
	0,  // 0: keyapis.multiapp.v1.App.type:type_name -> keyapis.multiapp.v1.App.Type
	54, // 1: keyapis.multiapp.v1.App.header:type_name -> google.protobuf.StringValue
	54, // 2: keyapis.multiapp.v1.App.subtitle:type_name -> google.protobuf.StringValue
	54, // 3: keyapis.multiapp.v1.App.background_color:type_name -> google.protobuf.StringValue
	1,  // 4: keyapis.multiapp.v1.App.status_type:type_name -> keyapis.multiapp.v1.App.StatusType
	35, // 5: keyapis.multiapp.v1.App.links:type_name -> keyapis.multiapp.v1.App.Link
	55, // 6: keyapis.multiapp.v1.App.created_at:type_name -> google.protobuf.Timestamp
	55, // 7: keyapis.multiapp.v1.App.changed_at:type_name -> google.protobuf.Timestamp
	36, // 8: keyapis.multiapp.v1.App.permissions:type_name -> keyapis.multiapp.v1.App.Permissions
	3,  // 9: keyapis.multiapp.v1.App.grant_types:type_name -> keyapis.multiapp.v1.App.GrantType
	54, // 10: keyapis.multiapp.v1.AppLite.header:type_name -> google.protobuf.StringValue
	54, // 11: keyapis.multiapp.v1.AppLite.subtitle:type_name -> google.protobuf.StringValue
	54, // 12: keyapis.multiapp.v1.AppLite.background_color:type_name -> google.protobuf.StringValue
	1,  // 13: keyapis.multiapp.v1.AppLite.status_type:type_name -> keyapis.multiapp.v1.App.StatusType
	41, // 14: keyapis.multiapp.v1.AppLite.links:type_name -> keyapis.multiapp.v1.AppLite.LinkLite
	54, // 15: keyapis.multiapp.v1.AppFilter.text:type_name -> google.protobuf.StringValue
	0,  // 16: keyapis.multiapp.v1.AppFilter.types:type_name -> keyapis.multiapp.v1.App.Type
	1,  // 17: keyapis.multiapp.v1.AppFilter.status_types:type_name -> keyapis.multiapp.v1.App.StatusType
	0,  // 18: keyapis.multiapp.v1.AppLiteFilter.types:type_name -> keyapis.multiapp.v1.App.Type
	42, // 19: keyapis.multiapp.v1.AppLiteFilter.app_lite_tag:type_name -> keyapis.multiapp.v1.AppLiteFilter.AppLiteTag
	6,  // 20: keyapis.multiapp.v1.AppPaging.order_by_type:type_name -> keyapis.multiapp.v1.AppPaging.OrderByType
	7,  // 21: keyapis.multiapp.v1.AppPaging.direction_type:type_name -> keyapis.multiapp.v1.AppPaging.DirectionType
	8,  // 22: keyapis.multiapp.v1.AppLitePaging.order_by_type:type_name -> keyapis.multiapp.v1.AppLitePaging.OrderByType
	9,  // 23: keyapis.multiapp.v1.AppLitePaging.direction_type:type_name -> keyapis.multiapp.v1.AppLitePaging.DirectionType
	10, // 24: keyapis.multiapp.v1.PostAppRequest.data:type_name -> keyapis.multiapp.v1.App
	10, // 25: keyapis.multiapp.v1.PostAppResponse.data:type_name -> keyapis.multiapp.v1.App
	43, // 26: keyapis.multiapp.v1.PostAppResponse.error:type_name -> keyapis.multiapp.v1.PostAppResponse.Error
	10, // 27: keyapis.multiapp.v1.GetAppResponse.data:type_name -> keyapis.multiapp.v1.App
	44, // 28: keyapis.multiapp.v1.GetAppResponse.error:type_name -> keyapis.multiapp.v1.GetAppResponse.Error
	11, // 29: keyapis.multiapp.v1.GetAppLiteResponse.data:type_name -> keyapis.multiapp.v1.AppLite
	45, // 30: keyapis.multiapp.v1.GetAppLiteResponse.error:type_name -> keyapis.multiapp.v1.GetAppLiteResponse.Error
	12, // 31: keyapis.multiapp.v1.GetAppListRequest.filter:type_name -> keyapis.multiapp.v1.AppFilter
	14, // 32: keyapis.multiapp.v1.GetAppListRequest.paging:type_name -> keyapis.multiapp.v1.AppPaging
	10, // 33: keyapis.multiapp.v1.GetAppListResponse.data:type_name -> keyapis.multiapp.v1.App
	46, // 34: keyapis.multiapp.v1.GetAppListResponse.error:type_name -> keyapis.multiapp.v1.GetAppListResponse.Error
	13, // 35: keyapis.multiapp.v1.GetAppLiteListRequest.filter:type_name -> keyapis.multiapp.v1.AppLiteFilter
	15, // 36: keyapis.multiapp.v1.GetAppLiteListRequest.paging:type_name -> keyapis.multiapp.v1.AppLitePaging
	11, // 37: keyapis.multiapp.v1.GetAppLiteListResponse.data:type_name -> keyapis.multiapp.v1.AppLite
	47, // 38: keyapis.multiapp.v1.GetAppLiteListResponse.error:type_name -> keyapis.multiapp.v1.GetAppLiteListResponse.Error
	13, // 39: keyapis.multiapp.v1.GetAppLiteCountRequest.filter:type_name -> keyapis.multiapp.v1.AppLiteFilter
	48, // 40: keyapis.multiapp.v1.GetAppLiteCountResponse.error:type_name -> keyapis.multiapp.v1.GetAppLiteCountResponse.Error
	12, // 41: keyapis.multiapp.v1.GetAppCountRequest.filter:type_name -> keyapis.multiapp.v1.AppFilter
	49, // 42: keyapis.multiapp.v1.GetAppCountResponse.error:type_name -> keyapis.multiapp.v1.GetAppCountResponse.Error
	50, // 43: keyapis.multiapp.v1.GetAppCodeResponse.error:type_name -> keyapis.multiapp.v1.GetAppCodeResponse.Error
	53, // 44: keyapis.multiapp.v1.DeleteAppResponse.error:type_name -> keyapis.multiapp.v1.DeleteAppResponse.Error
	2,  // 45: keyapis.multiapp.v1.App.Link.platform_type:type_name -> keyapis.multiapp.v1.App.PlatformType
	4,  // 46: keyapis.multiapp.v1.App.Link.type:type_name -> keyapis.multiapp.v1.App.Link.Type
	5,  // 47: keyapis.multiapp.v1.App.Permissions.allowed_token_types:type_name -> keyapis.multiapp.v1.App.Permissions.AllowedTokenType
	38, // 48: keyapis.multiapp.v1.App.SavingError.conflict:type_name -> keyapis.multiapp.v1.App.SavingError.Conflict
	39, // 49: keyapis.multiapp.v1.App.SavingError.partner_is_not_exist:type_name -> keyapis.multiapp.v1.App.SavingError.PartnerIsNotExist
	40, // 50: keyapis.multiapp.v1.App.SavingError.partner_is_deleted:type_name -> keyapis.multiapp.v1.App.SavingError.PartnerIsDeleted
	2,  // 51: keyapis.multiapp.v1.AppLite.LinkLite.platform_type:type_name -> keyapis.multiapp.v1.App.PlatformType
	4,  // 52: keyapis.multiapp.v1.AppLite.LinkLite.type:type_name -> keyapis.multiapp.v1.App.Link.Type
	2,  // 53: keyapis.multiapp.v1.AppLiteFilter.AppLiteTag.platform_type:type_name -> keyapis.multiapp.v1.App.PlatformType
	54, // 54: keyapis.multiapp.v1.AppLiteFilter.AppLiteTag.app_name:type_name -> google.protobuf.StringValue
	34, // 55: keyapis.multiapp.v1.PostAppResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	37, // 56: keyapis.multiapp.v1.PostAppResponse.Error.saving:type_name -> keyapis.multiapp.v1.App.SavingError
	34, // 57: keyapis.multiapp.v1.GetAppResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	34, // 58: keyapis.multiapp.v1.GetAppLiteResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	34, // 59: keyapis.multiapp.v1.GetAppListResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	34, // 60: keyapis.multiapp.v1.GetAppLiteListResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	34, // 61: keyapis.multiapp.v1.GetAppLiteCountResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	34, // 62: keyapis.multiapp.v1.GetAppCountResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	34, // 63: keyapis.multiapp.v1.GetAppCodeResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	51, // 64: keyapis.multiapp.v1.GetAppCodeResponse.Error.partner_key_does_not_exist:type_name -> keyapis.multiapp.v1.GetAppCodeResponse.Error.PartnerKeyDoesNotExist
	52, // 65: keyapis.multiapp.v1.GetAppCodeResponse.Error.app_is_inactive:type_name -> keyapis.multiapp.v1.GetAppCodeResponse.Error.AppIsInactive
	34, // 66: keyapis.multiapp.v1.DeleteAppResponse.Error.validation:type_name -> keyapis.multiapp.v1.ValidationError
	16, // 67: keyapis.multiapp.v1.AppService.PostApp:input_type -> keyapis.multiapp.v1.PostAppRequest
	18, // 68: keyapis.multiapp.v1.AppService.GetApp:input_type -> keyapis.multiapp.v1.GetAppRequest
	20, // 69: keyapis.multiapp.v1.AppService.GetAppLite:input_type -> keyapis.multiapp.v1.GetAppLiteRequest
	22, // 70: keyapis.multiapp.v1.AppService.GetAppList:input_type -> keyapis.multiapp.v1.GetAppListRequest
	24, // 71: keyapis.multiapp.v1.AppService.GetAppLiteList:input_type -> keyapis.multiapp.v1.GetAppLiteListRequest
	26, // 72: keyapis.multiapp.v1.AppService.GetAppLiteCount:input_type -> keyapis.multiapp.v1.GetAppLiteCountRequest
	28, // 73: keyapis.multiapp.v1.AppService.GetAppCount:input_type -> keyapis.multiapp.v1.GetAppCountRequest
	30, // 74: keyapis.multiapp.v1.AppService.GetAppCode:input_type -> keyapis.multiapp.v1.GetAppCodeRequest
	32, // 75: keyapis.multiapp.v1.AppService.DeleteApp:input_type -> keyapis.multiapp.v1.DeleteAppRequest
	17, // 76: keyapis.multiapp.v1.AppService.PostApp:output_type -> keyapis.multiapp.v1.PostAppResponse
	19, // 77: keyapis.multiapp.v1.AppService.GetApp:output_type -> keyapis.multiapp.v1.GetAppResponse
	21, // 78: keyapis.multiapp.v1.AppService.GetAppLite:output_type -> keyapis.multiapp.v1.GetAppLiteResponse
	23, // 79: keyapis.multiapp.v1.AppService.GetAppList:output_type -> keyapis.multiapp.v1.GetAppListResponse
	25, // 80: keyapis.multiapp.v1.AppService.GetAppLiteList:output_type -> keyapis.multiapp.v1.GetAppLiteListResponse
	27, // 81: keyapis.multiapp.v1.AppService.GetAppLiteCount:output_type -> keyapis.multiapp.v1.GetAppLiteCountResponse
	29, // 82: keyapis.multiapp.v1.AppService.GetAppCount:output_type -> keyapis.multiapp.v1.GetAppCountResponse
	31, // 83: keyapis.multiapp.v1.AppService.GetAppCode:output_type -> keyapis.multiapp.v1.GetAppCodeResponse
	33, // 84: keyapis.multiapp.v1.AppService.DeleteApp:output_type -> keyapis.multiapp.v1.DeleteAppResponse
	76, // [76:85] is the sub-list for method output_type
	67, // [67:76] is the sub-list for method input_type
	67, // [67:67] is the sub-list for extension type_name
	67, // [67:67] is the sub-list for extension extendee
	0,  // [0:67] is the sub-list for field type_name
}

func init() { file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_init() }
func file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_init() {
	if File_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*App); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppLite); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppLiteFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppLitePaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostAppRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostAppResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppCodeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppCodeResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteAppRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteAppResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[24].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_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*App_Link); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*App_Permissions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*App_SavingError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*App_SavingError_Conflict); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*App_SavingError_PartnerIsNotExist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*App_SavingError_PartnerIsDeleted); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppLite_LinkLite); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppLiteFilter_AppLiteTag); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostAppResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppLiteCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppCodeResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppCodeResponse_Error_PartnerKeyDoesNotExist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAppCodeResponse_Error_AppIsInactive); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteAppResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*PostAppResponse_Data)(nil),
		(*PostAppResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[9].OneofWrappers = []interface{}{
		(*GetAppResponse_Data)(nil),
		(*GetAppResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[11].OneofWrappers = []interface{}{
		(*GetAppLiteResponse_Data)(nil),
		(*GetAppLiteResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[12].OneofWrappers = []interface{}{
		(*GetAppListRequest_Paging)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[13].OneofWrappers = []interface{}{
		(*GetAppListResponse_Data)(nil),
		(*GetAppListResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[14].OneofWrappers = []interface{}{
		(*GetAppLiteListRequest_Paging)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[15].OneofWrappers = []interface{}{
		(*GetAppLiteListResponse_Data)(nil),
		(*GetAppLiteListResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[17].OneofWrappers = []interface{}{
		(*GetAppLiteCountResponse_Data)(nil),
		(*GetAppLiteCountResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[19].OneofWrappers = []interface{}{
		(*GetAppCountResponse_Data)(nil),
		(*GetAppCountResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[21].OneofWrappers = []interface{}{
		(*GetAppCodeResponse_Data)(nil),
		(*GetAppCodeResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[23].OneofWrappers = []interface{}{
		(*DeleteAppResponse_Error_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*App_SavingError_Conflict_)(nil),
		(*App_SavingError_PartnerIsNotExist_)(nil),
		(*App_SavingError_PartnerIsDeleted_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[33].OneofWrappers = []interface{}{
		(*PostAppResponse_Error_Validation)(nil),
		(*PostAppResponse_Error_Saving)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[34].OneofWrappers = []interface{}{
		(*GetAppResponse_Error_Validation)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*GetAppLiteResponse_Error_Validation)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[36].OneofWrappers = []interface{}{
		(*GetAppListResponse_Error_Validation)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[37].OneofWrappers = []interface{}{
		(*GetAppLiteListResponse_Error_Validation)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[38].OneofWrappers = []interface{}{
		(*GetAppLiteCountResponse_Error_Validation)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[39].OneofWrappers = []interface{}{
		(*GetAppCountResponse_Error_Validation)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[40].OneofWrappers = []interface{}{
		(*GetAppCodeResponse_Error_Validation)(nil),
		(*GetAppCodeResponse_Error_PartnerKeyDoesNotExist_)(nil),
		(*GetAppCodeResponse_Error_AppIsInactive_)(nil),
	}
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes[43].OneofWrappers = []interface{}{
		(*DeleteAppResponse_Error_Validation)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDesc,
			NumEnums:      10,
			NumMessages:   44,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_goTypes,
		DependencyIndexes: file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_depIdxs,
		EnumInfos:         file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_enumTypes,
		MessageInfos:      file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_msgTypes,
	}.Build()
	File_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto = out.File
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_rawDesc = nil
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_goTypes = nil
	file_keyapis_multiapp_v1_keyapis_multiapp_app_v1_proto_depIdxs = nil
}
