// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.27.1
// 	protoc        v3.19.4
// source: model.proto

package pbx

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

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

// Authentication level
type AuthLevel int32

const (
	AuthLevel_NONE AuthLevel = 0
	AuthLevel_ANON AuthLevel = 10
	AuthLevel_AUTH AuthLevel = 20
	AuthLevel_ROOT AuthLevel = 30
)

// Enum value maps for AuthLevel.
var (
	AuthLevel_name = map[int32]string{
		0:  "NONE",
		10: "ANON",
		20: "AUTH",
		30: "ROOT",
	}
	AuthLevel_value = map[string]int32{
		"NONE": 0,
		"ANON": 10,
		"AUTH": 20,
		"ROOT": 30,
	}
)

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

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

func (AuthLevel) Descriptor() protoreflect.EnumDescriptor {
	return file_model_proto_enumTypes[0].Descriptor()
}

func (AuthLevel) Type() protoreflect.EnumType {
	return &file_model_proto_enumTypes[0]
}

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

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

type InfoNote int32

const (
	InfoNote_READ InfoNote = 0
	InfoNote_RECV InfoNote = 1
	InfoNote_KP   InfoNote = 2
)

// Enum value maps for InfoNote.
var (
	InfoNote_name = map[int32]string{
		0: "READ",
		1: "RECV",
		2: "KP",
	}
	InfoNote_value = map[string]int32{
		"READ": 0,
		"RECV": 1,
		"KP":   2,
	}
)

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

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

func (InfoNote) Descriptor() protoreflect.EnumDescriptor {
	return file_model_proto_enumTypes[1].Descriptor()
}

func (InfoNote) Type() protoreflect.EnumType {
	return &file_model_proto_enumTypes[1]
}

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

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

// Plugin response codes
type RespCode int32

const (
	// Instruct Tinode server to continue with default processing of the client request.
	RespCode_CONTINUE RespCode = 0
	// Drop the request as if the client did not send it
	RespCode_DROP RespCode = 1
	// Send the the provided response to the client.
	RespCode_RESPOND RespCode = 2
	// Replace client's original request with the provided request then continue with
	// processing.
	RespCode_REPLACE RespCode = 3
)

// Enum value maps for RespCode.
var (
	RespCode_name = map[int32]string{
		0: "CONTINUE",
		1: "DROP",
		2: "RESPOND",
		3: "REPLACE",
	}
	RespCode_value = map[string]int32{
		"CONTINUE": 0,
		"DROP":     1,
		"RESPOND":  2,
		"REPLACE":  3,
	}
)

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

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

func (RespCode) Descriptor() protoreflect.EnumDescriptor {
	return file_model_proto_enumTypes[2].Descriptor()
}

func (RespCode) Type() protoreflect.EnumType {
	return &file_model_proto_enumTypes[2]
}

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

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

type Crud int32

const (
	Crud_CREATE Crud = 0
	Crud_UPDATE Crud = 1
	Crud_DELETE Crud = 2
)

// Enum value maps for Crud.
var (
	Crud_name = map[int32]string{
		0: "CREATE",
		1: "UPDATE",
		2: "DELETE",
	}
	Crud_value = map[string]int32{
		"CREATE": 0,
		"UPDATE": 1,
		"DELETE": 2,
	}
)

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

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

func (Crud) Descriptor() protoreflect.EnumDescriptor {
	return file_model_proto_enumTypes[3].Descriptor()
}

func (Crud) Type() protoreflect.EnumType {
	return &file_model_proto_enumTypes[3]
}

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

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

// What to delete, either "msg" to delete messages (default) or "topic" to delete the topic or "sub"
// to delete a subscription to topic.
type ClientDel_What int32

const (
	ClientDel_MSG   ClientDel_What = 0
	ClientDel_TOPIC ClientDel_What = 1
	ClientDel_SUB   ClientDel_What = 2
	ClientDel_USER  ClientDel_What = 3
	ClientDel_CRED  ClientDel_What = 4
)

// Enum value maps for ClientDel_What.
var (
	ClientDel_What_name = map[int32]string{
		0: "MSG",
		1: "TOPIC",
		2: "SUB",
		3: "USER",
		4: "CRED",
	}
	ClientDel_What_value = map[string]int32{
		"MSG":   0,
		"TOPIC": 1,
		"SUB":   2,
		"USER":  3,
		"CRED":  4,
	}
)

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

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

func (ClientDel_What) Descriptor() protoreflect.EnumDescriptor {
	return file_model_proto_enumTypes[4].Descriptor()
}

func (ClientDel_What) Type() protoreflect.EnumType {
	return &file_model_proto_enumTypes[4]
}

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

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

type ServerPres_What int32

const (
	ServerPres_ON   ServerPres_What = 0
	ServerPres_OFF  ServerPres_What = 1
	ServerPres_UA   ServerPres_What = 3
	ServerPres_UPD  ServerPres_What = 4
	ServerPres_GONE ServerPres_What = 5
	ServerPres_ACS  ServerPres_What = 6
	ServerPres_TERM ServerPres_What = 7
	ServerPres_MSG  ServerPres_What = 8
	ServerPres_READ ServerPres_What = 9
	ServerPres_RECV ServerPres_What = 10
	ServerPres_DEL  ServerPres_What = 11
	ServerPres_TAGS ServerPres_What = 12
)

// Enum value maps for ServerPres_What.
var (
	ServerPres_What_name = map[int32]string{
		0:  "ON",
		1:  "OFF",
		3:  "UA",
		4:  "UPD",
		5:  "GONE",
		6:  "ACS",
		7:  "TERM",
		8:  "MSG",
		9:  "READ",
		10: "RECV",
		11: "DEL",
		12: "TAGS",
	}
	ServerPres_What_value = map[string]int32{
		"ON":   0,
		"OFF":  1,
		"UA":   3,
		"UPD":  4,
		"GONE": 5,
		"ACS":  6,
		"TERM": 7,
		"MSG":  8,
		"READ": 9,
		"RECV": 10,
		"DEL":  11,
		"TAGS": 12,
	}
)

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

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

func (ServerPres_What) Descriptor() protoreflect.EnumDescriptor {
	return file_model_proto_enumTypes[5].Descriptor()
}

func (ServerPres_What) Type() protoreflect.EnumType {
	return &file_model_proto_enumTypes[5]
}

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

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

// Dummy placeholder message.
type Unused struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*Unused) ProtoMessage() {}

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

// Topic default access mode
type DefaultAcsMode struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Auth string `protobuf:"bytes,1,opt,name=auth,proto3" json:"auth,omitempty"`
	Anon string `protobuf:"bytes,2,opt,name=anon,proto3" json:"anon,omitempty"`
}

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

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

func (*DefaultAcsMode) ProtoMessage() {}

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

func (x *DefaultAcsMode) GetAuth() string {
	if x != nil {
		return x.Auth
	}
	return ""
}

func (x *DefaultAcsMode) GetAnon() string {
	if x != nil {
		return x.Anon
	}
	return ""
}

// Actual access mode
type AccessMode struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Access mode requested by the user
	Want string `protobuf:"bytes,1,opt,name=want,proto3" json:"want,omitempty"`
	// Access mode granted to the user by the admin
	Given string `protobuf:"bytes,2,opt,name=given,proto3" json:"given,omitempty"`
}

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

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

func (*AccessMode) ProtoMessage() {}

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

func (x *AccessMode) GetWant() string {
	if x != nil {
		return x.Want
	}
	return ""
}

func (x *AccessMode) GetGiven() string {
	if x != nil {
		return x.Given
	}
	return ""
}

// SetSub: payload in set.sub request to update current subscription or invite another user, {sub.what} == "sub"
type SetSub struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// User affected by this request. Default (empty): current user
	UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Access mode change, either Given or Want depending on context
	Mode string `protobuf:"bytes,2,opt,name=mode,proto3" json:"mode,omitempty"`
}

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

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

func (*SetSub) ProtoMessage() {}

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

func (x *SetSub) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *SetSub) GetMode() string {
	if x != nil {
		return x.Mode
	}
	return ""
}

// Credentials such as email or phone number
type ClientCred struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Credential type, i.e. `email` or `tel`.
	Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"`
	// Value to verify, i.e. `user@example.com` or `+18003287448`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// Verification response
	Response string `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"`
	// Request parameters, such as preferences or country code.
	Params map[string][]byte `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*ClientCred) ProtoMessage() {}

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

func (x *ClientCred) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *ClientCred) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *ClientCred) GetResponse() string {
	if x != nil {
		return x.Response
	}
	return ""
}

func (x *ClientCred) GetParams() map[string][]byte {
	if x != nil {
		return x.Params
	}
	return nil
}

// SetDesc: C2S in set.what == "desc" and sub.init message
type SetDesc struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DefaultAcs *DefaultAcsMode `protobuf:"bytes,1,opt,name=default_acs,json=defaultAcs,proto3" json:"default_acs,omitempty"`
	Public     []byte          `protobuf:"bytes,2,opt,name=public,proto3" json:"public,omitempty"`
	Private    []byte          `protobuf:"bytes,3,opt,name=private,proto3" json:"private,omitempty"`
	Trusted    []byte          `protobuf:"bytes,4,opt,name=trusted,proto3" json:"trusted,omitempty"`
}

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

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

func (*SetDesc) ProtoMessage() {}

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

func (x *SetDesc) GetDefaultAcs() *DefaultAcsMode {
	if x != nil {
		return x.DefaultAcs
	}
	return nil
}

func (x *SetDesc) GetPublic() []byte {
	if x != nil {
		return x.Public
	}
	return nil
}

func (x *SetDesc) GetPrivate() []byte {
	if x != nil {
		return x.Private
	}
	return nil
}

func (x *SetDesc) GetTrusted() []byte {
	if x != nil {
		return x.Trusted
	}
	return nil
}

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

	// Timestamp in milliseconds since epoch 01/01/1970
	IfModifiedSince int64 `protobuf:"varint,1,opt,name=if_modified_since,json=ifModifiedSince,proto3" json:"if_modified_since,omitempty"`
	// Limit search to this user ID
	User string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	// Limit search results to one topic;
	Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"`
	// Load messages with seq id equal or greater than this
	SinceId int32 `protobuf:"varint,4,opt,name=since_id,json=sinceId,proto3" json:"since_id,omitempty"`
	// Load messages with seq id lower than this
	BeforeId int32 `protobuf:"varint,5,opt,name=before_id,json=beforeId,proto3" json:"before_id,omitempty"`
	// Maximum number of results to return
	Limit int32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"`
}

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

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

func (*GetOpts) ProtoMessage() {}

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

func (x *GetOpts) GetIfModifiedSince() int64 {
	if x != nil {
		return x.IfModifiedSince
	}
	return 0
}

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

func (x *GetOpts) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *GetOpts) GetSinceId() int32 {
	if x != nil {
		return x.SinceId
	}
	return 0
}

func (x *GetOpts) GetBeforeId() int32 {
	if x != nil {
		return x.BeforeId
	}
	return 0
}

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

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

	What string `protobuf:"bytes,1,opt,name=what,proto3" json:"what,omitempty"`
	// Parameters of "desc" request
	Desc *GetOpts `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
	// Parameters of "sub" request
	Sub *GetOpts `protobuf:"bytes,3,opt,name=sub,proto3" json:"sub,omitempty"`
	// Parameters of "data" request
	Data *GetOpts `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*GetQuery) ProtoMessage() {}

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

func (x *GetQuery) GetWhat() string {
	if x != nil {
		return x.What
	}
	return ""
}

func (x *GetQuery) GetDesc() *GetOpts {
	if x != nil {
		return x.Desc
	}
	return nil
}

func (x *GetQuery) GetSub() *GetOpts {
	if x != nil {
		return x.Sub
	}
	return nil
}

func (x *GetQuery) GetData() *GetOpts {
	if x != nil {
		return x.Data
	}
	return nil
}

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

	// Topic metadata, new topic & new subscriptions only
	Desc *SetDesc `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
	// Subscription parameters
	Sub *SetSub `protobuf:"bytes,2,opt,name=sub,proto3" json:"sub,omitempty"`
	// Indexable tags
	Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"`
	// Credential being updated.
	Cred *ClientCred `protobuf:"bytes,4,opt,name=cred,proto3" json:"cred,omitempty"`
}

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

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

func (*SetQuery) ProtoMessage() {}

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

func (x *SetQuery) GetDesc() *SetDesc {
	if x != nil {
		return x.Desc
	}
	return nil
}

func (x *SetQuery) GetSub() *SetSub {
	if x != nil {
		return x.Sub
	}
	return nil
}

func (x *SetQuery) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *SetQuery) GetCred() *ClientCred {
	if x != nil {
		return x.Cred
	}
	return nil
}

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

	Low int32 `protobuf:"varint,1,opt,name=low,proto3" json:"low,omitempty"`
	Hi  int32 `protobuf:"varint,2,opt,name=hi,proto3" json:"hi,omitempty"`
}

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

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

func (*SeqRange) ProtoMessage() {}

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

func (x *SeqRange) GetLow() int32 {
	if x != nil {
		return x.Low
	}
	return 0
}

func (x *SeqRange) GetHi() int32 {
	if x != nil {
		return x.Hi
	}
	return 0
}

// Client handshake
type ClientHi struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id         string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	UserAgent  string `protobuf:"bytes,2,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
	Ver        string `protobuf:"bytes,3,opt,name=ver,proto3" json:"ver,omitempty"`
	DeviceId   string `protobuf:"bytes,4,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	Lang       string `protobuf:"bytes,5,opt,name=lang,proto3" json:"lang,omitempty"`
	Platform   string `protobuf:"bytes,6,opt,name=platform,proto3" json:"platform,omitempty"`
	Background bool   `protobuf:"varint,7,opt,name=background,proto3" json:"background,omitempty"`
}

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

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

func (*ClientHi) ProtoMessage() {}

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

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

func (x *ClientHi) GetUserAgent() string {
	if x != nil {
		return x.UserAgent
	}
	return ""
}

func (x *ClientHi) GetVer() string {
	if x != nil {
		return x.Ver
	}
	return ""
}

func (x *ClientHi) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *ClientHi) GetLang() string {
	if x != nil {
		return x.Lang
	}
	return ""
}

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

func (x *ClientHi) GetBackground() bool {
	if x != nil {
		return x.Background
	}
	return false
}

// User creation message {acc}
type ClientAcc struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// User being created or updated
	UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// The initial authentication scheme the account can use
	Scheme string `protobuf:"bytes,3,opt,name=scheme,proto3" json:"scheme,omitempty"`
	// Shared secret
	Secret []byte `protobuf:"bytes,4,opt,name=secret,proto3" json:"secret,omitempty"`
	// Authenticate session with the newly created account
	Login bool `protobuf:"varint,5,opt,name=login,proto3" json:"login,omitempty"`
	// Indexable tags for user discovery
	Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"`
	// User initialization data when creating a new user, otherwise ignored
	Desc *SetDesc `protobuf:"bytes,7,opt,name=desc,proto3" json:"desc,omitempty"`
	// Credentials for verification.
	Cred []*ClientCred `protobuf:"bytes,8,rep,name=cred,proto3" json:"cred,omitempty"`
	// Authentication token used for resetting a password.
	Token []byte `protobuf:"bytes,9,opt,name=token,proto3" json:"token,omitempty"`
	// Account state: normal ("ok"), suspended
	State string `protobuf:"bytes,10,opt,name=state,proto3" json:"state,omitempty"`
}

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

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

func (*ClientAcc) ProtoMessage() {}

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

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

func (x *ClientAcc) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *ClientAcc) GetScheme() string {
	if x != nil {
		return x.Scheme
	}
	return ""
}

func (x *ClientAcc) GetSecret() []byte {
	if x != nil {
		return x.Secret
	}
	return nil
}

func (x *ClientAcc) GetLogin() bool {
	if x != nil {
		return x.Login
	}
	return false
}

func (x *ClientAcc) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *ClientAcc) GetDesc() *SetDesc {
	if x != nil {
		return x.Desc
	}
	return nil
}

func (x *ClientAcc) GetCred() []*ClientCred {
	if x != nil {
		return x.Cred
	}
	return nil
}

func (x *ClientAcc) GetToken() []byte {
	if x != nil {
		return x.Token
	}
	return nil
}

func (x *ClientAcc) GetState() string {
	if x != nil {
		return x.State
	}
	return ""
}

// Login {login} message
type ClientLogin struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Authentication scheme
	Scheme string `protobuf:"bytes,2,opt,name=scheme,proto3" json:"scheme,omitempty"`
	// Shared secret
	Secret []byte `protobuf:"bytes,3,opt,name=secret,proto3" json:"secret,omitempty"`
	// Credentials for verification.
	Cred []*ClientCred `protobuf:"bytes,4,rep,name=cred,proto3" json:"cred,omitempty"`
}

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

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

func (*ClientLogin) ProtoMessage() {}

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

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

func (x *ClientLogin) GetScheme() string {
	if x != nil {
		return x.Scheme
	}
	return ""
}

func (x *ClientLogin) GetSecret() []byte {
	if x != nil {
		return x.Secret
	}
	return nil
}

func (x *ClientLogin) GetCred() []*ClientCred {
	if x != nil {
		return x.Cred
	}
	return nil
}

// Subscription request {sub} message
type ClientSub struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id    string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	// mirrors {set}
	SetQuery *SetQuery `protobuf:"bytes,3,opt,name=set_query,json=setQuery,proto3" json:"set_query,omitempty"`
	// mirrors {get}
	GetQuery *GetQuery `protobuf:"bytes,4,opt,name=get_query,json=getQuery,proto3" json:"get_query,omitempty"`
}

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

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

func (*ClientSub) ProtoMessage() {}

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

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

func (x *ClientSub) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ClientSub) GetSetQuery() *SetQuery {
	if x != nil {
		return x.SetQuery
	}
	return nil
}

func (x *ClientSub) GetGetQuery() *GetQuery {
	if x != nil {
		return x.GetQuery
	}
	return nil
}

// Unsubscribe {leave} request message
type ClientLeave struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id    string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	Unsub bool   `protobuf:"varint,3,opt,name=unsub,proto3" json:"unsub,omitempty"`
}

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

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

func (*ClientLeave) ProtoMessage() {}

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

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

func (x *ClientLeave) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ClientLeave) GetUnsub() bool {
	if x != nil {
		return x.Unsub
	}
	return false
}

// ClientPub is client's request to publish data to topic subscribers {pub}
type ClientPub struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id      string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Topic   string            `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	NoEcho  bool              `protobuf:"varint,3,opt,name=no_echo,json=noEcho,proto3" json:"no_echo,omitempty"`
	Head    map[string][]byte `protobuf:"bytes,4,rep,name=head,proto3" json:"head,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Content []byte            `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"`
}

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

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

func (*ClientPub) ProtoMessage() {}

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

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

func (x *ClientPub) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ClientPub) GetNoEcho() bool {
	if x != nil {
		return x.NoEcho
	}
	return false
}

func (x *ClientPub) GetHead() map[string][]byte {
	if x != nil {
		return x.Head
	}
	return nil
}

func (x *ClientPub) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

// Query topic state {get}
type ClientGet struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id    string    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Topic string    `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	Query *GetQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"`
}

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

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

func (*ClientGet) ProtoMessage() {}

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

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

func (x *ClientGet) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ClientGet) GetQuery() *GetQuery {
	if x != nil {
		return x.Query
	}
	return nil
}

// Update topic state {set}
type ClientSet struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id    string    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Topic string    `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	Query *SetQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"`
}

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

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

func (*ClientSet) ProtoMessage() {}

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

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

func (x *ClientSet) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ClientSet) GetQuery() *SetQuery {
	if x != nil {
		return x.Query
	}
	return nil
}

// ClientDel delete messages or topic
type ClientDel struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id    string         `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Topic string         `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	What  ClientDel_What `protobuf:"varint,3,opt,name=what,proto3,enum=pbx.ClientDel_What" json:"what,omitempty"`
	// Delete messages by id or range of ids
	DelSeq []*SeqRange `protobuf:"bytes,4,rep,name=del_seq,json=delSeq,proto3" json:"del_seq,omitempty"`
	// User ID of the subscription to delete
	UserId string `protobuf:"bytes,5,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Credential to delete.
	Cred *ClientCred `protobuf:"bytes,6,opt,name=cred,proto3" json:"cred,omitempty"`
	// Request to hard-delete messages for all users, if such option is available.
	Hard bool `protobuf:"varint,7,opt,name=hard,proto3" json:"hard,omitempty"`
}

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

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

func (*ClientDel) ProtoMessage() {}

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

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

func (x *ClientDel) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ClientDel) GetWhat() ClientDel_What {
	if x != nil {
		return x.What
	}
	return ClientDel_MSG
}

func (x *ClientDel) GetDelSeq() []*SeqRange {
	if x != nil {
		return x.DelSeq
	}
	return nil
}

func (x *ClientDel) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *ClientDel) GetCred() *ClientCred {
	if x != nil {
		return x.Cred
	}
	return nil
}

func (x *ClientDel) GetHard() bool {
	if x != nil {
		return x.Hard
	}
	return false
}

// ClientNote is a client-generated notification for topic subscribers
type ClientNote struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	// what is being reported: "recv" - message received, "read" - message read, "kp" - typing notification
	What InfoNote `protobuf:"varint,2,opt,name=what,proto3,enum=pbx.InfoNote" json:"what,omitempty"`
	// Server-issued message ID being reported
	SeqId int32 `protobuf:"varint,3,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"`
}

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

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

func (*ClientNote) ProtoMessage() {}

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

func (x *ClientNote) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ClientNote) GetWhat() InfoNote {
	if x != nil {
		return x.What
	}
	return InfoNote_READ
}

func (x *ClientNote) GetSeqId() int32 {
	if x != nil {
		return x.SeqId
	}
	return 0
}

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

	Attachments []string `protobuf:"bytes,1,rep,name=attachments,proto3" json:"attachments,omitempty"`
	// Root user may send messages on behalf of other users.
	OnBehalfOf string    `protobuf:"bytes,2,opt,name=on_behalf_of,json=onBehalfOf,proto3" json:"on_behalf_of,omitempty"`
	AuthLevel  AuthLevel `protobuf:"varint,3,opt,name=auth_level,json=authLevel,proto3,enum=pbx.AuthLevel" json:"auth_level,omitempty"`
}

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

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

func (*ClientExtra) ProtoMessage() {}

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

func (x *ClientExtra) GetAttachments() []string {
	if x != nil {
		return x.Attachments
	}
	return nil
}

func (x *ClientExtra) GetOnBehalfOf() string {
	if x != nil {
		return x.OnBehalfOf
	}
	return ""
}

func (x *ClientExtra) GetAuthLevel() AuthLevel {
	if x != nil {
		return x.AuthLevel
	}
	return AuthLevel_NONE
}

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

	// Types that are assignable to Message:
	//	*ClientMsg_Hi
	//	*ClientMsg_Acc
	//	*ClientMsg_Login
	//	*ClientMsg_Sub
	//	*ClientMsg_Leave
	//	*ClientMsg_Pub
	//	*ClientMsg_Get
	//	*ClientMsg_Set
	//	*ClientMsg_Del
	//	*ClientMsg_Note
	Message isClientMsg_Message `protobuf_oneof:"Message"`
	// Additional message parameters.
	Extra *ClientExtra `protobuf:"bytes,13,opt,name=extra,proto3" json:"extra,omitempty"`
}

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

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

func (*ClientMsg) ProtoMessage() {}

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

func (m *ClientMsg) GetMessage() isClientMsg_Message {
	if m != nil {
		return m.Message
	}
	return nil
}

func (x *ClientMsg) GetHi() *ClientHi {
	if x, ok := x.GetMessage().(*ClientMsg_Hi); ok {
		return x.Hi
	}
	return nil
}

func (x *ClientMsg) GetAcc() *ClientAcc {
	if x, ok := x.GetMessage().(*ClientMsg_Acc); ok {
		return x.Acc
	}
	return nil
}

func (x *ClientMsg) GetLogin() *ClientLogin {
	if x, ok := x.GetMessage().(*ClientMsg_Login); ok {
		return x.Login
	}
	return nil
}

func (x *ClientMsg) GetSub() *ClientSub {
	if x, ok := x.GetMessage().(*ClientMsg_Sub); ok {
		return x.Sub
	}
	return nil
}

func (x *ClientMsg) GetLeave() *ClientLeave {
	if x, ok := x.GetMessage().(*ClientMsg_Leave); ok {
		return x.Leave
	}
	return nil
}

func (x *ClientMsg) GetPub() *ClientPub {
	if x, ok := x.GetMessage().(*ClientMsg_Pub); ok {
		return x.Pub
	}
	return nil
}

func (x *ClientMsg) GetGet() *ClientGet {
	if x, ok := x.GetMessage().(*ClientMsg_Get); ok {
		return x.Get
	}
	return nil
}

func (x *ClientMsg) GetSet() *ClientSet {
	if x, ok := x.GetMessage().(*ClientMsg_Set); ok {
		return x.Set
	}
	return nil
}

func (x *ClientMsg) GetDel() *ClientDel {
	if x, ok := x.GetMessage().(*ClientMsg_Del); ok {
		return x.Del
	}
	return nil
}

func (x *ClientMsg) GetNote() *ClientNote {
	if x, ok := x.GetMessage().(*ClientMsg_Note); ok {
		return x.Note
	}
	return nil
}

func (x *ClientMsg) GetExtra() *ClientExtra {
	if x != nil {
		return x.Extra
	}
	return nil
}

type isClientMsg_Message interface {
	isClientMsg_Message()
}

type ClientMsg_Hi struct {
	Hi *ClientHi `protobuf:"bytes,1,opt,name=hi,proto3,oneof"`
}

type ClientMsg_Acc struct {
	Acc *ClientAcc `protobuf:"bytes,2,opt,name=acc,proto3,oneof"`
}

type ClientMsg_Login struct {
	Login *ClientLogin `protobuf:"bytes,3,opt,name=login,proto3,oneof"`
}

type ClientMsg_Sub struct {
	Sub *ClientSub `protobuf:"bytes,4,opt,name=sub,proto3,oneof"`
}

type ClientMsg_Leave struct {
	Leave *ClientLeave `protobuf:"bytes,5,opt,name=leave,proto3,oneof"`
}

type ClientMsg_Pub struct {
	Pub *ClientPub `protobuf:"bytes,6,opt,name=pub,proto3,oneof"`
}

type ClientMsg_Get struct {
	Get *ClientGet `protobuf:"bytes,7,opt,name=get,proto3,oneof"`
}

type ClientMsg_Set struct {
	Set *ClientSet `protobuf:"bytes,8,opt,name=set,proto3,oneof"`
}

type ClientMsg_Del struct {
	Del *ClientDel `protobuf:"bytes,9,opt,name=del,proto3,oneof"`
}

type ClientMsg_Note struct {
	Note *ClientNote `protobuf:"bytes,10,opt,name=note,proto3,oneof"`
}

func (*ClientMsg_Hi) isClientMsg_Message() {}

func (*ClientMsg_Acc) isClientMsg_Message() {}

func (*ClientMsg_Login) isClientMsg_Message() {}

func (*ClientMsg_Sub) isClientMsg_Message() {}

func (*ClientMsg_Leave) isClientMsg_Message() {}

func (*ClientMsg_Pub) isClientMsg_Message() {}

func (*ClientMsg_Get) isClientMsg_Message() {}

func (*ClientMsg_Set) isClientMsg_Message() {}

func (*ClientMsg_Del) isClientMsg_Message() {}

func (*ClientMsg_Note) isClientMsg_Message() {}

// Credentials
type ServerCred struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Credential type, i.e. `email` or `tel`.
	Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"`
	// Value to verify, i.e. `user@example.com` or `+18003287448`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// Indicator that the credential is validated
	Done bool `protobuf:"varint,3,opt,name=done,proto3" json:"done,omitempty"`
}

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

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

func (*ServerCred) ProtoMessage() {}

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

func (x *ServerCred) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *ServerCred) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *ServerCred) GetDone() bool {
	if x != nil {
		return x.Done
	}
	return false
}

// Topic description, S2C in Meta message
type TopicDesc struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CreatedAt int64           `protobuf:"varint,1,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	UpdatedAt int64           `protobuf:"varint,2,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	TouchedAt int64           `protobuf:"varint,3,opt,name=touched_at,json=touchedAt,proto3" json:"touched_at,omitempty"`
	Defacs    *DefaultAcsMode `protobuf:"bytes,4,opt,name=defacs,proto3" json:"defacs,omitempty"`
	Acs       *AccessMode     `protobuf:"bytes,5,opt,name=acs,proto3" json:"acs,omitempty"`
	SeqId     int32           `protobuf:"varint,6,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"`
	ReadId    int32           `protobuf:"varint,7,opt,name=read_id,json=readId,proto3" json:"read_id,omitempty"`
	RecvId    int32           `protobuf:"varint,8,opt,name=recv_id,json=recvId,proto3" json:"recv_id,omitempty"`
	DelId     int32           `protobuf:"varint,9,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"`
	Public    []byte          `protobuf:"bytes,10,opt,name=public,proto3" json:"public,omitempty"`
	Private   []byte          `protobuf:"bytes,11,opt,name=private,proto3" json:"private,omitempty"`
	State     string          `protobuf:"bytes,12,opt,name=state,proto3" json:"state,omitempty"`
	StateAt   int64           `protobuf:"varint,13,opt,name=state_at,json=stateAt,proto3" json:"state_at,omitempty"`
	Trusted   []byte          `protobuf:"bytes,14,opt,name=trusted,proto3" json:"trusted,omitempty"`
	IsChan    bool            `protobuf:"varint,17,opt,name=is_chan,json=isChan,proto3" json:"is_chan,omitempty"` // 17!
	// P2P only: other user's last online timestamp & user agent
	LastSeenTime      int64  `protobuf:"varint,15,opt,name=last_seen_time,json=lastSeenTime,proto3" json:"last_seen_time,omitempty"`
	LastSeenUserAgent string `protobuf:"bytes,16,opt,name=last_seen_user_agent,json=lastSeenUserAgent,proto3" json:"last_seen_user_agent,omitempty"`
}

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

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

func (*TopicDesc) ProtoMessage() {}

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

func (x *TopicDesc) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *TopicDesc) GetUpdatedAt() int64 {
	if x != nil {
		return x.UpdatedAt
	}
	return 0
}

func (x *TopicDesc) GetTouchedAt() int64 {
	if x != nil {
		return x.TouchedAt
	}
	return 0
}

func (x *TopicDesc) GetDefacs() *DefaultAcsMode {
	if x != nil {
		return x.Defacs
	}
	return nil
}

func (x *TopicDesc) GetAcs() *AccessMode {
	if x != nil {
		return x.Acs
	}
	return nil
}

func (x *TopicDesc) GetSeqId() int32 {
	if x != nil {
		return x.SeqId
	}
	return 0
}

func (x *TopicDesc) GetReadId() int32 {
	if x != nil {
		return x.ReadId
	}
	return 0
}

func (x *TopicDesc) GetRecvId() int32 {
	if x != nil {
		return x.RecvId
	}
	return 0
}

func (x *TopicDesc) GetDelId() int32 {
	if x != nil {
		return x.DelId
	}
	return 0
}

func (x *TopicDesc) GetPublic() []byte {
	if x != nil {
		return x.Public
	}
	return nil
}

func (x *TopicDesc) GetPrivate() []byte {
	if x != nil {
		return x.Private
	}
	return nil
}

func (x *TopicDesc) GetState() string {
	if x != nil {
		return x.State
	}
	return ""
}

func (x *TopicDesc) GetStateAt() int64 {
	if x != nil {
		return x.StateAt
	}
	return 0
}

func (x *TopicDesc) GetTrusted() []byte {
	if x != nil {
		return x.Trusted
	}
	return nil
}

func (x *TopicDesc) GetIsChan() bool {
	if x != nil {
		return x.IsChan
	}
	return false
}

func (x *TopicDesc) GetLastSeenTime() int64 {
	if x != nil {
		return x.LastSeenTime
	}
	return 0
}

func (x *TopicDesc) GetLastSeenUserAgent() string {
	if x != nil {
		return x.LastSeenUserAgent
	}
	return ""
}

// MsgTopicSub: topic subscription details, sent in Meta message
type TopicSub struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UpdatedAt int64       `protobuf:"varint,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	DeletedAt int64       `protobuf:"varint,2,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
	Online    bool        `protobuf:"varint,3,opt,name=online,proto3" json:"online,omitempty"`
	Acs       *AccessMode `protobuf:"bytes,4,opt,name=acs,proto3" json:"acs,omitempty"`
	ReadId    int32       `protobuf:"varint,5,opt,name=read_id,json=readId,proto3" json:"read_id,omitempty"`
	RecvId    int32       `protobuf:"varint,6,opt,name=recv_id,json=recvId,proto3" json:"recv_id,omitempty"`
	Public    []byte      `protobuf:"bytes,7,opt,name=public,proto3" json:"public,omitempty"`
	Trusted   []byte      `protobuf:"bytes,16,opt,name=trusted,proto3" json:"trusted,omitempty"` // 16!
	Private   []byte      `protobuf:"bytes,8,opt,name=private,proto3" json:"private,omitempty"`
	// Uid of the subscribed user
	UserId string `protobuf:"bytes,9,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Topic name of this subscription
	Topic     string `protobuf:"bytes,10,opt,name=topic,proto3" json:"topic,omitempty"`
	TouchedAt int64  `protobuf:"varint,11,opt,name=touched_at,json=touchedAt,proto3" json:"touched_at,omitempty"`
	// ID of the last {data} message in a topic
	SeqId int32 `protobuf:"varint,12,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"`
	// Messages are deleted up to this ID
	DelId int32 `protobuf:"varint,13,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"`
	// Other user's last online timestamp & user agent
	LastSeenTime      int64  `protobuf:"varint,14,opt,name=last_seen_time,json=lastSeenTime,proto3" json:"last_seen_time,omitempty"`
	LastSeenUserAgent string `protobuf:"bytes,15,opt,name=last_seen_user_agent,json=lastSeenUserAgent,proto3" json:"last_seen_user_agent,omitempty"`
}

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

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

func (*TopicSub) ProtoMessage() {}

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

func (x *TopicSub) GetUpdatedAt() int64 {
	if x != nil {
		return x.UpdatedAt
	}
	return 0
}

func (x *TopicSub) GetDeletedAt() int64 {
	if x != nil {
		return x.DeletedAt
	}
	return 0
}

func (x *TopicSub) GetOnline() bool {
	if x != nil {
		return x.Online
	}
	return false
}

func (x *TopicSub) GetAcs() *AccessMode {
	if x != nil {
		return x.Acs
	}
	return nil
}

func (x *TopicSub) GetReadId() int32 {
	if x != nil {
		return x.ReadId
	}
	return 0
}

func (x *TopicSub) GetRecvId() int32 {
	if x != nil {
		return x.RecvId
	}
	return 0
}

func (x *TopicSub) GetPublic() []byte {
	if x != nil {
		return x.Public
	}
	return nil
}

func (x *TopicSub) GetTrusted() []byte {
	if x != nil {
		return x.Trusted
	}
	return nil
}

func (x *TopicSub) GetPrivate() []byte {
	if x != nil {
		return x.Private
	}
	return nil
}

func (x *TopicSub) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *TopicSub) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *TopicSub) GetTouchedAt() int64 {
	if x != nil {
		return x.TouchedAt
	}
	return 0
}

func (x *TopicSub) GetSeqId() int32 {
	if x != nil {
		return x.SeqId
	}
	return 0
}

func (x *TopicSub) GetDelId() int32 {
	if x != nil {
		return x.DelId
	}
	return 0
}

func (x *TopicSub) GetLastSeenTime() int64 {
	if x != nil {
		return x.LastSeenTime
	}
	return 0
}

func (x *TopicSub) GetLastSeenUserAgent() string {
	if x != nil {
		return x.LastSeenUserAgent
	}
	return ""
}

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

	DelId  int32       `protobuf:"varint,1,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"`
	DelSeq []*SeqRange `protobuf:"bytes,2,rep,name=del_seq,json=delSeq,proto3" json:"del_seq,omitempty"`
}

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

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

func (*DelValues) ProtoMessage() {}

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

func (x *DelValues) GetDelId() int32 {
	if x != nil {
		return x.DelId
	}
	return 0
}

func (x *DelValues) GetDelSeq() []*SeqRange {
	if x != nil {
		return x.DelSeq
	}
	return nil
}

// {ctrl} message
type ServerCtrl struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id     string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Topic  string            `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	Code   int32             `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"`
	Text   string            `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
	Params map[string][]byte `protobuf:"bytes,5,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*ServerCtrl) ProtoMessage() {}

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

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

func (x *ServerCtrl) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ServerCtrl) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *ServerCtrl) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

func (x *ServerCtrl) GetParams() map[string][]byte {
	if x != nil {
		return x.Params
	}
	return nil
}

// {data} message
type ServerData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	// ID of the user who originated the message as {pub}, could be empty if sent by the system
	FromUserId string `protobuf:"bytes,2,opt,name=from_user_id,json=fromUserId,proto3" json:"from_user_id,omitempty"`
	// Timestamp when the message was sent.
	Timestamp int64 `protobuf:"varint,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	// Timestamp when the message was deleted or 0. Milliseconds since the epoch 01/01/1970
	DeletedAt int64             `protobuf:"varint,3,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
	SeqId     int32             `protobuf:"varint,4,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"`
	Head      map[string][]byte `protobuf:"bytes,5,rep,name=head,proto3" json:"head,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Content   []byte            `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`
}

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

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

func (*ServerData) ProtoMessage() {}

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

func (x *ServerData) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ServerData) GetFromUserId() string {
	if x != nil {
		return x.FromUserId
	}
	return ""
}

func (x *ServerData) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *ServerData) GetDeletedAt() int64 {
	if x != nil {
		return x.DeletedAt
	}
	return 0
}

func (x *ServerData) GetSeqId() int32 {
	if x != nil {
		return x.SeqId
	}
	return 0
}

func (x *ServerData) GetHead() map[string][]byte {
	if x != nil {
		return x.Head
	}
	return nil
}

func (x *ServerData) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

// {pres} message
type ServerPres struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic        string          `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	Src          string          `protobuf:"bytes,2,opt,name=src,proto3" json:"src,omitempty"`
	What         ServerPres_What `protobuf:"varint,3,opt,name=what,proto3,enum=pbx.ServerPres_What" json:"what,omitempty"`
	UserAgent    string          `protobuf:"bytes,4,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
	SeqId        int32           `protobuf:"varint,5,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"`
	DelId        int32           `protobuf:"varint,6,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"`
	DelSeq       []*SeqRange     `protobuf:"bytes,7,rep,name=del_seq,json=delSeq,proto3" json:"del_seq,omitempty"`
	TargetUserId string          `protobuf:"bytes,8,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	ActorUserId  string          `protobuf:"bytes,9,opt,name=actor_user_id,json=actorUserId,proto3" json:"actor_user_id,omitempty"`
	Acs          *AccessMode     `protobuf:"bytes,10,opt,name=acs,proto3" json:"acs,omitempty"`
}

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

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

func (*ServerPres) ProtoMessage() {}

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

func (x *ServerPres) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ServerPres) GetSrc() string {
	if x != nil {
		return x.Src
	}
	return ""
}

func (x *ServerPres) GetWhat() ServerPres_What {
	if x != nil {
		return x.What
	}
	return ServerPres_ON
}

func (x *ServerPres) GetUserAgent() string {
	if x != nil {
		return x.UserAgent
	}
	return ""
}

func (x *ServerPres) GetSeqId() int32 {
	if x != nil {
		return x.SeqId
	}
	return 0
}

func (x *ServerPres) GetDelId() int32 {
	if x != nil {
		return x.DelId
	}
	return 0
}

func (x *ServerPres) GetDelSeq() []*SeqRange {
	if x != nil {
		return x.DelSeq
	}
	return nil
}

func (x *ServerPres) GetTargetUserId() string {
	if x != nil {
		return x.TargetUserId
	}
	return ""
}

func (x *ServerPres) GetActorUserId() string {
	if x != nil {
		return x.ActorUserId
	}
	return ""
}

func (x *ServerPres) GetAcs() *AccessMode {
	if x != nil {
		return x.Acs
	}
	return nil
}

// {meta} message
type ServerMeta struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id    string        `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Topic string        `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	Desc  *TopicDesc    `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"`
	Sub   []*TopicSub   `protobuf:"bytes,4,rep,name=sub,proto3" json:"sub,omitempty"`
	Del   *DelValues    `protobuf:"bytes,5,opt,name=del,proto3" json:"del,omitempty"`
	Tags  []string      `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"`
	Cred  []*ServerCred `protobuf:"bytes,7,rep,name=cred,proto3" json:"cred,omitempty"`
}

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

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

func (*ServerMeta) ProtoMessage() {}

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

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

func (x *ServerMeta) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ServerMeta) GetDesc() *TopicDesc {
	if x != nil {
		return x.Desc
	}
	return nil
}

func (x *ServerMeta) GetSub() []*TopicSub {
	if x != nil {
		return x.Sub
	}
	return nil
}

func (x *ServerMeta) GetDel() *DelValues {
	if x != nil {
		return x.Del
	}
	return nil
}

func (x *ServerMeta) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *ServerMeta) GetCred() []*ServerCred {
	if x != nil {
		return x.Cred
	}
	return nil
}

// {info} message: server-side copy of ClientNote with From and optional Src added.
type ServerInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic      string   `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	FromUserId string   `protobuf:"bytes,2,opt,name=from_user_id,json=fromUserId,proto3" json:"from_user_id,omitempty"`
	What       InfoNote `protobuf:"varint,3,opt,name=what,proto3,enum=pbx.InfoNote" json:"what,omitempty"`
	SeqId      int32    `protobuf:"varint,4,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"`
	Src        string   `protobuf:"bytes,5,opt,name=src,proto3" json:"src,omitempty"`
}

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

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

func (*ServerInfo) ProtoMessage() {}

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

func (x *ServerInfo) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *ServerInfo) GetFromUserId() string {
	if x != nil {
		return x.FromUserId
	}
	return ""
}

func (x *ServerInfo) GetWhat() InfoNote {
	if x != nil {
		return x.What
	}
	return InfoNote_READ
}

func (x *ServerInfo) GetSeqId() int32 {
	if x != nil {
		return x.SeqId
	}
	return 0
}

func (x *ServerInfo) GetSrc() string {
	if x != nil {
		return x.Src
	}
	return ""
}

// Cumulative message
type ServerMsg struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Message:
	//	*ServerMsg_Ctrl
	//	*ServerMsg_Data
	//	*ServerMsg_Pres
	//	*ServerMsg_Meta
	//	*ServerMsg_Info
	Message isServerMsg_Message `protobuf_oneof:"Message"`
	// When response is sent to Root, send internal topic name too.
	Topic string `protobuf:"bytes,6,opt,name=topic,proto3" json:"topic,omitempty"`
}

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

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

func (*ServerMsg) ProtoMessage() {}

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

func (m *ServerMsg) GetMessage() isServerMsg_Message {
	if m != nil {
		return m.Message
	}
	return nil
}

func (x *ServerMsg) GetCtrl() *ServerCtrl {
	if x, ok := x.GetMessage().(*ServerMsg_Ctrl); ok {
		return x.Ctrl
	}
	return nil
}

func (x *ServerMsg) GetData() *ServerData {
	if x, ok := x.GetMessage().(*ServerMsg_Data); ok {
		return x.Data
	}
	return nil
}

func (x *ServerMsg) GetPres() *ServerPres {
	if x, ok := x.GetMessage().(*ServerMsg_Pres); ok {
		return x.Pres
	}
	return nil
}

func (x *ServerMsg) GetMeta() *ServerMeta {
	if x, ok := x.GetMessage().(*ServerMsg_Meta); ok {
		return x.Meta
	}
	return nil
}

func (x *ServerMsg) GetInfo() *ServerInfo {
	if x, ok := x.GetMessage().(*ServerMsg_Info); ok {
		return x.Info
	}
	return nil
}

func (x *ServerMsg) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

type isServerMsg_Message interface {
	isServerMsg_Message()
}

type ServerMsg_Ctrl struct {
	Ctrl *ServerCtrl `protobuf:"bytes,1,opt,name=ctrl,proto3,oneof"`
}

type ServerMsg_Data struct {
	Data *ServerData `protobuf:"bytes,2,opt,name=data,proto3,oneof"`
}

type ServerMsg_Pres struct {
	Pres *ServerPres `protobuf:"bytes,3,opt,name=pres,proto3,oneof"`
}

type ServerMsg_Meta struct {
	Meta *ServerMeta `protobuf:"bytes,4,opt,name=meta,proto3,oneof"`
}

type ServerMsg_Info struct {
	Info *ServerInfo `protobuf:"bytes,5,opt,name=info,proto3,oneof"`
}

func (*ServerMsg_Ctrl) isServerMsg_Message() {}

func (*ServerMsg_Data) isServerMsg_Message() {}

func (*ServerMsg_Pres) isServerMsg_Message() {}

func (*ServerMsg_Meta) isServerMsg_Message() {}

func (*ServerMsg_Info) isServerMsg_Message() {}

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

	Status RespCode   `protobuf:"varint,1,opt,name=status,proto3,enum=pbx.RespCode" json:"status,omitempty"`
	Srvmsg *ServerMsg `protobuf:"bytes,2,opt,name=srvmsg,proto3" json:"srvmsg,omitempty"`
	Clmsg  *ClientMsg `protobuf:"bytes,3,opt,name=clmsg,proto3" json:"clmsg,omitempty"`
}

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

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

func (*ServerResp) ProtoMessage() {}

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

func (x *ServerResp) GetStatus() RespCode {
	if x != nil {
		return x.Status
	}
	return RespCode_CONTINUE
}

func (x *ServerResp) GetSrvmsg() *ServerMsg {
	if x != nil {
		return x.Srvmsg
	}
	return nil
}

func (x *ServerResp) GetClmsg() *ClientMsg {
	if x != nil {
		return x.Clmsg
	}
	return nil
}

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

	SessionId  string    `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	UserId     string    `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	AuthLevel  AuthLevel `protobuf:"varint,3,opt,name=auth_level,json=authLevel,proto3,enum=pbx.AuthLevel" json:"auth_level,omitempty"`
	RemoteAddr string    `protobuf:"bytes,4,opt,name=remote_addr,json=remoteAddr,proto3" json:"remote_addr,omitempty"`
	UserAgent  string    `protobuf:"bytes,5,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
	DeviceId   string    `protobuf:"bytes,6,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	Language   string    `protobuf:"bytes,7,opt,name=language,proto3" json:"language,omitempty"`
}

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

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

func (*Session) ProtoMessage() {}

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

func (x *Session) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *Session) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *Session) GetAuthLevel() AuthLevel {
	if x != nil {
		return x.AuthLevel
	}
	return AuthLevel_NONE
}

func (x *Session) GetRemoteAddr() string {
	if x != nil {
		return x.RemoteAddr
	}
	return ""
}

func (x *Session) GetUserAgent() string {
	if x != nil {
		return x.UserAgent
	}
	return ""
}

func (x *Session) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *Session) GetLanguage() string {
	if x != nil {
		return x.Language
	}
	return ""
}

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

	Msg  *ClientMsg `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
	Sess *Session   `protobuf:"bytes,2,opt,name=sess,proto3" json:"sess,omitempty"`
}

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

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

func (*ClientReq) ProtoMessage() {}

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

func (x *ClientReq) GetMsg() *ClientMsg {
	if x != nil {
		return x.Msg
	}
	return nil
}

func (x *ClientReq) GetSess() *Session {
	if x != nil {
		return x.Sess
	}
	return nil
}

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

	UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Query  string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
}

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

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

func (*SearchQuery) ProtoMessage() {}

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

func (x *SearchQuery) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *SearchQuery) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

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

	Status RespCode `protobuf:"varint,1,opt,name=status,proto3,enum=pbx.RespCode" json:"status,omitempty"`
	// New search query If status == REPLACE, otherwise unset.
	Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
	// Search results.
	Result []*TopicSub `protobuf:"bytes,3,rep,name=result,proto3" json:"result,omitempty"`
}

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

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

func (*SearchFound) ProtoMessage() {}

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

func (x *SearchFound) GetStatus() RespCode {
	if x != nil {
		return x.Status
	}
	return RespCode_CONTINUE
}

func (x *SearchFound) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *SearchFound) GetResult() []*TopicSub {
	if x != nil {
		return x.Result
	}
	return nil
}

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

	Action Crud       `protobuf:"varint,1,opt,name=action,proto3,enum=pbx.Crud" json:"action,omitempty"`
	Name   string     `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Desc   *TopicDesc `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"`
}

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

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

func (*TopicEvent) ProtoMessage() {}

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

func (x *TopicEvent) GetAction() Crud {
	if x != nil {
		return x.Action
	}
	return Crud_CREATE
}

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

func (x *TopicEvent) GetDesc() *TopicDesc {
	if x != nil {
		return x.Desc
	}
	return nil
}

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

	Action     Crud            `protobuf:"varint,1,opt,name=action,proto3,enum=pbx.Crud" json:"action,omitempty"`
	UserId     string          `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	DefaultAcs *DefaultAcsMode `protobuf:"bytes,3,opt,name=default_acs,json=defaultAcs,proto3" json:"default_acs,omitempty"`
	Public     []byte          `protobuf:"bytes,4,opt,name=public,proto3" json:"public,omitempty"`
	// Indexable tags for user discovery
	Tags []string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty"`
}

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

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

func (*AccountEvent) ProtoMessage() {}

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

func (x *AccountEvent) GetAction() Crud {
	if x != nil {
		return x.Action
	}
	return Crud_CREATE
}

func (x *AccountEvent) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *AccountEvent) GetDefaultAcs() *DefaultAcsMode {
	if x != nil {
		return x.DefaultAcs
	}
	return nil
}

func (x *AccountEvent) GetPublic() []byte {
	if x != nil {
		return x.Public
	}
	return nil
}

func (x *AccountEvent) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

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

	Action  Crud        `protobuf:"varint,1,opt,name=action,proto3,enum=pbx.Crud" json:"action,omitempty"`
	Topic   string      `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
	UserId  string      `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	DelId   int32       `protobuf:"varint,4,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"`
	ReadId  int32       `protobuf:"varint,5,opt,name=read_id,json=readId,proto3" json:"read_id,omitempty"`
	RecvId  int32       `protobuf:"varint,6,opt,name=recv_id,json=recvId,proto3" json:"recv_id,omitempty"`
	Mode    *AccessMode `protobuf:"bytes,7,opt,name=mode,proto3" json:"mode,omitempty"`
	Private []byte      `protobuf:"bytes,8,opt,name=private,proto3" json:"private,omitempty"`
}

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

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

func (*SubscriptionEvent) ProtoMessage() {}

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

func (x *SubscriptionEvent) GetAction() Crud {
	if x != nil {
		return x.Action
	}
	return Crud_CREATE
}

func (x *SubscriptionEvent) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *SubscriptionEvent) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *SubscriptionEvent) GetDelId() int32 {
	if x != nil {
		return x.DelId
	}
	return 0
}

func (x *SubscriptionEvent) GetReadId() int32 {
	if x != nil {
		return x.ReadId
	}
	return 0
}

func (x *SubscriptionEvent) GetRecvId() int32 {
	if x != nil {
		return x.RecvId
	}
	return 0
}

func (x *SubscriptionEvent) GetMode() *AccessMode {
	if x != nil {
		return x.Mode
	}
	return nil
}

func (x *SubscriptionEvent) GetPrivate() []byte {
	if x != nil {
		return x.Private
	}
	return nil
}

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

	Action Crud        `protobuf:"varint,1,opt,name=action,proto3,enum=pbx.Crud" json:"action,omitempty"`
	Msg    *ServerData `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
}

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

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

func (*MessageEvent) ProtoMessage() {}

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

func (x *MessageEvent) GetAction() Crud {
	if x != nil {
		return x.Action
	}
	return Crud_CREATE
}

func (x *MessageEvent) GetMsg() *ServerData {
	if x != nil {
		return x.Msg
	}
	return nil
}

var File_model_proto protoreflect.FileDescriptor

var file_model_proto_rawDesc = []byte{
	0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70,
	0x62, 0x78, 0x22, 0x08, 0x0a, 0x06, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0x38, 0x0a, 0x0e,
	0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12,
	0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x75,
	0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x61, 0x6e, 0x6f, 0x6e, 0x22, 0x36, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x77, 0x61, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x69, 0x76, 0x65,
	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x22, 0x35,
	0x0a, 0x06, 0x53, 0x65, 0x74, 0x53, 0x75, 0x62, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72,
	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
	0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x43, 0x72, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33,
	0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
	0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x2e,
	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72,
	0x61, 0x6d, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b,
	0x01, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x0b, 0x64, 0x65,
	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73,
	0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73,
	0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76,
	0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61,
	0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x22, 0xad, 0x01, 0x0a,
	0x07, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x66, 0x5f, 0x6d,
	0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x66, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53,
	0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69,
	0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x19,
	0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x65, 0x66,
	0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x65,
	0x66, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x82, 0x01, 0x0a,
	0x08, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x68, 0x61,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x20, 0x0a,
	0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62,
	0x78, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12,
	0x1e, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70,
	0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12,
	0x20, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e,
	0x70, 0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x22, 0x84, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20,
	0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70,
	0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63,
	0x12, 0x1d, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
	0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x62, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12,
	0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74,
	0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72,
	0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x22, 0x2c, 0x0a, 0x08, 0x53, 0x65, 0x71, 0x52,
	0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x69, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x02, 0x68, 0x69, 0x22, 0xb8, 0x01, 0x0a, 0x08, 0x43, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x48, 0x69, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65,
	0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69,
	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e,
	0x64, 0x22, 0x81, 0x02, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
	0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65,
	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69,
	0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x12,
	0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61,
	0x67, 0x73, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0c, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04,
	0x64, 0x65, 0x73, 0x63, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43,
	0x72, 0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b,
	0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
	0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c,
	0x6f, 0x67, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06,
	0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x65,
	0x63, 0x72, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43,
	0x72, 0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x09, 0x43, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x2a, 0x0a,
	0x09, 0x73, 0x65, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52,
	0x08, 0x73, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x09, 0x67, 0x65, 0x74,
	0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70,
	0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x67, 0x65, 0x74,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x49, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c,
	0x65, 0x61, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e,
	0x73, 0x75, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x75, 0x6e, 0x73, 0x75, 0x62,
	0x22, 0xcb, 0x01, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x12, 0x0e,
	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x6f, 0x70, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6e, 0x6f, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x2c, 0x0a,
	0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62,
	0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x2e, 0x48, 0x65, 0x61, 0x64,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x37, 0x0a, 0x09, 0x48, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56,
	0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74,
	0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69,
	0x63, 0x12, 0x23, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52,
	0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x56, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x53, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x05, 0x71, 0x75, 0x65,
	0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53,
	0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x8d,
	0x02, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05,
	0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70,
	0x69, 0x63, 0x12, 0x27, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x13, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x6c,
	0x2e, 0x57, 0x68, 0x61, 0x74, 0x52, 0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x26, 0x0a, 0x07, 0x64,
	0x65, 0x6c, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70,
	0x62, 0x78, 0x2e, 0x53, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x64, 0x65, 0x6c,
	0x53, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x04,
	0x63, 0x72, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78,
	0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65,
	0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x04, 0x68, 0x61, 0x72, 0x64, 0x22, 0x37, 0x0a, 0x04, 0x57, 0x68, 0x61, 0x74, 0x12, 0x07, 0x0a,
	0x03, 0x4d, 0x53, 0x47, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x4f, 0x50, 0x49, 0x43, 0x10,
	0x01, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x55, 0x42, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x53,
	0x45, 0x52, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x52, 0x45, 0x44, 0x10, 0x04, 0x22, 0x5c,
	0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70,
	0x69, 0x63, 0x12, 0x21, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, 0x74, 0x65, 0x52,
	0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a,
	0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x20, 0x0a, 0x0b,
	0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x20,
	0x0a, 0x0c, 0x6f, 0x6e, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x6f, 0x66, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x6e, 0x42, 0x65, 0x68, 0x61, 0x6c, 0x66, 0x4f, 0x66,
	0x12, 0x2d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4c,
	0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22,
	0xb2, 0x03, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x1f, 0x0a,
	0x02, 0x68, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e,
	0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x69, 0x48, 0x00, 0x52, 0x02, 0x68, 0x69, 0x12, 0x22,
	0x0a, 0x03, 0x61, 0x63, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62,
	0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x48, 0x00, 0x52, 0x03, 0x61,
	0x63, 0x63, 0x12, 0x28, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x6f,
	0x67, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x03,
	0x73, 0x75, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e,
	0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x48, 0x00, 0x52, 0x03, 0x73, 0x75, 0x62,
	0x12, 0x28, 0x0a, 0x05, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x61, 0x76,
	0x65, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x22, 0x0a, 0x03, 0x70, 0x75,
	0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x62, 0x12, 0x22,
	0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62,
	0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x48, 0x00, 0x52, 0x03, 0x67,
	0x65, 0x74, 0x12, 0x22, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x48,
	0x00, 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x03, 0x64, 0x65, 0x6c, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x44, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x64, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f,
	0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x74,
	0x65, 0x12, 0x26, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x74,
	0x72, 0x61, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x42, 0x09, 0x0a, 0x07, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x72,
	0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,
	0x64, 0x6f, 0x6e, 0x65, 0x22, 0x85, 0x04, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x44, 0x65,
	0x73, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
	0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74,
	0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12,
	0x2b, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x61, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73,
	0x4d, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x64, 0x65, 0x66, 0x61, 0x63, 0x73, 0x12, 0x21, 0x0a, 0x03,
	0x61, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e,
	0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x63, 0x73, 0x12,
	0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69,
	0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x12,
	0x17, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f,
	0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12,
	0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61,
	0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
	0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65,
	0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x74, 0x61, 0x74, 0x65,
	0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07,
	0x69, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69,
	0x73, 0x43, 0x68, 0x61, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65,
	0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c,
	0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6c,
	0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67,
	0x65, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x53,
	0x65, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xd4, 0x03, 0x0a,
	0x08, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x53, 0x75, 0x62, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12,
	0x21, 0x0a, 0x03, 0x61, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70,
	0x62, 0x78, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61,
	0x63, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72,
	0x65, 0x63, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65,
	0x63, 0x76, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07,
	0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x74,
	0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
	0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70,
	0x69, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12,
	0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x15,
	0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
	0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18,
	0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e,
	0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f,
	0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67,
	0x65, 0x6e, 0x74, 0x22, 0x4a, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
	0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x5f, 0x73,
	0x65, 0x71, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53,
	0x65, 0x71, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x22,
	0xca, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x0e,
	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x6f, 0x70, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x33, 0x0a, 0x06,
	0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70,
	0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x74, 0x72, 0x6c, 0x2e, 0x50, 0x61,
	0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d,
	0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9a, 0x02, 0x0a,
	0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74,
	0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69,
	0x63, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69,
	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65,
	0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74,
	0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18,
	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x1a, 0x37, 0x0a, 0x09, 0x48, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb7, 0x03, 0x0a, 0x0a, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69,
	0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x10,
	0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63,
	0x12, 0x28, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
	0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x2e,
	0x57, 0x68, 0x61, 0x74, 0x52, 0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71,
	0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64,
	0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x5f, 0x73,
	0x65, 0x71, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53,
	0x65, 0x71, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x12,
	0x24, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69,
	0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55,
	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x75,
	0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63,
	0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x03, 0x61, 0x63, 0x73,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x63, 0x63,
	0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x63, 0x73, 0x22, 0x75, 0x0a, 0x04,
	0x57, 0x68, 0x61, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03,
	0x4f, 0x46, 0x46, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x41, 0x10, 0x03, 0x12, 0x07, 0x0a,
	0x03, 0x55, 0x50, 0x44, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4f, 0x4e, 0x45, 0x10, 0x05,
	0x12, 0x07, 0x0a, 0x03, 0x41, 0x43, 0x53, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x52,
	0x4d, 0x10, 0x07, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x53, 0x47, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04,
	0x52, 0x45, 0x41, 0x44, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x43, 0x56, 0x10, 0x0a,
	0x12, 0x07, 0x0a, 0x03, 0x44, 0x45, 0x4c, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x41, 0x47,
	0x53, 0x10, 0x0c, 0x22, 0xd2, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65,
	0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
	0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54, 0x6f, 0x70,
	0x69, 0x63, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1f, 0x0a, 0x03,
	0x73, 0x75, 0x62, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e,
	0x54, 0x6f, 0x70, 0x69, 0x63, 0x53, 0x75, 0x62, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x20, 0x0a,
	0x03, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78,
	0x2e, 0x44, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x03, 0x64, 0x65, 0x6c, 0x12,
	0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74,
	0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x72,
	0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x20, 0x0a,
	0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
	0x21, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e,
	0x70, 0x62, 0x78, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x77, 0x68,
	0x61, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x72, 0x63,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x22, 0xef, 0x01, 0x0a, 0x09,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x25, 0x0a, 0x04, 0x63, 0x74, 0x72,
	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x43, 0x74, 0x72, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x63, 0x74, 0x72, 0x6c,
	0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
	0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48,
	0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, 0x70, 0x72, 0x65, 0x73, 0x12, 0x25,
	0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70,
	0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x00, 0x52,
	0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
	0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05,
	0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70,
	0x69, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x81, 0x01,
	0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x70,
	0x62, 0x78, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x73, 0x72, 0x76, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
	0x4d, 0x73, 0x67, 0x52, 0x06, 0x73, 0x72, 0x76, 0x6d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x05, 0x63,
	0x6c, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78,
	0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x05, 0x63, 0x6c, 0x6d, 0x73,
	0x67, 0x22, 0xe9, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a,
	0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07,
	0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75,
	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6c, 0x65,
	0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e,
	0x41, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x4c,
	0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61,
	0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74,
	0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67,
	0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41,
	0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69,
	0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x4f, 0x0a,
	0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x03, 0x6d, 0x73,
	0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x20, 0x0a, 0x04,
	0x73, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x78,
	0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x73, 0x65, 0x73, 0x73, 0x22, 0x3c,
	0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x17, 0x0a,
	0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x71, 0x0a, 0x0b,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x70, 0x62,
	0x78, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54,
	0x6f, 0x70, 0x69, 0x63, 0x53, 0x75, 0x62, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22,
	0x67, 0x0a, 0x0a, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a,
	0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e,
	0x70, 0x62, 0x78, 0x2e, 0x43, 0x72, 0x75, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x44, 0x65,
	0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x78, 0x2e,
	0x43, 0x72, 0x75, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07,
	0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75,
	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
	0x5f, 0x61, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x78,
	0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52,
	0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0xed, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a,
	0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e,
	0x70, 0x62, 0x78, 0x2e, 0x43, 0x72, 0x75, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69,
	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
	0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69,
	0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x12,
	0x17, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x63, 0x63,
	0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
	0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
	0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x22, 0x54, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x72,
	0x75, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x03, 0x6d, 0x73,
	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x2a, 0x33, 0x0a,
	0x09, 0x41, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f,
	0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4e, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x08,
	0x0a, 0x04, 0x41, 0x55, 0x54, 0x48, 0x10, 0x14, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x4f, 0x4f, 0x54,
	0x10, 0x1e, 0x2a, 0x26, 0x0a, 0x08, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x08,
	0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x43, 0x56,
	0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4b, 0x50, 0x10, 0x02, 0x2a, 0x3c, 0x0a, 0x08, 0x52, 0x65,
	0x73, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e,
	0x55, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x0b,
	0x0a, 0x07, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52,
	0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x03, 0x2a, 0x2a, 0x0a, 0x04, 0x43, 0x72, 0x75, 0x64,
	0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06,
	0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45,
	0x54, 0x45, 0x10, 0x02, 0x32, 0x3b, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x0b,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x70, 0x62,
	0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x1a, 0x0e, 0x2e, 0x70, 0x62,
	0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x28, 0x01, 0x30,
	0x01, 0x32, 0x9f, 0x02, 0x0a, 0x06, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x08,
	0x46, 0x69, 0x72, 0x65, 0x48, 0x6f, 0x73, 0x65, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53,
	0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x04, 0x46,
	0x69, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x55, 0x6e,
	0x75, 0x73, 0x65, 0x64, 0x22, 0x00, 0x12, 0x27, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12,
	0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74,
	0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0x00, 0x12,
	0x35, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x16, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x55, 0x6e,
	0x75, 0x73, 0x65, 0x64, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45,
	0x76, 0x65, 0x6e, 0x74, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
	0x64, 0x22, 0x00, 0x42, 0x1c, 0x5a, 0x1a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
	0x6d, 0x2f, 0x74, 0x69, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x62,
	0x78, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_model_proto_rawDescOnce sync.Once
	file_model_proto_rawDescData = file_model_proto_rawDesc
)

func file_model_proto_rawDescGZIP() []byte {
	file_model_proto_rawDescOnce.Do(func() {
		file_model_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_proto_rawDescData)
	})
	return file_model_proto_rawDescData
}

var file_model_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
var file_model_proto_msgTypes = make([]protoimpl.MessageInfo, 45)
var file_model_proto_goTypes = []interface{}{
	(AuthLevel)(0),            // 0: pbx.AuthLevel
	(InfoNote)(0),             // 1: pbx.InfoNote
	(RespCode)(0),             // 2: pbx.RespCode
	(Crud)(0),                 // 3: pbx.Crud
	(ClientDel_What)(0),       // 4: pbx.ClientDel.What
	(ServerPres_What)(0),      // 5: pbx.ServerPres.What
	(*Unused)(nil),            // 6: pbx.Unused
	(*DefaultAcsMode)(nil),    // 7: pbx.DefaultAcsMode
	(*AccessMode)(nil),        // 8: pbx.AccessMode
	(*SetSub)(nil),            // 9: pbx.SetSub
	(*ClientCred)(nil),        // 10: pbx.ClientCred
	(*SetDesc)(nil),           // 11: pbx.SetDesc
	(*GetOpts)(nil),           // 12: pbx.GetOpts
	(*GetQuery)(nil),          // 13: pbx.GetQuery
	(*SetQuery)(nil),          // 14: pbx.SetQuery
	(*SeqRange)(nil),          // 15: pbx.SeqRange
	(*ClientHi)(nil),          // 16: pbx.ClientHi
	(*ClientAcc)(nil),         // 17: pbx.ClientAcc
	(*ClientLogin)(nil),       // 18: pbx.ClientLogin
	(*ClientSub)(nil),         // 19: pbx.ClientSub
	(*ClientLeave)(nil),       // 20: pbx.ClientLeave
	(*ClientPub)(nil),         // 21: pbx.ClientPub
	(*ClientGet)(nil),         // 22: pbx.ClientGet
	(*ClientSet)(nil),         // 23: pbx.ClientSet
	(*ClientDel)(nil),         // 24: pbx.ClientDel
	(*ClientNote)(nil),        // 25: pbx.ClientNote
	(*ClientExtra)(nil),       // 26: pbx.ClientExtra
	(*ClientMsg)(nil),         // 27: pbx.ClientMsg
	(*ServerCred)(nil),        // 28: pbx.ServerCred
	(*TopicDesc)(nil),         // 29: pbx.TopicDesc
	(*TopicSub)(nil),          // 30: pbx.TopicSub
	(*DelValues)(nil),         // 31: pbx.DelValues
	(*ServerCtrl)(nil),        // 32: pbx.ServerCtrl
	(*ServerData)(nil),        // 33: pbx.ServerData
	(*ServerPres)(nil),        // 34: pbx.ServerPres
	(*ServerMeta)(nil),        // 35: pbx.ServerMeta
	(*ServerInfo)(nil),        // 36: pbx.ServerInfo
	(*ServerMsg)(nil),         // 37: pbx.ServerMsg
	(*ServerResp)(nil),        // 38: pbx.ServerResp
	(*Session)(nil),           // 39: pbx.Session
	(*ClientReq)(nil),         // 40: pbx.ClientReq
	(*SearchQuery)(nil),       // 41: pbx.SearchQuery
	(*SearchFound)(nil),       // 42: pbx.SearchFound
	(*TopicEvent)(nil),        // 43: pbx.TopicEvent
	(*AccountEvent)(nil),      // 44: pbx.AccountEvent
	(*SubscriptionEvent)(nil), // 45: pbx.SubscriptionEvent
	(*MessageEvent)(nil),      // 46: pbx.MessageEvent
	nil,                       // 47: pbx.ClientCred.ParamsEntry
	nil,                       // 48: pbx.ClientPub.HeadEntry
	nil,                       // 49: pbx.ServerCtrl.ParamsEntry
	nil,                       // 50: pbx.ServerData.HeadEntry
}
var file_model_proto_depIdxs = []int32{
	47, // 0: pbx.ClientCred.params:type_name -> pbx.ClientCred.ParamsEntry
	7,  // 1: pbx.SetDesc.default_acs:type_name -> pbx.DefaultAcsMode
	12, // 2: pbx.GetQuery.desc:type_name -> pbx.GetOpts
	12, // 3: pbx.GetQuery.sub:type_name -> pbx.GetOpts
	12, // 4: pbx.GetQuery.data:type_name -> pbx.GetOpts
	11, // 5: pbx.SetQuery.desc:type_name -> pbx.SetDesc
	9,  // 6: pbx.SetQuery.sub:type_name -> pbx.SetSub
	10, // 7: pbx.SetQuery.cred:type_name -> pbx.ClientCred
	11, // 8: pbx.ClientAcc.desc:type_name -> pbx.SetDesc
	10, // 9: pbx.ClientAcc.cred:type_name -> pbx.ClientCred
	10, // 10: pbx.ClientLogin.cred:type_name -> pbx.ClientCred
	14, // 11: pbx.ClientSub.set_query:type_name -> pbx.SetQuery
	13, // 12: pbx.ClientSub.get_query:type_name -> pbx.GetQuery
	48, // 13: pbx.ClientPub.head:type_name -> pbx.ClientPub.HeadEntry
	13, // 14: pbx.ClientGet.query:type_name -> pbx.GetQuery
	14, // 15: pbx.ClientSet.query:type_name -> pbx.SetQuery
	4,  // 16: pbx.ClientDel.what:type_name -> pbx.ClientDel.What
	15, // 17: pbx.ClientDel.del_seq:type_name -> pbx.SeqRange
	10, // 18: pbx.ClientDel.cred:type_name -> pbx.ClientCred
	1,  // 19: pbx.ClientNote.what:type_name -> pbx.InfoNote
	0,  // 20: pbx.ClientExtra.auth_level:type_name -> pbx.AuthLevel
	16, // 21: pbx.ClientMsg.hi:type_name -> pbx.ClientHi
	17, // 22: pbx.ClientMsg.acc:type_name -> pbx.ClientAcc
	18, // 23: pbx.ClientMsg.login:type_name -> pbx.ClientLogin
	19, // 24: pbx.ClientMsg.sub:type_name -> pbx.ClientSub
	20, // 25: pbx.ClientMsg.leave:type_name -> pbx.ClientLeave
	21, // 26: pbx.ClientMsg.pub:type_name -> pbx.ClientPub
	22, // 27: pbx.ClientMsg.get:type_name -> pbx.ClientGet
	23, // 28: pbx.ClientMsg.set:type_name -> pbx.ClientSet
	24, // 29: pbx.ClientMsg.del:type_name -> pbx.ClientDel
	25, // 30: pbx.ClientMsg.note:type_name -> pbx.ClientNote
	26, // 31: pbx.ClientMsg.extra:type_name -> pbx.ClientExtra
	7,  // 32: pbx.TopicDesc.defacs:type_name -> pbx.DefaultAcsMode
	8,  // 33: pbx.TopicDesc.acs:type_name -> pbx.AccessMode
	8,  // 34: pbx.TopicSub.acs:type_name -> pbx.AccessMode
	15, // 35: pbx.DelValues.del_seq:type_name -> pbx.SeqRange
	49, // 36: pbx.ServerCtrl.params:type_name -> pbx.ServerCtrl.ParamsEntry
	50, // 37: pbx.ServerData.head:type_name -> pbx.ServerData.HeadEntry
	5,  // 38: pbx.ServerPres.what:type_name -> pbx.ServerPres.What
	15, // 39: pbx.ServerPres.del_seq:type_name -> pbx.SeqRange
	8,  // 40: pbx.ServerPres.acs:type_name -> pbx.AccessMode
	29, // 41: pbx.ServerMeta.desc:type_name -> pbx.TopicDesc
	30, // 42: pbx.ServerMeta.sub:type_name -> pbx.TopicSub
	31, // 43: pbx.ServerMeta.del:type_name -> pbx.DelValues
	28, // 44: pbx.ServerMeta.cred:type_name -> pbx.ServerCred
	1,  // 45: pbx.ServerInfo.what:type_name -> pbx.InfoNote
	32, // 46: pbx.ServerMsg.ctrl:type_name -> pbx.ServerCtrl
	33, // 47: pbx.ServerMsg.data:type_name -> pbx.ServerData
	34, // 48: pbx.ServerMsg.pres:type_name -> pbx.ServerPres
	35, // 49: pbx.ServerMsg.meta:type_name -> pbx.ServerMeta
	36, // 50: pbx.ServerMsg.info:type_name -> pbx.ServerInfo
	2,  // 51: pbx.ServerResp.status:type_name -> pbx.RespCode
	37, // 52: pbx.ServerResp.srvmsg:type_name -> pbx.ServerMsg
	27, // 53: pbx.ServerResp.clmsg:type_name -> pbx.ClientMsg
	0,  // 54: pbx.Session.auth_level:type_name -> pbx.AuthLevel
	27, // 55: pbx.ClientReq.msg:type_name -> pbx.ClientMsg
	39, // 56: pbx.ClientReq.sess:type_name -> pbx.Session
	2,  // 57: pbx.SearchFound.status:type_name -> pbx.RespCode
	30, // 58: pbx.SearchFound.result:type_name -> pbx.TopicSub
	3,  // 59: pbx.TopicEvent.action:type_name -> pbx.Crud
	29, // 60: pbx.TopicEvent.desc:type_name -> pbx.TopicDesc
	3,  // 61: pbx.AccountEvent.action:type_name -> pbx.Crud
	7,  // 62: pbx.AccountEvent.default_acs:type_name -> pbx.DefaultAcsMode
	3,  // 63: pbx.SubscriptionEvent.action:type_name -> pbx.Crud
	8,  // 64: pbx.SubscriptionEvent.mode:type_name -> pbx.AccessMode
	3,  // 65: pbx.MessageEvent.action:type_name -> pbx.Crud
	33, // 66: pbx.MessageEvent.msg:type_name -> pbx.ServerData
	27, // 67: pbx.Node.MessageLoop:input_type -> pbx.ClientMsg
	40, // 68: pbx.Plugin.FireHose:input_type -> pbx.ClientReq
	41, // 69: pbx.Plugin.Find:input_type -> pbx.SearchQuery
	44, // 70: pbx.Plugin.Account:input_type -> pbx.AccountEvent
	43, // 71: pbx.Plugin.Topic:input_type -> pbx.TopicEvent
	45, // 72: pbx.Plugin.Subscription:input_type -> pbx.SubscriptionEvent
	46, // 73: pbx.Plugin.Message:input_type -> pbx.MessageEvent
	37, // 74: pbx.Node.MessageLoop:output_type -> pbx.ServerMsg
	38, // 75: pbx.Plugin.FireHose:output_type -> pbx.ServerResp
	42, // 76: pbx.Plugin.Find:output_type -> pbx.SearchFound
	6,  // 77: pbx.Plugin.Account:output_type -> pbx.Unused
	6,  // 78: pbx.Plugin.Topic:output_type -> pbx.Unused
	6,  // 79: pbx.Plugin.Subscription:output_type -> pbx.Unused
	6,  // 80: pbx.Plugin.Message:output_type -> pbx.Unused
	74, // [74:81] is the sub-list for method output_type
	67, // [67:74] 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_model_proto_init() }
func file_model_proto_init() {
	if File_model_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_model_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Unused); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DefaultAcsMode); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccessMode); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetSub); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientCred); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetDesc); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetOpts); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SeqRange); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientHi); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientAcc); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientLogin); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientSub); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientLeave); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientPub); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientGet); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientSet); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientDel); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientNote); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientExtra); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientMsg); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerCred); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopicDesc); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopicSub); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DelValues); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerCtrl); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerPres); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerMeta); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerMsg); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Session); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClientReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchFound); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopicEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccountEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubscriptionEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_model_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_model_proto_msgTypes[21].OneofWrappers = []interface{}{
		(*ClientMsg_Hi)(nil),
		(*ClientMsg_Acc)(nil),
		(*ClientMsg_Login)(nil),
		(*ClientMsg_Sub)(nil),
		(*ClientMsg_Leave)(nil),
		(*ClientMsg_Pub)(nil),
		(*ClientMsg_Get)(nil),
		(*ClientMsg_Set)(nil),
		(*ClientMsg_Del)(nil),
		(*ClientMsg_Note)(nil),
	}
	file_model_proto_msgTypes[31].OneofWrappers = []interface{}{
		(*ServerMsg_Ctrl)(nil),
		(*ServerMsg_Data)(nil),
		(*ServerMsg_Pres)(nil),
		(*ServerMsg_Meta)(nil),
		(*ServerMsg_Info)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_model_proto_rawDesc,
			NumEnums:      6,
			NumMessages:   45,
			NumExtensions: 0,
			NumServices:   2,
		},
		GoTypes:           file_model_proto_goTypes,
		DependencyIndexes: file_model_proto_depIdxs,
		EnumInfos:         file_model_proto_enumTypes,
		MessageInfos:      file_model_proto_msgTypes,
	}.Build()
	File_model_proto = out.File
	file_model_proto_rawDesc = nil
	file_model_proto_goTypes = nil
	file_model_proto_depIdxs = nil
}
