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

package channeldpb

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	anypb "google.golang.org/protobuf/types/known/anypb"
	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)
)

// Can be used as the Flags-style enum in C#. See https://groups.google.com/g/protobuf/c/L105Q4NIk0U?pli=1.
type BroadcastType int32

const (
	// No broadcast. All internal messages should use this type, and other types are ignored.
	BroadcastType_NO_BROADCAST BroadcastType = 0
	// Forward the message to the connection. Can only be used by the backend server.
	// This has the same behavior as sending the message to the PRIVATE channel owned by the target connection with BroadcastType = NO.
	BroadcastType_SINGLE_CONNECTION BroadcastType = 1
	// Broadcast the message to all the connections in the channel, the sender included.
	BroadcastType_ALL BroadcastType = 2
	// Broadcast the message to all the connections in the channel, the sender excluded.
	BroadcastType_ALL_BUT_SENDER BroadcastType = 4
	// Broadcast the message to all the connections in the channel, the owner excluded.
	BroadcastType_ALL_BUT_OWNER BroadcastType = 8
	// Broadcast the message to all client connections in the channel.
	BroadcastType_ALL_BUT_CLIENT BroadcastType = 16
	// Broadcast the message to all server connections in the channel, the owner excluded.
	BroadcastType_ALL_BUT_SERVER BroadcastType = 32
	// Broadcast the message to all the connections in all the adjacent(3x3) spatial channels. Ignored if the target channel is not a spatial channel.
	// To ignore the center spatial channel, use ADJACENT_CHANNELS | ALL_BUT_OWNER; to ignore the sender(spatial server), use ADJACENT_CHANNELS | ALL_BUT_SENDER.
	BroadcastType_ADJACENT_CHANNELS BroadcastType = 64
)

// Enum value maps for BroadcastType.
var (
	BroadcastType_name = map[int32]string{
		0:  "NO_BROADCAST",
		1:  "SINGLE_CONNECTION",
		2:  "ALL",
		4:  "ALL_BUT_SENDER",
		8:  "ALL_BUT_OWNER",
		16: "ALL_BUT_CLIENT",
		32: "ALL_BUT_SERVER",
		64: "ADJACENT_CHANNELS",
	}
	BroadcastType_value = map[string]int32{
		"NO_BROADCAST":      0,
		"SINGLE_CONNECTION": 1,
		"ALL":               2,
		"ALL_BUT_SENDER":    4,
		"ALL_BUT_OWNER":     8,
		"ALL_BUT_CLIENT":    16,
		"ALL_BUT_SERVER":    32,
		"ADJACENT_CHANNELS": 64,
	}
)

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

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

func (BroadcastType) Descriptor() protoreflect.EnumDescriptor {
	return file_channeld_proto_enumTypes[0].Descriptor()
}

func (BroadcastType) Type() protoreflect.EnumType {
	return &file_channeld_proto_enumTypes[0]
}

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

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

type ConnectionType int32

const (
	ConnectionType_NO_CONNECTION ConnectionType = 0
	ConnectionType_SERVER        ConnectionType = 1
	ConnectionType_CLIENT        ConnectionType = 2
)

// Enum value maps for ConnectionType.
var (
	ConnectionType_name = map[int32]string{
		0: "NO_CONNECTION",
		1: "SERVER",
		2: "CLIENT",
	}
	ConnectionType_value = map[string]int32{
		"NO_CONNECTION": 0,
		"SERVER":        1,
		"CLIENT":        2,
	}
)

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

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

func (ConnectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_channeld_proto_enumTypes[1].Descriptor()
}

func (ConnectionType) Type() protoreflect.EnumType {
	return &file_channeld_proto_enumTypes[1]
}

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

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

type ChannelType int32

const (
	ChannelType_UNKNOWN ChannelType = 0
	// Default channel. Any message without ChannelId specified (equals 0) will be sent to this channel.
	ChannelType_GLOBAL ChannelType = 1
	// Per-connection channel. Useful to store the user data and subscribe the client to the data update.
	ChannelType_PRIVATE ChannelType = 2
	// A game "room" in a session-based game, or a "dungeon" in an MMORPG. Subworlds are spatially divided thus the interests are isolated.
	ChannelType_SUBWORLD ChannelType = 3
	// Spatial channels are spatailly connected. Using this type of channel to implement a seamless open world which consists of servers, and each server simulates a part of the world.
	// Only server connections can create the spatial channel.
	ChannelType_SPATIAL ChannelType = 4
	ChannelType_ENTITY  ChannelType = 5
	// The following are for tests.
	ChannelType_TEST  ChannelType = 100
	ChannelType_TEST1 ChannelType = 101
	ChannelType_TEST2 ChannelType = 102
	ChannelType_TEST3 ChannelType = 103
	ChannelType_TEST4 ChannelType = 104
)

// Enum value maps for ChannelType.
var (
	ChannelType_name = map[int32]string{
		0:   "UNKNOWN",
		1:   "GLOBAL",
		2:   "PRIVATE",
		3:   "SUBWORLD",
		4:   "SPATIAL",
		5:   "ENTITY",
		100: "TEST",
		101: "TEST1",
		102: "TEST2",
		103: "TEST3",
		104: "TEST4",
	}
	ChannelType_value = map[string]int32{
		"UNKNOWN":  0,
		"GLOBAL":   1,
		"PRIVATE":  2,
		"SUBWORLD": 3,
		"SPATIAL":  4,
		"ENTITY":   5,
		"TEST":     100,
		"TEST1":    101,
		"TEST2":    102,
		"TEST3":    103,
		"TEST4":    104,
	}
)

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

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

func (ChannelType) Descriptor() protoreflect.EnumDescriptor {
	return file_channeld_proto_enumTypes[2].Descriptor()
}

func (ChannelType) Type() protoreflect.EnumType {
	return &file_channeld_proto_enumTypes[2]
}

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

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

type MessageType int32

const (
	MessageType_INVALID MessageType = 0
	// Used by both @AuthMessage and @AuthResultMessage
	MessageType_AUTH MessageType = 1
	// Used by both @CreateChannelMessage and @CreateChannelResultMessage
	MessageType_CREATE_CHANNEL MessageType = 3
	// Used by @RemoveChannelMessage
	MessageType_REMOVE_CHANNEL MessageType = 4
	// Used by both @ListChannelMessage and @ListChannelResultMessage
	MessageType_LIST_CHANNEL MessageType = 5
	// Used by both @SubscribedToChannelMessage and @SubscribedToChannelResultMessage
	MessageType_SUB_TO_CHANNEL MessageType = 6
	// Used by both @UnsubscribedFromChannelMessage and @UnsubscribedFromChannelResultMessage
	MessageType_UNSUB_FROM_CHANNEL MessageType = 7
	// Used by @ChannelDataUpdateMessage
	MessageType_CHANNEL_DATA_UPDATE MessageType = 8
	// Used by @DisconnectMessage
	MessageType_DISCONNECT MessageType = 9
	// Used by both @CreateChannelMessage and @CreateSpatialChannelsResultMessage
	MessageType_CREATE_SPATIAL_CHANNEL MessageType = 10
	// Used by both @QuerySpatialChannelMessage and @QuerySpatialChannelResultMessage
	MessageType_QUERY_SPATIAL_CHANNEL MessageType = 11
	// Used by @ChannelDataHandoverMessage
	MessageType_CHANNEL_DATA_HANDOVER MessageType = 12
	// Used by @SpatialRegionsUpdateMessage
	MessageType_SPATIAL_REGIONS_UPDATE MessageType = 13
	// Used by @UpdateSpatialInterestMessage
	MessageType_UPDATE_SPATIAL_INTEREST MessageType = 14
	// Used by @CreateEntityChannelMessage
	MessageType_CREATE_ENTITY_CHANNEL MessageType = 15
	// Used by @AddEntityGroupMessage
	MessageType_ENTITY_GROUP_ADD MessageType = 16
	// Used by @RemoveEntityGroupMessage
	MessageType_ENTITY_GROUP_REMOVE MessageType = 17
	// Used by @SpatialChannelsReadyMessage
	MessageType_SPATIAL_CHANNELS_READY MessageType = 18
	// // Used by @StartRecoveryMesssage
	// RECOVERY_START = 19;
	MessageType_RECOVERY_CHANNEL_DATA MessageType = 20
	// Used by @EndRecoveryMesssage
	MessageType_RECOVERY_END MessageType = 21
	// Used by @ChannelOwnerLostMessage
	MessageType_CHANNEL_OWNER_LOST MessageType = 22
	// Used by @ChannelOwnerRecoveredMessage
	MessageType_CHANNEL_OWNER_RECOVERED MessageType = 23
	// Used by @DebugGetSpatialRegionsMessage
	MessageType_DEBUG_GET_SPATIAL_REGIONS MessageType = 99
	// Start of any user-space defined message
	MessageType_USER_SPACE_START MessageType = 100
)

// Enum value maps for MessageType.
var (
	MessageType_name = map[int32]string{
		0:   "INVALID",
		1:   "AUTH",
		3:   "CREATE_CHANNEL",
		4:   "REMOVE_CHANNEL",
		5:   "LIST_CHANNEL",
		6:   "SUB_TO_CHANNEL",
		7:   "UNSUB_FROM_CHANNEL",
		8:   "CHANNEL_DATA_UPDATE",
		9:   "DISCONNECT",
		10:  "CREATE_SPATIAL_CHANNEL",
		11:  "QUERY_SPATIAL_CHANNEL",
		12:  "CHANNEL_DATA_HANDOVER",
		13:  "SPATIAL_REGIONS_UPDATE",
		14:  "UPDATE_SPATIAL_INTEREST",
		15:  "CREATE_ENTITY_CHANNEL",
		16:  "ENTITY_GROUP_ADD",
		17:  "ENTITY_GROUP_REMOVE",
		18:  "SPATIAL_CHANNELS_READY",
		20:  "RECOVERY_CHANNEL_DATA",
		21:  "RECOVERY_END",
		22:  "CHANNEL_OWNER_LOST",
		23:  "CHANNEL_OWNER_RECOVERED",
		99:  "DEBUG_GET_SPATIAL_REGIONS",
		100: "USER_SPACE_START",
	}
	MessageType_value = map[string]int32{
		"INVALID":                   0,
		"AUTH":                      1,
		"CREATE_CHANNEL":            3,
		"REMOVE_CHANNEL":            4,
		"LIST_CHANNEL":              5,
		"SUB_TO_CHANNEL":            6,
		"UNSUB_FROM_CHANNEL":        7,
		"CHANNEL_DATA_UPDATE":       8,
		"DISCONNECT":                9,
		"CREATE_SPATIAL_CHANNEL":    10,
		"QUERY_SPATIAL_CHANNEL":     11,
		"CHANNEL_DATA_HANDOVER":     12,
		"SPATIAL_REGIONS_UPDATE":    13,
		"UPDATE_SPATIAL_INTEREST":   14,
		"CREATE_ENTITY_CHANNEL":     15,
		"ENTITY_GROUP_ADD":          16,
		"ENTITY_GROUP_REMOVE":       17,
		"SPATIAL_CHANNELS_READY":    18,
		"RECOVERY_CHANNEL_DATA":     20,
		"RECOVERY_END":              21,
		"CHANNEL_OWNER_LOST":        22,
		"CHANNEL_OWNER_RECOVERED":   23,
		"DEBUG_GET_SPATIAL_REGIONS": 99,
		"USER_SPACE_START":          100,
	}
)

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

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

func (MessageType) Descriptor() protoreflect.EnumDescriptor {
	return file_channeld_proto_enumTypes[3].Descriptor()
}

func (MessageType) Type() protoreflect.EnumType {
	return &file_channeld_proto_enumTypes[3]
}

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

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

type CompressionType int32

const (
	CompressionType_NO_COMPRESSION CompressionType = 0
	// https://github.com/google/snappy
	CompressionType_SNAPPY CompressionType = 1
)

// Enum value maps for CompressionType.
var (
	CompressionType_name = map[int32]string{
		0: "NO_COMPRESSION",
		1: "SNAPPY",
	}
	CompressionType_value = map[string]int32{
		"NO_COMPRESSION": 0,
		"SNAPPY":         1,
	}
)

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

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

func (CompressionType) Descriptor() protoreflect.EnumDescriptor {
	return file_channeld_proto_enumTypes[4].Descriptor()
}

func (CompressionType) Type() protoreflect.EnumType {
	return &file_channeld_proto_enumTypes[4]
}

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

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

type ChannelDataAccess int32

const (
	ChannelDataAccess_NO_ACCESS    ChannelDataAccess = 0
	ChannelDataAccess_READ_ACCESS  ChannelDataAccess = 1
	ChannelDataAccess_WRITE_ACCESS ChannelDataAccess = 2
)

// Enum value maps for ChannelDataAccess.
var (
	ChannelDataAccess_name = map[int32]string{
		0: "NO_ACCESS",
		1: "READ_ACCESS",
		2: "WRITE_ACCESS",
	}
	ChannelDataAccess_value = map[string]int32{
		"NO_ACCESS":    0,
		"READ_ACCESS":  1,
		"WRITE_ACCESS": 2,
	}
)

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

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

func (ChannelDataAccess) Descriptor() protoreflect.EnumDescriptor {
	return file_channeld_proto_enumTypes[5].Descriptor()
}

func (ChannelDataAccess) Type() protoreflect.EnumType {
	return &file_channeld_proto_enumTypes[5]
}

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

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

type EntityGroupType int32

const (
	EntityGroupType_HANDOVER EntityGroupType = 0
	EntityGroupType_LOCK     EntityGroupType = 1
)

// Enum value maps for EntityGroupType.
var (
	EntityGroupType_name = map[int32]string{
		0: "HANDOVER",
		1: "LOCK",
	}
	EntityGroupType_value = map[string]int32{
		"HANDOVER": 0,
		"LOCK":     1,
	}
)

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

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

func (EntityGroupType) Descriptor() protoreflect.EnumDescriptor {
	return file_channeld_proto_enumTypes[6].Descriptor()
}

func (EntityGroupType) Type() protoreflect.EnumType {
	return &file_channeld_proto_enumTypes[6]
}

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

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

type AuthResultMessage_AuthResult int32

const (
	AuthResultMessage_SUCCESSFUL  AuthResultMessage_AuthResult = 0
	AuthResultMessage_INVALID_PIT AuthResultMessage_AuthResult = 1
	AuthResultMessage_INVALID_LT  AuthResultMessage_AuthResult = 2
)

// Enum value maps for AuthResultMessage_AuthResult.
var (
	AuthResultMessage_AuthResult_name = map[int32]string{
		0: "SUCCESSFUL",
		1: "INVALID_PIT",
		2: "INVALID_LT",
	}
	AuthResultMessage_AuthResult_value = map[string]int32{
		"SUCCESSFUL":  0,
		"INVALID_PIT": 1,
		"INVALID_LT":  2,
	}
)

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

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

func (AuthResultMessage_AuthResult) Descriptor() protoreflect.EnumDescriptor {
	return file_channeld_proto_enumTypes[7].Descriptor()
}

func (AuthResultMessage_AuthResult) Type() protoreflect.EnumType {
	return &file_channeld_proto_enumTypes[7]
}

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

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

// The data packet that is sent between the endpoints. A packet can have multiple messages in the payload in one trip to improve the efficiency.
type Packet struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Messages []*MessagePack `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
}

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

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

func (*Packet) ProtoMessage() {}

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

func (x *Packet) GetMessages() []*MessagePack {
	if x != nil {
		return x.Messages
	}
	return nil
}

// The serialized message and the context of it.
type MessagePack struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The ID of the channel that the message is sent to, or received from channeld.
	// 0 is the GLOBAL channel; 1-65535 are for non-spatial channels;
	// beyond (0xffff-0xffffffff) are reserved for spatial channels.
	ChannelId uint32 `protobuf:"varint,1,opt,name=channelId,proto3" json:"channelId,omitempty"`
	// How the message will be broadcasted to all connections in the channel?
	// See @BroadcastType. ONLY works for the user-space messages.
	Broadcast uint32 `protobuf:"varint,2,opt,name=broadcast,proto3" json:"broadcast,omitempty"`
	// The stub for RPC callbacks.
	// 0 means the message is not a RPC message.
	StubId uint32 `protobuf:"varint,3,opt,name=stubId,proto3" json:"stubId,omitempty"`
	// The MessageType either defined in @MessageType enum, or defined in user space.
	MsgType uint32 `protobuf:"varint,4,opt,name=msgType,proto3" json:"msgType,omitempty"`
	// The serialized message. It's Protobuf-marshalled byte array if the message is defined in @MessageType.
	MsgBody []byte `protobuf:"bytes,5,opt,name=msgBody,proto3" json:"msgBody,omitempty"`
}

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

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

func (*MessagePack) ProtoMessage() {}

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

func (x *MessagePack) GetChannelId() uint32 {
	if x != nil {
		return x.ChannelId
	}
	return 0
}

func (x *MessagePack) GetBroadcast() uint32 {
	if x != nil {
		return x.Broadcast
	}
	return 0
}

func (x *MessagePack) GetStubId() uint32 {
	if x != nil {
		return x.StubId
	}
	return 0
}

func (x *MessagePack) GetMsgType() uint32 {
	if x != nil {
		return x.MsgType
	}
	return 0
}

func (x *MessagePack) GetMsgBody() []byte {
	if x != nil {
		return x.MsgBody
	}
	return nil
}

// The message that is used to carries user-space message and communicate between channeld and backend servers.
// Users don't need to use this message directly if they are using a client library.
type ServerForwardMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The client that sends the user-space message to server or server sends the user-space message to.
	// If a server sends to channeld with clientConnId = 0, the message will be forwarded to the channel owner.
	ClientConnId uint32 `protobuf:"varint,1,opt,name=clientConnId,proto3" json:"clientConnId,omitempty"`
	// The user-space message. channeld leaves it as the original binary format.
	Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
}

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

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

func (*ServerForwardMessage) ProtoMessage() {}

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

func (x *ServerForwardMessage) GetClientConnId() uint32 {
	if x != nil {
		return x.ClientConnId
	}
	return 0
}

func (x *ServerForwardMessage) GetPayload() []byte {
	if x != nil {
		return x.Payload
	}
	return nil
}

// The message should have channelId = 0 in order to be handled.
// Response: @AuthResultMessage. The GLOBAL channel owner will also receive this message (to handle the client's subscription if it doesn't have the authority to).
type AuthMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PlayerIdentifierToken string `protobuf:"bytes,1,opt,name=playerIdentifierToken,proto3" json:"playerIdentifierToken,omitempty"`
	LoginToken            string `protobuf:"bytes,2,opt,name=loginToken,proto3" json:"loginToken,omitempty"`
}

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

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

func (*AuthMessage) ProtoMessage() {}

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

func (x *AuthMessage) GetPlayerIdentifierToken() string {
	if x != nil {
		return x.PlayerIdentifierToken
	}
	return ""
}

func (x *AuthMessage) GetLoginToken() string {
	if x != nil {
		return x.LoginToken
	}
	return ""
}

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

	Result AuthResultMessage_AuthResult `protobuf:"varint,1,opt,name=result,proto3,enum=channeldpb.AuthResultMessage_AuthResult" json:"result,omitempty"`
	ConnId uint32                       `protobuf:"varint,2,opt,name=connId,proto3" json:"connId,omitempty"`
	// The compression type should be used for future communication.
	// However, because the compression type is specified per packet, the client has its freedom to control which compression type to use.
	// It's useful when the client has too much CPU load for the compression, or the network debug is needed.
	CompressionType CompressionType `protobuf:"varint,3,opt,name=compressionType,proto3,enum=channeldpb.CompressionType" json:"compressionType,omitempty"`
	ShouldRecover   bool            `protobuf:"varint,4,opt,name=shouldRecover,proto3" json:"shouldRecover,omitempty"`
}

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

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

func (*AuthResultMessage) ProtoMessage() {}

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

func (x *AuthResultMessage) GetResult() AuthResultMessage_AuthResult {
	if x != nil {
		return x.Result
	}
	return AuthResultMessage_SUCCESSFUL
}

func (x *AuthResultMessage) GetConnId() uint32 {
	if x != nil {
		return x.ConnId
	}
	return 0
}

func (x *AuthResultMessage) GetCompressionType() CompressionType {
	if x != nil {
		return x.CompressionType
	}
	return CompressionType_NO_COMPRESSION
}

func (x *AuthResultMessage) GetShouldRecover() bool {
	if x != nil {
		return x.ShouldRecover
	}
	return false
}

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

	// Should the subscriber be able to update the channel data?
	// Use enum over bool as in Protobuf, after setting a bool field to true, merging it with false won't work!
	DataAccess *ChannelDataAccess `protobuf:"varint,1,opt,name=dataAccess,proto3,enum=channeldpb.ChannelDataAccess,oneof" json:"dataAccess,omitempty"`
	// How the fields are filtered before sending to the subscriber.
	// For detailed usage, see https://developers.google.com/protocol-buffers/docs/reference/csharp/class/google/protobuf/well-known-types/field-mask.
	DataFieldMasks []string `protobuf:"bytes,2,rep,name=dataFieldMasks,proto3" json:"dataFieldMasks,omitempty"`
	// How frequent the updated channel data will be fanned-out to the subscriber, in millisecond.
	// For an MMORPG-style server/client, the value should be between 50-100, while an FPS-style game, the value should be between 10-30.
	FanOutIntervalMs *uint32 `protobuf:"varint,3,opt,name=fanOutIntervalMs,proto3,oneof" json:"fanOutIntervalMs,omitempty"`
	// How long between the subscription and the first (and full-state) ChannelDataUpdateMessage being send to the subscriber, in millisecond.
	// To be accurate, the first fan-out time will be (sub time + fan-out delay). It's possible to set the delay to a negative value to makee the first fan-out happen earlier.
	// Fan-out delay is useful when the clients need spawn message (sent from the backend server) to be handled, before handling the ChannelDataUpdateMessage properly.
	// In Mirror, it can take up to 100ms to wait.
	FanOutDelayMs *int32 `protobuf:"varint,4,opt,name=fanOutDelayMs,proto3,oneof" json:"fanOutDelayMs,omitempty"`
	// Whether the subscriber should skip the fan-out of its own ChannelDataUpdate. Default is true.
	SkipSelfUpdateFanOut *bool `protobuf:"varint,5,opt,name=skipSelfUpdateFanOut,proto3,oneof" json:"skipSelfUpdateFanOut,omitempty"`
	// Whether the subscriber should skip the first fan-out that contains the full states. Default is false.
	SkipFirstFanOut *bool `protobuf:"varint,6,opt,name=skipFirstFanOut,proto3,oneof" json:"skipFirstFanOut,omitempty"`
}

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

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

func (*ChannelSubscriptionOptions) ProtoMessage() {}

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

func (x *ChannelSubscriptionOptions) GetDataAccess() ChannelDataAccess {
	if x != nil && x.DataAccess != nil {
		return *x.DataAccess
	}
	return ChannelDataAccess_NO_ACCESS
}

func (x *ChannelSubscriptionOptions) GetDataFieldMasks() []string {
	if x != nil {
		return x.DataFieldMasks
	}
	return nil
}

func (x *ChannelSubscriptionOptions) GetFanOutIntervalMs() uint32 {
	if x != nil && x.FanOutIntervalMs != nil {
		return *x.FanOutIntervalMs
	}
	return 0
}

func (x *ChannelSubscriptionOptions) GetFanOutDelayMs() int32 {
	if x != nil && x.FanOutDelayMs != nil {
		return *x.FanOutDelayMs
	}
	return 0
}

func (x *ChannelSubscriptionOptions) GetSkipSelfUpdateFanOut() bool {
	if x != nil && x.SkipSelfUpdateFanOut != nil {
		return *x.SkipSelfUpdateFanOut
	}
	return false
}

func (x *ChannelSubscriptionOptions) GetSkipFirstFanOut() bool {
	if x != nil && x.SkipFirstFanOut != nil {
		return *x.SkipFirstFanOut
	}
	return false
}

// Defines how two @ChannelDataUpdateMessage.data are merged.
// The custom merge function should always be implemented for the sake of performance. Otherwise,
// the default merge that based on Protobuf's reflection will be used, and it's >10 times slower.
type ChannelDataMergeOptions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// By default, Protobuf appends the src list to the dst list. Setting this option to true will replace the dst list with the src list.
	ShouldReplaceList bool `protobuf:"varint,1,opt,name=shouldReplaceList,proto3" json:"shouldReplaceList,omitempty"`
	// If the value is greater than 0, truncate the the list when oversized.
	ListSizeLimit uint32 `protobuf:"varint,2,opt,name=listSizeLimit,proto3" json:"listSizeLimit,omitempty"`
	// If true, the top elements of the list will be truncated instead of the end. It's useful for scenarios like chat message list.
	TruncateTop bool `protobuf:"varint,3,opt,name=truncateTop,proto3" json:"truncateTop,omitempty"`
	// If true, the merge method will remove any map entry that has removed=true in its value.
	ShouldCheckRemovableMapField bool `protobuf:"varint,4,opt,name=shouldCheckRemovableMapField,proto3" json:"shouldCheckRemovableMapField,omitempty"`
}

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

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

func (*ChannelDataMergeOptions) ProtoMessage() {}

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

func (x *ChannelDataMergeOptions) GetShouldReplaceList() bool {
	if x != nil {
		return x.ShouldReplaceList
	}
	return false
}

func (x *ChannelDataMergeOptions) GetListSizeLimit() uint32 {
	if x != nil {
		return x.ListSizeLimit
	}
	return 0
}

func (x *ChannelDataMergeOptions) GetTruncateTop() bool {
	if x != nil {
		return x.TruncateTop
	}
	return false
}

func (x *ChannelDataMergeOptions) GetShouldCheckRemovableMapField() bool {
	if x != nil {
		return x.ShouldCheckRemovableMapField
	}
	return false
}

// The message should have channelId = 0 in order to be handled.
// Response: @CreateChannelResultMessage, if the MessageType is CREATE_CHANNEL and the channelType is not SPATIAL. The GLOBAL channel owner will also receive this message.
// Response: @CreateSpatialChannelsResultMessage, if the MessageType is CREATE_SPATIAL_CHANNEL and the channelType is SPATIAL. The GLOBAL channel owner will also receive this message.
// Response: @SubscribedToChannelResultMessage. The channel creator will also be subscribed to the channel immediately after the creation.
type CreateChannelMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ChannelType  ChannelType                 `protobuf:"varint,1,opt,name=channelType,proto3,enum=channeldpb.ChannelType" json:"channelType,omitempty"`
	Metadata     string                      `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	SubOptions   *ChannelSubscriptionOptions `protobuf:"bytes,3,opt,name=subOptions,proto3" json:"subOptions,omitempty"`
	Data         *anypb.Any                  `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
	MergeOptions *ChannelDataMergeOptions    `protobuf:"bytes,5,opt,name=mergeOptions,proto3" json:"mergeOptions,omitempty"`
}

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

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

func (*CreateChannelMessage) ProtoMessage() {}

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

func (x *CreateChannelMessage) GetChannelType() ChannelType {
	if x != nil {
		return x.ChannelType
	}
	return ChannelType_UNKNOWN
}

func (x *CreateChannelMessage) GetMetadata() string {
	if x != nil {
		return x.Metadata
	}
	return ""
}

func (x *CreateChannelMessage) GetSubOptions() *ChannelSubscriptionOptions {
	if x != nil {
		return x.SubOptions
	}
	return nil
}

func (x *CreateChannelMessage) GetData() *anypb.Any {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *CreateChannelMessage) GetMergeOptions() *ChannelDataMergeOptions {
	if x != nil {
		return x.MergeOptions
	}
	return nil
}

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

	ChannelType ChannelType `protobuf:"varint,1,opt,name=channelType,proto3,enum=channeldpb.ChannelType" json:"channelType,omitempty"`
	Metadata    string      `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	OwnerConnId uint32      `protobuf:"varint,3,opt,name=ownerConnId,proto3" json:"ownerConnId,omitempty"`
	// The ID of the newly-created channel. Add this field to differentiate it from MessagePack.channelId.
	ChannelId uint32 `protobuf:"varint,4,opt,name=channelId,proto3" json:"channelId,omitempty"`
}

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

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

func (*CreateChannelResultMessage) ProtoMessage() {}

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

func (x *CreateChannelResultMessage) GetChannelType() ChannelType {
	if x != nil {
		return x.ChannelType
	}
	return ChannelType_UNKNOWN
}

func (x *CreateChannelResultMessage) GetMetadata() string {
	if x != nil {
		return x.Metadata
	}
	return ""
}

func (x *CreateChannelResultMessage) GetOwnerConnId() uint32 {
	if x != nil {
		return x.OwnerConnId
	}
	return 0
}

func (x *CreateChannelResultMessage) GetChannelId() uint32 {
	if x != nil {
		return x.ChannelId
	}
	return 0
}

// The message should have channelId = 0 in order to be handled.
// Response: all connections in the channel will receive @RemoveChannelMessage. The GLOBAL channel owner will also receive this message.
type RemoveChannelMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ChannelId uint32 `protobuf:"varint,1,opt,name=channelId,proto3" json:"channelId,omitempty"`
}

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

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

func (*RemoveChannelMessage) ProtoMessage() {}

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

func (x *RemoveChannelMessage) GetChannelId() uint32 {
	if x != nil {
		return x.ChannelId
	}
	return 0
}

// The message should have channelId = 0 in order to be handled.
// Response: @ListChannelResultMessage
type ListChannelMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TypeFilter      ChannelType `protobuf:"varint,1,opt,name=typeFilter,proto3,enum=channeldpb.ChannelType" json:"typeFilter,omitempty"`
	MetadataFilters []string    `protobuf:"bytes,2,rep,name=metadataFilters,proto3" json:"metadataFilters,omitempty"`
}

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

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

func (*ListChannelMessage) ProtoMessage() {}

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

func (x *ListChannelMessage) GetTypeFilter() ChannelType {
	if x != nil {
		return x.TypeFilter
	}
	return ChannelType_UNKNOWN
}

func (x *ListChannelMessage) GetMetadataFilters() []string {
	if x != nil {
		return x.MetadataFilters
	}
	return nil
}

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

	Channels []*ListChannelResultMessage_ChannelInfo `protobuf:"bytes,1,rep,name=channels,proto3" json:"channels,omitempty"`
}

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

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

func (*ListChannelResultMessage) ProtoMessage() {}

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

func (x *ListChannelResultMessage) GetChannels() []*ListChannelResultMessage_ChannelInfo {
	if x != nil {
		return x.Channels
	}
	return nil
}

// Response: @SubscribedToChannelResultMessage. The message sender, the subscribed connection (if not the sender), and the channel owner will receive the message respectively.
// If the connection has already been subscripbed to the channel, the subOptions will be merged, but no response message will be sent.
type SubscribedToChannelMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The connection to be added to the channel is not necessarily the one sends the message.
	// Remarks: only the channel owner or the GLOBAL channel owner can sub another connection to the channel.
	ConnId     uint32                      `protobuf:"varint,1,opt,name=connId,proto3" json:"connId,omitempty"`
	SubOptions *ChannelSubscriptionOptions `protobuf:"bytes,2,opt,name=subOptions,proto3" json:"subOptions,omitempty"`
}

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

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

func (*SubscribedToChannelMessage) ProtoMessage() {}

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

func (x *SubscribedToChannelMessage) GetConnId() uint32 {
	if x != nil {
		return x.ConnId
	}
	return 0
}

func (x *SubscribedToChannelMessage) GetSubOptions() *ChannelSubscriptionOptions {
	if x != nil {
		return x.SubOptions
	}
	return nil
}

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

	// The connection that subscribed.
	ConnId      uint32                      `protobuf:"varint,1,opt,name=connId,proto3" json:"connId,omitempty"`
	SubOptions  *ChannelSubscriptionOptions `protobuf:"bytes,2,opt,name=subOptions,proto3" json:"subOptions,omitempty"`
	ConnType    ConnectionType              `protobuf:"varint,3,opt,name=connType,proto3,enum=channeldpb.ConnectionType" json:"connType,omitempty"`
	ChannelType ChannelType                 `protobuf:"varint,4,opt,name=channelType,proto3,enum=channeldpb.ChannelType" json:"channelType,omitempty"`
}

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

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

func (*SubscribedToChannelResultMessage) ProtoMessage() {}

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

func (x *SubscribedToChannelResultMessage) GetConnId() uint32 {
	if x != nil {
		return x.ConnId
	}
	return 0
}

func (x *SubscribedToChannelResultMessage) GetSubOptions() *ChannelSubscriptionOptions {
	if x != nil {
		return x.SubOptions
	}
	return nil
}

func (x *SubscribedToChannelResultMessage) GetConnType() ConnectionType {
	if x != nil {
		return x.ConnType
	}
	return ConnectionType_NO_CONNECTION
}

func (x *SubscribedToChannelResultMessage) GetChannelType() ChannelType {
	if x != nil {
		return x.ChannelType
	}
	return ChannelType_UNKNOWN
}

// Response: @UnsubscribedFromChannelResultMessage. The message sender, the connection that unsubscribed, and the channel owner will receive the message respectively.
type UnsubscribedFromChannelMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The connection to be removed from the channel is not necessarily the one sends the message.
	// Remarks: only the channel owner or the GLOBAL channel can unsub another connection from the channel.
	ConnId uint32 `protobuf:"varint,1,opt,name=connId,proto3" json:"connId,omitempty"`
}

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

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

func (*UnsubscribedFromChannelMessage) ProtoMessage() {}

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

func (x *UnsubscribedFromChannelMessage) GetConnId() uint32 {
	if x != nil {
		return x.ConnId
	}
	return 0
}

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

	// The connection that unsubsribed.
	ConnId      uint32         `protobuf:"varint,1,opt,name=connId,proto3" json:"connId,omitempty"`
	ConnType    ConnectionType `protobuf:"varint,2,opt,name=connType,proto3,enum=channeldpb.ConnectionType" json:"connType,omitempty"`
	ChannelType ChannelType    `protobuf:"varint,3,opt,name=channelType,proto3,enum=channeldpb.ChannelType" json:"channelType,omitempty"`
}

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

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

func (*UnsubscribedFromChannelResultMessage) ProtoMessage() {}

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

func (x *UnsubscribedFromChannelResultMessage) GetConnId() uint32 {
	if x != nil {
		return x.ConnId
	}
	return 0
}

func (x *UnsubscribedFromChannelResultMessage) GetConnType() ConnectionType {
	if x != nil {
		return x.ConnType
	}
	return ConnectionType_NO_CONNECTION
}

func (x *UnsubscribedFromChannelResultMessage) GetChannelType() ChannelType {
	if x != nil {
		return x.ChannelType
	}
	return ChannelType_UNKNOWN
}

// Response: no. Each connection in the channel receives the @ChannelDataUpdateMessage in every @ChannelSubscriptionOptions.FanOutIntervalMs
type ChannelDataUpdateMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data *anypb.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// The ID of the connection that causes the update of the channel data.
	// In a server-authoratative system (which means the @ChannelDataUpdateMessage will only be sent by server), the servers need to send this field to channeld.
	// If the sender is a client, this field will be ignored.
	ContextConnId uint32 `protobuf:"varint,2,opt,name=contextConnId,proto3" json:"contextConnId,omitempty"`
}

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

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

func (*ChannelDataUpdateMessage) ProtoMessage() {}

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

func (x *ChannelDataUpdateMessage) GetData() *anypb.Any {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *ChannelDataUpdateMessage) GetContextConnId() uint32 {
	if x != nil {
		return x.ContextConnId
	}
	return 0
}

// Disconnect another connection from channeld.
// This message should only be sent by the server connection in a server-authoratative environment.
// The message should have channelId = 0 in order to be handled.
// Response: no.
type DisconnectMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConnId uint32 `protobuf:"varint,1,opt,name=connId,proto3" json:"connId,omitempty"`
}

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

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

func (*DisconnectMessage) ProtoMessage() {}

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

func (x *DisconnectMessage) GetConnId() uint32 {
	if x != nil {
		return x.ConnId
	}
	return 0
}

// A combination of channel sub/create/update messages that are sent from channeld to the connection during the recovery process.
type ChannelDataRecoveryMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ChannelId   uint32      `protobuf:"varint,1,opt,name=channelId,proto3" json:"channelId,omitempty"`
	ChannelType ChannelType `protobuf:"varint,2,opt,name=channelType,proto3,enum=channeldpb.ChannelType" json:"channelType,omitempty"`
	Metadata    string      `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
	OwnerConnId uint32      `protobuf:"varint,4,opt,name=ownerConnId,proto3" json:"ownerConnId,omitempty"`
	// Used to restore the channel data in order. The connection that recovers should consume the recovery message in the order of subTime.
	SubTime    int64                       `protobuf:"varint,5,opt,name=subTime,proto3" json:"subTime,omitempty"`
	SubOptions *ChannelSubscriptionOptions `protobuf:"bytes,6,opt,name=subOptions,proto3" json:"subOptions,omitempty"`
	// Full channel data. Objects should be able to re-created from the states in it.
	ChannelData *anypb.Any `protobuf:"bytes,7,opt,name=channelData,proto3" json:"channelData,omitempty"`
	// Additional data that are required to recover the connection, e.g. the spawned objects.
	RecoveryData *anypb.Any `protobuf:"bytes,8,opt,name=recoveryData,proto3,oneof" json:"recoveryData,omitempty"`
}

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

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

func (*ChannelDataRecoveryMessage) ProtoMessage() {}

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

func (x *ChannelDataRecoveryMessage) GetChannelId() uint32 {
	if x != nil {
		return x.ChannelId
	}
	return 0
}

func (x *ChannelDataRecoveryMessage) GetChannelType() ChannelType {
	if x != nil {
		return x.ChannelType
	}
	return ChannelType_UNKNOWN
}

func (x *ChannelDataRecoveryMessage) GetMetadata() string {
	if x != nil {
		return x.Metadata
	}
	return ""
}

func (x *ChannelDataRecoveryMessage) GetOwnerConnId() uint32 {
	if x != nil {
		return x.OwnerConnId
	}
	return 0
}

func (x *ChannelDataRecoveryMessage) GetSubTime() int64 {
	if x != nil {
		return x.SubTime
	}
	return 0
}

func (x *ChannelDataRecoveryMessage) GetSubOptions() *ChannelSubscriptionOptions {
	if x != nil {
		return x.SubOptions
	}
	return nil
}

func (x *ChannelDataRecoveryMessage) GetChannelData() *anypb.Any {
	if x != nil {
		return x.ChannelData
	}
	return nil
}

func (x *ChannelDataRecoveryMessage) GetRecoveryData() *anypb.Any {
	if x != nil {
		return x.RecoveryData
	}
	return nil
}

type EndRecoveryMesssage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*EndRecoveryMesssage) ProtoMessage() {}

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

// Sent from channeld to the subscribed connections of a channel when the owner of the channel is lost.
// The client app should decide for itself which functionalities to disable until the owner is recovered.
type ChannelOwnerLostMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ChannelOwnerLostMessage) ProtoMessage() {}

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

// Sent from channeld to the subscribed connections of a channel when the owner of the channel is recovered.
// The client app should re-enable the functionalities that are disabled when the owner is lost.
type ChannelOwnerRecoveredMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ChannelOwnerRecoveredMessage) ProtoMessage() {}

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

// Left-handed coordinate system with Y-up rule.
type SpatialInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	X float64 `protobuf:"fixed64,1,opt,name=x,proto3" json:"x,omitempty"`
	Y float64 `protobuf:"fixed64,2,opt,name=y,proto3" json:"y,omitempty"`
	Z float64 `protobuf:"fixed64,3,opt,name=z,proto3" json:"z,omitempty"`
}

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

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

func (*SpatialInfo) ProtoMessage() {}

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

func (x *SpatialInfo) GetX() float64 {
	if x != nil {
		return x.X
	}
	return 0
}

func (x *SpatialInfo) GetY() float64 {
	if x != nil {
		return x.Y
	}
	return 0
}

func (x *SpatialInfo) GetZ() float64 {
	if x != nil {
		return x.Z
	}
	return 0
}

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

	SpatialChannelId []uint32 `protobuf:"varint,1,rep,packed,name=spatialChannelId,proto3" json:"spatialChannelId,omitempty"`
	Metadata         string   `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	OwnerConnId      uint32   `protobuf:"varint,3,opt,name=ownerConnId,proto3" json:"ownerConnId,omitempty"`
}

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

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

func (*CreateSpatialChannelsResultMessage) ProtoMessage() {}

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

func (x *CreateSpatialChannelsResultMessage) GetSpatialChannelId() []uint32 {
	if x != nil {
		return x.SpatialChannelId
	}
	return nil
}

func (x *CreateSpatialChannelsResultMessage) GetMetadata() string {
	if x != nil {
		return x.Metadata
	}
	return ""
}

func (x *CreateSpatialChannelsResultMessage) GetOwnerConnId() uint32 {
	if x != nil {
		return x.OwnerConnId
	}
	return 0
}

// The message should have channelId = 0 in order to be handled.
// Response: @QuerySpatialChannelResultMessage
type QuerySpatialChannelMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SpatialInfo []*SpatialInfo `protobuf:"bytes,1,rep,name=spatialInfo,proto3" json:"spatialInfo,omitempty"`
}

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

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

func (*QuerySpatialChannelMessage) ProtoMessage() {}

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

func (x *QuerySpatialChannelMessage) GetSpatialInfo() []*SpatialInfo {
	if x != nil {
		return x.SpatialInfo
	}
	return nil
}

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

	ChannelId []uint32 `protobuf:"varint,1,rep,packed,name=channelId,proto3" json:"channelId,omitempty"`
}

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

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

func (*QuerySpatialChannelResultMessage) ProtoMessage() {}

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

func (x *QuerySpatialChannelResultMessage) GetChannelId() []uint32 {
	if x != nil {
		return x.ChannelId
	}
	return nil
}

// Indicates that all the spatial channels are created by the spatial servers, so the servers can continue further initialization.
type SpatialChannelsReadyMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ServerIndex uint32 `protobuf:"varint,1,opt,name=serverIndex,proto3" json:"serverIndex,omitempty"`
	ServerCount uint32 `protobuf:"varint,2,opt,name=serverCount,proto3" json:"serverCount,omitempty"`
}

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

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

func (*SpatialChannelsReadyMessage) ProtoMessage() {}

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

func (x *SpatialChannelsReadyMessage) GetServerIndex() uint32 {
	if x != nil {
		return x.ServerIndex
	}
	return 0
}

func (x *SpatialChannelsReadyMessage) GetServerCount() uint32 {
	if x != nil {
		return x.ServerCount
	}
	return 0
}

// ALL connections in the source AND destination channels receive this messge when a handover happpned.
// Handover means an object moves from a spatial channel to another. It doesn't necessarily mean the objece moves from a spatial server to another.
type ChannelDataHandoverMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SrcChannelId uint32 `protobuf:"varint,1,opt,name=srcChannelId,proto3" json:"srcChannelId,omitempty"`
	DstChannelId uint32 `protobuf:"varint,2,opt,name=dstChannelId,proto3" json:"dstChannelId,omitempty"`
	// The ID of the client connection that triggered the handover. If the handover is triggered by server (e.g. NPC movement), the value will be 0.
	ContextConnId uint32 `protobuf:"varint,3,opt,name=contextConnId,proto3" json:"contextConnId,omitempty"`
	// The data that migrate from the source channel to the destination channel. It can be the spatial channel data or anything, as long as the spatial servers can use it to process the handover.
	Data *anypb.Any `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*ChannelDataHandoverMessage) ProtoMessage() {}

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

func (x *ChannelDataHandoverMessage) GetSrcChannelId() uint32 {
	if x != nil {
		return x.SrcChannelId
	}
	return 0
}

func (x *ChannelDataHandoverMessage) GetDstChannelId() uint32 {
	if x != nil {
		return x.DstChannelId
	}
	return 0
}

func (x *ChannelDataHandoverMessage) GetContextConnId() uint32 {
	if x != nil {
		return x.ContextConnId
	}
	return 0
}

func (x *ChannelDataHandoverMessage) GetData() *anypb.Any {
	if x != nil {
		return x.Data
	}
	return nil
}

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

	Min         *SpatialInfo `protobuf:"bytes,1,opt,name=min,proto3" json:"min,omitempty"`
	Max         *SpatialInfo `protobuf:"bytes,2,opt,name=max,proto3" json:"max,omitempty"`
	ChannelId   uint32       `protobuf:"varint,3,opt,name=channelId,proto3" json:"channelId,omitempty"`
	ServerIndex uint32       `protobuf:"varint,4,opt,name=serverIndex,proto3" json:"serverIndex,omitempty"`
}

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

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

func (*SpatialRegion) ProtoMessage() {}

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

func (x *SpatialRegion) GetMin() *SpatialInfo {
	if x != nil {
		return x.Min
	}
	return nil
}

func (x *SpatialRegion) GetMax() *SpatialInfo {
	if x != nil {
		return x.Max
	}
	return nil
}

func (x *SpatialRegion) GetChannelId() uint32 {
	if x != nil {
		return x.ChannelId
	}
	return 0
}

func (x *SpatialRegion) GetServerIndex() uint32 {
	if x != nil {
		return x.ServerIndex
	}
	return 0
}

// channeld updates the information of spatial channels and regions to the spatial servers.
// Spatial servers use this information mainly for mapping the position of a spawned object to a correct channelId at realtime (rather than querying it before sending the spawn message to the client).
// Sent upon the creation of spatial channels (after @CreateSpatialChannelsResultMessage being sent), or any regional change (basiclally caused by the loadbalancer).
type SpatialRegionsUpdateMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Regions []*SpatialRegion `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"`
}

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

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

func (*SpatialRegionsUpdateMessage) ProtoMessage() {}

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

func (x *SpatialRegionsUpdateMessage) GetRegions() []*SpatialRegion {
	if x != nil {
		return x.Regions
	}
	return nil
}

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

	SpotsAOI  *SpatialInterestQuery_SpotsAOI  `protobuf:"bytes,1,opt,name=spotsAOI,proto3,oneof" json:"spotsAOI,omitempty"`
	BoxAOI    *SpatialInterestQuery_BoxAOI    `protobuf:"bytes,2,opt,name=boxAOI,proto3,oneof" json:"boxAOI,omitempty"`
	SphereAOI *SpatialInterestQuery_SphereAOI `protobuf:"bytes,3,opt,name=sphereAOI,proto3,oneof" json:"sphereAOI,omitempty"`
	ConeAOI   *SpatialInterestQuery_ConeAOI   `protobuf:"bytes,4,opt,name=coneAOI,proto3,oneof" json:"coneAOI,omitempty"`
}

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

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

func (*SpatialInterestQuery) ProtoMessage() {}

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

func (x *SpatialInterestQuery) GetSpotsAOI() *SpatialInterestQuery_SpotsAOI {
	if x != nil {
		return x.SpotsAOI
	}
	return nil
}

func (x *SpatialInterestQuery) GetBoxAOI() *SpatialInterestQuery_BoxAOI {
	if x != nil {
		return x.BoxAOI
	}
	return nil
}

func (x *SpatialInterestQuery) GetSphereAOI() *SpatialInterestQuery_SphereAOI {
	if x != nil {
		return x.SphereAOI
	}
	return nil
}

func (x *SpatialInterestQuery) GetConeAOI() *SpatialInterestQuery_ConeAOI {
	if x != nil {
		return x.ConeAOI
	}
	return nil
}

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

	ConnId uint32                `protobuf:"varint,1,opt,name=connId,proto3" json:"connId,omitempty"`
	Query  *SpatialInterestQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
}

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

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

func (*UpdateSpatialInterestMessage) ProtoMessage() {}

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

func (x *UpdateSpatialInterestMessage) GetConnId() uint32 {
	if x != nil {
		return x.ConnId
	}
	return 0
}

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

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

	EntityId     uint32                      `protobuf:"varint,1,opt,name=entityId,proto3" json:"entityId,omitempty"`
	Metadata     string                      `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	SubOptions   *ChannelSubscriptionOptions `protobuf:"bytes,3,opt,name=subOptions,proto3" json:"subOptions,omitempty"`
	Data         *anypb.Any                  `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
	MergeOptions *ChannelDataMergeOptions    `protobuf:"bytes,5,opt,name=mergeOptions,proto3" json:"mergeOptions,omitempty"`
	IsWellKnown  bool                        `protobuf:"varint,6,opt,name=isWellKnown,proto3" json:"isWellKnown,omitempty"`
}

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

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

func (*CreateEntityChannelMessage) ProtoMessage() {}

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

func (x *CreateEntityChannelMessage) GetEntityId() uint32 {
	if x != nil {
		return x.EntityId
	}
	return 0
}

func (x *CreateEntityChannelMessage) GetMetadata() string {
	if x != nil {
		return x.Metadata
	}
	return ""
}

func (x *CreateEntityChannelMessage) GetSubOptions() *ChannelSubscriptionOptions {
	if x != nil {
		return x.SubOptions
	}
	return nil
}

func (x *CreateEntityChannelMessage) GetData() *anypb.Any {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *CreateEntityChannelMessage) GetMergeOptions() *ChannelDataMergeOptions {
	if x != nil {
		return x.MergeOptions
	}
	return nil
}

func (x *CreateEntityChannelMessage) GetIsWellKnown() bool {
	if x != nil {
		return x.IsWellKnown
	}
	return false
}

// Add specified entities to the handover/lock group of the entity channel. Should sent by the entity channel owner.
type AddEntityGroupMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type          EntityGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=channeldpb.EntityGroupType" json:"type,omitempty"`
	EntitiesToAdd []uint32        `protobuf:"varint,2,rep,packed,name=EntitiesToAdd,proto3" json:"EntitiesToAdd,omitempty"`
}

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

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

func (*AddEntityGroupMessage) ProtoMessage() {}

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

func (x *AddEntityGroupMessage) GetType() EntityGroupType {
	if x != nil {
		return x.Type
	}
	return EntityGroupType_HANDOVER
}

func (x *AddEntityGroupMessage) GetEntitiesToAdd() []uint32 {
	if x != nil {
		return x.EntitiesToAdd
	}
	return nil
}

// Remove specified entities from the handover/lock group of the entity channel. Should sent by the entity channel owner.
type RemoveEntityGroupMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type             EntityGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=channeldpb.EntityGroupType" json:"type,omitempty"`
	EntitiesToRemove []uint32        `protobuf:"varint,2,rep,packed,name=EntitiesToRemove,proto3" json:"EntitiesToRemove,omitempty"`
}

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

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

func (*RemoveEntityGroupMessage) ProtoMessage() {}

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

func (x *RemoveEntityGroupMessage) GetType() EntityGroupType {
	if x != nil {
		return x.Type
	}
	return EntityGroupType_HANDOVER
}

func (x *RemoveEntityGroupMessage) GetEntitiesToRemove() []uint32 {
	if x != nil {
		return x.EntitiesToRemove
	}
	return nil
}

// Client requests the spatail regions information. Only valid in Development mode (with "-dev" launch argument).
// Response: @SpatialRegionsUpdateMessage
type DebugGetSpatialRegionsMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*DebugGetSpatialRegionsMessage) ProtoMessage() {}

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

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

	ChannelId   uint32      `protobuf:"varint,1,opt,name=channelId,proto3" json:"channelId,omitempty"`
	ChannelType ChannelType `protobuf:"varint,2,opt,name=channelType,proto3,enum=channeldpb.ChannelType" json:"channelType,omitempty"`
	Metadata    string      `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
}

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

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

func (*ListChannelResultMessage_ChannelInfo) ProtoMessage() {}

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

func (x *ListChannelResultMessage_ChannelInfo) GetChannelId() uint32 {
	if x != nil {
		return x.ChannelId
	}
	return 0
}

func (x *ListChannelResultMessage_ChannelInfo) GetChannelType() ChannelType {
	if x != nil {
		return x.ChannelType
	}
	return ChannelType_UNKNOWN
}

func (x *ListChannelResultMessage_ChannelInfo) GetMetadata() string {
	if x != nil {
		return x.Metadata
	}
	return ""
}

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

	Spots []*SpatialInfo `protobuf:"bytes,1,rep,name=spots,proto3" json:"spots,omitempty"`
	// The fixed distance between each spot and the player. If not specified, 0 = nearest will be used.
	Dists []uint32 `protobuf:"varint,2,rep,packed,name=dists,proto3" json:"dists,omitempty"`
}

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

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

func (*SpatialInterestQuery_SpotsAOI) ProtoMessage() {}

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

func (x *SpatialInterestQuery_SpotsAOI) GetSpots() []*SpatialInfo {
	if x != nil {
		return x.Spots
	}
	return nil
}

func (x *SpatialInterestQuery_SpotsAOI) GetDists() []uint32 {
	if x != nil {
		return x.Dists
	}
	return nil
}

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

	Center *SpatialInfo `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"`
	Extent *SpatialInfo `protobuf:"bytes,2,opt,name=extent,proto3" json:"extent,omitempty"`
}

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

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

func (*SpatialInterestQuery_BoxAOI) ProtoMessage() {}

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

func (x *SpatialInterestQuery_BoxAOI) GetCenter() *SpatialInfo {
	if x != nil {
		return x.Center
	}
	return nil
}

func (x *SpatialInterestQuery_BoxAOI) GetExtent() *SpatialInfo {
	if x != nil {
		return x.Extent
	}
	return nil
}

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

	Center *SpatialInfo `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"`
	Radius float64      `protobuf:"fixed64,2,opt,name=radius,proto3" json:"radius,omitempty"`
}

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

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

func (*SpatialInterestQuery_SphereAOI) ProtoMessage() {}

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

func (x *SpatialInterestQuery_SphereAOI) GetCenter() *SpatialInfo {
	if x != nil {
		return x.Center
	}
	return nil
}

func (x *SpatialInterestQuery_SphereAOI) GetRadius() float64 {
	if x != nil {
		return x.Radius
	}
	return 0
}

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

	Center    *SpatialInfo `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"`
	Direction *SpatialInfo `protobuf:"bytes,2,opt,name=direction,proto3" json:"direction,omitempty"`
	// In radians.
	Angle  float64 `protobuf:"fixed64,3,opt,name=angle,proto3" json:"angle,omitempty"`
	Radius float64 `protobuf:"fixed64,4,opt,name=radius,proto3" json:"radius,omitempty"`
}

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

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

func (*SpatialInterestQuery_ConeAOI) ProtoMessage() {}

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

func (x *SpatialInterestQuery_ConeAOI) GetCenter() *SpatialInfo {
	if x != nil {
		return x.Center
	}
	return nil
}

func (x *SpatialInterestQuery_ConeAOI) GetDirection() *SpatialInfo {
	if x != nil {
		return x.Direction
	}
	return nil
}

func (x *SpatialInterestQuery_ConeAOI) GetAngle() float64 {
	if x != nil {
		return x.Angle
	}
	return 0
}

func (x *SpatialInterestQuery_ConeAOI) GetRadius() float64 {
	if x != nil {
		return x.Radius
	}
	return 0
}

var File_channeld_proto protoreflect.FileDescriptor

var file_channeld_proto_rawDesc = []byte{
	0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x12, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x1a, 0x19, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e,
	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3d, 0x0a, 0x06, 0x50, 0x61, 0x63, 0x6b, 0x65,
	0x74, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62,
	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x08, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61,
	0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73,
	0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x73, 0x67,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x42, 0x6f, 0x64, 0x79, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x54,
	0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61,
	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79,
	0x6c, 0x6f, 0x61, 0x64, 0x22, 0x63, 0x0a, 0x0b, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x65,
	0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x15, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
	0x66, 0x69, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67,
	0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c,
	0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x99, 0x02, 0x0a, 0x11, 0x41, 0x75,
	0x74, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
	0x40, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x28, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x41, 0x75, 0x74,
	0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x41,
	0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x0f, 0x63, 0x6f, 0x6d,
	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e,
	0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52,
	0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x24, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x52,
	0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x22, 0x3d, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46,
	0x55, 0x4c, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f,
	0x50, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,
	0x5f, 0x4c, 0x54, 0x10, 0x02, 0x22, 0xaf, 0x03, 0x0a, 0x1a, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x41, 0x63, 0x63, 0x65,
	0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74,
	0x61, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x41,
	0x63, 0x63, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61,
	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x73,
	0x12, 0x2f, 0x0a, 0x10, 0x66, 0x61, 0x6e, 0x4f, 0x75, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76,
	0x61, 0x6c, 0x4d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x10, 0x66, 0x61,
	0x6e, 0x4f, 0x75, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x73, 0x88, 0x01,
	0x01, 0x12, 0x29, 0x0a, 0x0d, 0x66, 0x61, 0x6e, 0x4f, 0x75, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79,
	0x4d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0d, 0x66, 0x61, 0x6e, 0x4f,
	0x75, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x14,
	0x73, 0x6b, 0x69, 0x70, 0x53, 0x65, 0x6c, 0x66, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61,
	0x6e, 0x4f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x14, 0x73, 0x6b,
	0x69, 0x70, 0x53, 0x65, 0x6c, 0x66, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61, 0x6e, 0x4f,
	0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x69, 0x72,
	0x73, 0x74, 0x46, 0x61, 0x6e, 0x4f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04,
	0x52, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x69, 0x72, 0x73, 0x74, 0x46, 0x61, 0x6e, 0x4f, 0x75,
	0x74, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x41, 0x63, 0x63,
	0x65, 0x73, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x61, 0x6e, 0x4f, 0x75, 0x74, 0x49, 0x6e,
	0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x61, 0x6e,
	0x4f, 0x75, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73,
	0x6b, 0x69, 0x70, 0x53, 0x65, 0x6c, 0x66, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61, 0x6e,
	0x4f, 0x75, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x69, 0x72, 0x73,
	0x74, 0x46, 0x61, 0x6e, 0x4f, 0x75, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x52, 0x65, 0x70,
	0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11,
	0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d,
	0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x69,
	0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x75, 0x6e, 0x63,
	0x61, 0x74, 0x65, 0x54, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x74, 0x72,
	0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x70, 0x12, 0x42, 0x0a, 0x1c, 0x73, 0x68, 0x6f,
	0x75, 0x6c, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x62, 0x6c,
	0x65, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x1c, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6d, 0x6f,
	0x76, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xa8, 0x02,
	0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a,
	0x0a, 0x73, 0x75, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12,
	0x47, 0x0a, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64,
	0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65,
	0x72, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67,
	0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x20,
	0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64,
	0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x34,
	0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x49, 0x64, 0x22, 0x77, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x74, 0x79,
	0x70, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17,
	0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x46, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xed, 0x01,
	0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x1a, 0x82, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7c, 0x0a,
	0x1a, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x54, 0x6f, 0x43, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63,
	0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6e,
	0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x75, 0x62, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
	0x0a, 0x73, 0x75, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x20,
	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x54, 0x6f, 0x43, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x36, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e,
	0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08,
	0x63, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54,
	0x79, 0x70, 0x65, 0x22, 0x38, 0x0a, 0x1e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
	0x62, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x01,
	0x0a, 0x24, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x46, 0x72,
	0x6f, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x12, 0x36,
	0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x1a, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x63, 0x6f,
	0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70,
	0x65, 0x22, 0x6a, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e,
	0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x78, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x22, 0x2b, 0x0a,
	0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x03, 0x0a, 0x1a, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x20,
	0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64,
	0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x75,
	0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
	0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74,
	0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0b, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65,
	0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65,
	0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x15, 0x0a, 0x13, 0x45, 0x6e,
	0x64, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x77, 0x6e, 0x65,
	0x72, 0x4c, 0x6f, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x1e, 0x0a, 0x1c,
	0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x37, 0x0a, 0x0b,
	0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0c, 0x0a, 0x01, 0x78,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x79, 0x12, 0x0c, 0x0a, 0x01, 0x7a, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x01, 0x52, 0x01, 0x7a, 0x22, 0x8e, 0x01, 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x10,
	0x73, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6e,
	0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72,
	0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53,
	0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x73, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x0b, 0x73, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22,
	0x40, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49,
	0x64, 0x22, 0x61, 0x0a, 0x1b, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x64,
	0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb4, 0x01, 0x0a, 0x1a, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x6e, 0x64, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x72, 0x63, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x72, 0x63, 0x43, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x73, 0x74, 0x43, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64,
	0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x49,
	0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa5, 0x01, 0x0a, 0x0d,
	0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a,
	0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x29, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64,
	0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03,
	0x6d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49,
	0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e,
	0x64, 0x65, 0x78, 0x22, 0x52, 0x0a, 0x1b, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65,
	0x67, 0x69, 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62,
	0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x07,
	0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x06, 0x0a, 0x14, 0x53, 0x70, 0x61, 0x74,
	0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x12, 0x4a, 0x0a, 0x08, 0x73, 0x70, 0x6f, 0x74, 0x73, 0x41, 0x4f, 0x49, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e,
	0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x73, 0x41, 0x4f, 0x49, 0x48, 0x00, 0x52,
	0x08, 0x73, 0x70, 0x6f, 0x74, 0x73, 0x41, 0x4f, 0x49, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x06,
	0x62, 0x6f, 0x78, 0x41, 0x4f, 0x49, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61,
	0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x42,
	0x6f, 0x78, 0x41, 0x4f, 0x49, 0x48, 0x01, 0x52, 0x06, 0x62, 0x6f, 0x78, 0x41, 0x4f, 0x49, 0x88,
	0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x41, 0x4f, 0x49, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64,
	0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65,
	0x73, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x70, 0x68, 0x65, 0x72, 0x65, 0x41, 0x4f,
	0x49, 0x48, 0x02, 0x52, 0x09, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x41, 0x4f, 0x49, 0x88, 0x01,
	0x01, 0x12, 0x47, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x65, 0x41, 0x4f, 0x49, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e,
	0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x65, 0x41, 0x4f, 0x49, 0x48, 0x03, 0x52, 0x07,
	0x63, 0x6f, 0x6e, 0x65, 0x41, 0x4f, 0x49, 0x88, 0x01, 0x01, 0x1a, 0x4f, 0x0a, 0x08, 0x53, 0x70,
	0x6f, 0x74, 0x73, 0x41, 0x4f, 0x49, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x70, 0x6f, 0x74, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64,
	0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05,
	0x73, 0x70, 0x6f, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0d, 0x52, 0x05, 0x64, 0x69, 0x73, 0x74, 0x73, 0x1a, 0x6a, 0x0a, 0x06, 0x42,
	0x6f, 0x78, 0x41, 0x4f, 0x49, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64,
	0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06,
	0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x64, 0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x06, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x54, 0x0a, 0x09, 0x53, 0x70, 0x68, 0x65, 0x72,
	0x65, 0x41, 0x4f, 0x49, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70,
	0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63,
	0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x1a, 0x9f, 0x01,
	0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x65, 0x41, 0x4f, 0x49, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x65, 0x6e,
	0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x09, 0x64, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69,
	0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01,
	0x52, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75,
	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x42,
	0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x73, 0x41, 0x4f, 0x49, 0x42, 0x09, 0x0a, 0x07,
	0x5f, 0x62, 0x6f, 0x78, 0x41, 0x4f, 0x49, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x70, 0x68, 0x65,
	0x72, 0x65, 0x41, 0x4f, 0x49, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x65, 0x41, 0x4f,
	0x49, 0x22, 0x6e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x74, 0x69,
	0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x71, 0x75, 0x65,
	0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x74,
	0x65, 0x72, 0x65, 0x73, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72,
	0x79, 0x22, 0xb1, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69,
	0x74, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x0c, 0x6d, 0x65,
	0x72, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x43, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f,
	0x77, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x57, 0x65, 0x6c, 0x6c,
	0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x22, 0x6e, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x69,
	0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f,
	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
	0x24, 0x0a, 0x0d, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0d, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73,
	0x54, 0x6f, 0x41, 0x64, 0x64, 0x22, 0x77, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45,
	0x6e, 0x74, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x1b, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x74,
	0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x54, 0x6f,
	0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x10, 0x45, 0x6e,
	0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x1f,
	0x0a, 0x1d, 0x44, 0x65, 0x62, 0x75, 0x67, 0x47, 0x65, 0x74, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61,
	0x6c, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a,
	0xa7, 0x01, 0x0a, 0x0d, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53,
	0x54, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x43, 0x4f,
	0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c,
	0x4c, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x55, 0x54, 0x5f, 0x53,
	0x45, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x4c, 0x4c, 0x5f, 0x42,
	0x55, 0x54, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4c,
	0x4c, 0x5f, 0x42, 0x55, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x10, 0x12, 0x12,
	0x0a, 0x0e, 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x55, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52,
	0x10, 0x20, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x4a, 0x41, 0x43, 0x45, 0x4e, 0x54, 0x5f, 0x43,
	0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x53, 0x10, 0x40, 0x2a, 0x3b, 0x0a, 0x0e, 0x43, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x4e,
	0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0a,
	0x0a, 0x06, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c,
	0x49, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x90, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x10, 0x01, 0x12,
	0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08,
	0x53, 0x55, 0x42, 0x57, 0x4f, 0x52, 0x4c, 0x44, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x50,
	0x41, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x54, 0x49, 0x54,
	0x59, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, 0x64, 0x12, 0x09, 0x0a,
	0x05, 0x54, 0x45, 0x53, 0x54, 0x31, 0x10, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x45, 0x53, 0x54,
	0x32, 0x10, 0x66, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x45, 0x53, 0x54, 0x33, 0x10, 0x67, 0x12, 0x09,
	0x0a, 0x05, 0x54, 0x45, 0x53, 0x54, 0x34, 0x10, 0x68, 0x2a, 0xbb, 0x04, 0x0a, 0x0b, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56,
	0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x48, 0x10, 0x01,
	0x12, 0x12, 0x0a, 0x0e, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e,
	0x45, 0x4c, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x43,
	0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x53, 0x54,
	0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x55,
	0x42, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x06, 0x12, 0x16,
	0x0a, 0x12, 0x55, 0x4e, 0x53, 0x55, 0x42, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x43, 0x48, 0x41,
	0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45,
	0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x08, 0x12,
	0x0e, 0x0a, 0x0a, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x09, 0x12,
	0x1a, 0x0a, 0x16, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x50, 0x41, 0x54, 0x49, 0x41,
	0x4c, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, 0x51,
	0x55, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x50, 0x41, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x48, 0x41,
	0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x0b, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45,
	0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4f, 0x56, 0x45, 0x52, 0x10,
	0x0c, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x50, 0x41, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x47,
	0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0d, 0x12, 0x1b, 0x0a,
	0x17, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x50, 0x41, 0x54, 0x49, 0x41, 0x4c, 0x5f,
	0x49, 0x4e, 0x54, 0x45, 0x52, 0x45, 0x53, 0x54, 0x10, 0x0e, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x52,
	0x45, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e,
	0x4e, 0x45, 0x4c, 0x10, 0x0f, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f,
	0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x45,
	0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x4d, 0x4f,
	0x56, 0x45, 0x10, 0x11, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x50, 0x41, 0x54, 0x49, 0x41, 0x4c, 0x5f,
	0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x12,
	0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41,
	0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x14, 0x12, 0x10, 0x0a, 0x0c, 0x52,
	0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x15, 0x12, 0x16, 0x0a,
	0x12, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4c,
	0x4f, 0x53, 0x54, 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c,
	0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x45, 0x44,
	0x10, 0x17, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x47, 0x45, 0x54, 0x5f,
	0x53, 0x50, 0x41, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x53, 0x10,
	0x63, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f,
	0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x64, 0x2a, 0x31, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x72,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f,
	0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0a,
	0x0a, 0x06, 0x53, 0x4e, 0x41, 0x50, 0x50, 0x59, 0x10, 0x01, 0x2a, 0x45, 0x0a, 0x11, 0x43, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12,
	0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x0f,
	0x0a, 0x0b, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12,
	0x10, 0x0a, 0x0c, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10,
	0x02, 0x2a, 0x29, 0x0a, 0x0f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x48, 0x41, 0x4e, 0x44, 0x4f, 0x56, 0x45, 0x52,
	0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x42, 0x30, 0x5a, 0x2e,
	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x64, 0x6f, 0x72, 0x67, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x2f,
	0x70, 0x6b, 0x67, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x64, 0x70, 0x62, 0x62, 0x06,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_channeld_proto_rawDescOnce sync.Once
	file_channeld_proto_rawDescData = file_channeld_proto_rawDesc
)

func file_channeld_proto_rawDescGZIP() []byte {
	file_channeld_proto_rawDescOnce.Do(func() {
		file_channeld_proto_rawDescData = protoimpl.X.CompressGZIP(file_channeld_proto_rawDescData)
	})
	return file_channeld_proto_rawDescData
}

var file_channeld_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
var file_channeld_proto_msgTypes = make([]protoimpl.MessageInfo, 41)
var file_channeld_proto_goTypes = []interface{}{
	(BroadcastType)(0),                           // 0: channeldpb.BroadcastType
	(ConnectionType)(0),                          // 1: channeldpb.ConnectionType
	(ChannelType)(0),                             // 2: channeldpb.ChannelType
	(MessageType)(0),                             // 3: channeldpb.MessageType
	(CompressionType)(0),                         // 4: channeldpb.CompressionType
	(ChannelDataAccess)(0),                       // 5: channeldpb.ChannelDataAccess
	(EntityGroupType)(0),                         // 6: channeldpb.EntityGroupType
	(AuthResultMessage_AuthResult)(0),            // 7: channeldpb.AuthResultMessage.AuthResult
	(*Packet)(nil),                               // 8: channeldpb.Packet
	(*MessagePack)(nil),                          // 9: channeldpb.MessagePack
	(*ServerForwardMessage)(nil),                 // 10: channeldpb.ServerForwardMessage
	(*AuthMessage)(nil),                          // 11: channeldpb.AuthMessage
	(*AuthResultMessage)(nil),                    // 12: channeldpb.AuthResultMessage
	(*ChannelSubscriptionOptions)(nil),           // 13: channeldpb.ChannelSubscriptionOptions
	(*ChannelDataMergeOptions)(nil),              // 14: channeldpb.ChannelDataMergeOptions
	(*CreateChannelMessage)(nil),                 // 15: channeldpb.CreateChannelMessage
	(*CreateChannelResultMessage)(nil),           // 16: channeldpb.CreateChannelResultMessage
	(*RemoveChannelMessage)(nil),                 // 17: channeldpb.RemoveChannelMessage
	(*ListChannelMessage)(nil),                   // 18: channeldpb.ListChannelMessage
	(*ListChannelResultMessage)(nil),             // 19: channeldpb.ListChannelResultMessage
	(*SubscribedToChannelMessage)(nil),           // 20: channeldpb.SubscribedToChannelMessage
	(*SubscribedToChannelResultMessage)(nil),     // 21: channeldpb.SubscribedToChannelResultMessage
	(*UnsubscribedFromChannelMessage)(nil),       // 22: channeldpb.UnsubscribedFromChannelMessage
	(*UnsubscribedFromChannelResultMessage)(nil), // 23: channeldpb.UnsubscribedFromChannelResultMessage
	(*ChannelDataUpdateMessage)(nil),             // 24: channeldpb.ChannelDataUpdateMessage
	(*DisconnectMessage)(nil),                    // 25: channeldpb.DisconnectMessage
	(*ChannelDataRecoveryMessage)(nil),           // 26: channeldpb.ChannelDataRecoveryMessage
	(*EndRecoveryMesssage)(nil),                  // 27: channeldpb.EndRecoveryMesssage
	(*ChannelOwnerLostMessage)(nil),              // 28: channeldpb.ChannelOwnerLostMessage
	(*ChannelOwnerRecoveredMessage)(nil),         // 29: channeldpb.ChannelOwnerRecoveredMessage
	(*SpatialInfo)(nil),                          // 30: channeldpb.SpatialInfo
	(*CreateSpatialChannelsResultMessage)(nil),   // 31: channeldpb.CreateSpatialChannelsResultMessage
	(*QuerySpatialChannelMessage)(nil),           // 32: channeldpb.QuerySpatialChannelMessage
	(*QuerySpatialChannelResultMessage)(nil),     // 33: channeldpb.QuerySpatialChannelResultMessage
	(*SpatialChannelsReadyMessage)(nil),          // 34: channeldpb.SpatialChannelsReadyMessage
	(*ChannelDataHandoverMessage)(nil),           // 35: channeldpb.ChannelDataHandoverMessage
	(*SpatialRegion)(nil),                        // 36: channeldpb.SpatialRegion
	(*SpatialRegionsUpdateMessage)(nil),          // 37: channeldpb.SpatialRegionsUpdateMessage
	(*SpatialInterestQuery)(nil),                 // 38: channeldpb.SpatialInterestQuery
	(*UpdateSpatialInterestMessage)(nil),         // 39: channeldpb.UpdateSpatialInterestMessage
	(*CreateEntityChannelMessage)(nil),           // 40: channeldpb.CreateEntityChannelMessage
	(*AddEntityGroupMessage)(nil),                // 41: channeldpb.AddEntityGroupMessage
	(*RemoveEntityGroupMessage)(nil),             // 42: channeldpb.RemoveEntityGroupMessage
	(*DebugGetSpatialRegionsMessage)(nil),        // 43: channeldpb.DebugGetSpatialRegionsMessage
	(*ListChannelResultMessage_ChannelInfo)(nil), // 44: channeldpb.ListChannelResultMessage.ChannelInfo
	(*SpatialInterestQuery_SpotsAOI)(nil),        // 45: channeldpb.SpatialInterestQuery.SpotsAOI
	(*SpatialInterestQuery_BoxAOI)(nil),          // 46: channeldpb.SpatialInterestQuery.BoxAOI
	(*SpatialInterestQuery_SphereAOI)(nil),       // 47: channeldpb.SpatialInterestQuery.SphereAOI
	(*SpatialInterestQuery_ConeAOI)(nil),         // 48: channeldpb.SpatialInterestQuery.ConeAOI
	(*anypb.Any)(nil),                            // 49: google.protobuf.Any
}
var file_channeld_proto_depIdxs = []int32{
	9,  // 0: channeldpb.Packet.messages:type_name -> channeldpb.MessagePack
	7,  // 1: channeldpb.AuthResultMessage.result:type_name -> channeldpb.AuthResultMessage.AuthResult
	4,  // 2: channeldpb.AuthResultMessage.compressionType:type_name -> channeldpb.CompressionType
	5,  // 3: channeldpb.ChannelSubscriptionOptions.dataAccess:type_name -> channeldpb.ChannelDataAccess
	2,  // 4: channeldpb.CreateChannelMessage.channelType:type_name -> channeldpb.ChannelType
	13, // 5: channeldpb.CreateChannelMessage.subOptions:type_name -> channeldpb.ChannelSubscriptionOptions
	49, // 6: channeldpb.CreateChannelMessage.data:type_name -> google.protobuf.Any
	14, // 7: channeldpb.CreateChannelMessage.mergeOptions:type_name -> channeldpb.ChannelDataMergeOptions
	2,  // 8: channeldpb.CreateChannelResultMessage.channelType:type_name -> channeldpb.ChannelType
	2,  // 9: channeldpb.ListChannelMessage.typeFilter:type_name -> channeldpb.ChannelType
	44, // 10: channeldpb.ListChannelResultMessage.channels:type_name -> channeldpb.ListChannelResultMessage.ChannelInfo
	13, // 11: channeldpb.SubscribedToChannelMessage.subOptions:type_name -> channeldpb.ChannelSubscriptionOptions
	13, // 12: channeldpb.SubscribedToChannelResultMessage.subOptions:type_name -> channeldpb.ChannelSubscriptionOptions
	1,  // 13: channeldpb.SubscribedToChannelResultMessage.connType:type_name -> channeldpb.ConnectionType
	2,  // 14: channeldpb.SubscribedToChannelResultMessage.channelType:type_name -> channeldpb.ChannelType
	1,  // 15: channeldpb.UnsubscribedFromChannelResultMessage.connType:type_name -> channeldpb.ConnectionType
	2,  // 16: channeldpb.UnsubscribedFromChannelResultMessage.channelType:type_name -> channeldpb.ChannelType
	49, // 17: channeldpb.ChannelDataUpdateMessage.data:type_name -> google.protobuf.Any
	2,  // 18: channeldpb.ChannelDataRecoveryMessage.channelType:type_name -> channeldpb.ChannelType
	13, // 19: channeldpb.ChannelDataRecoveryMessage.subOptions:type_name -> channeldpb.ChannelSubscriptionOptions
	49, // 20: channeldpb.ChannelDataRecoveryMessage.channelData:type_name -> google.protobuf.Any
	49, // 21: channeldpb.ChannelDataRecoveryMessage.recoveryData:type_name -> google.protobuf.Any
	30, // 22: channeldpb.QuerySpatialChannelMessage.spatialInfo:type_name -> channeldpb.SpatialInfo
	49, // 23: channeldpb.ChannelDataHandoverMessage.data:type_name -> google.protobuf.Any
	30, // 24: channeldpb.SpatialRegion.min:type_name -> channeldpb.SpatialInfo
	30, // 25: channeldpb.SpatialRegion.max:type_name -> channeldpb.SpatialInfo
	36, // 26: channeldpb.SpatialRegionsUpdateMessage.regions:type_name -> channeldpb.SpatialRegion
	45, // 27: channeldpb.SpatialInterestQuery.spotsAOI:type_name -> channeldpb.SpatialInterestQuery.SpotsAOI
	46, // 28: channeldpb.SpatialInterestQuery.boxAOI:type_name -> channeldpb.SpatialInterestQuery.BoxAOI
	47, // 29: channeldpb.SpatialInterestQuery.sphereAOI:type_name -> channeldpb.SpatialInterestQuery.SphereAOI
	48, // 30: channeldpb.SpatialInterestQuery.coneAOI:type_name -> channeldpb.SpatialInterestQuery.ConeAOI
	38, // 31: channeldpb.UpdateSpatialInterestMessage.query:type_name -> channeldpb.SpatialInterestQuery
	13, // 32: channeldpb.CreateEntityChannelMessage.subOptions:type_name -> channeldpb.ChannelSubscriptionOptions
	49, // 33: channeldpb.CreateEntityChannelMessage.data:type_name -> google.protobuf.Any
	14, // 34: channeldpb.CreateEntityChannelMessage.mergeOptions:type_name -> channeldpb.ChannelDataMergeOptions
	6,  // 35: channeldpb.AddEntityGroupMessage.type:type_name -> channeldpb.EntityGroupType
	6,  // 36: channeldpb.RemoveEntityGroupMessage.type:type_name -> channeldpb.EntityGroupType
	2,  // 37: channeldpb.ListChannelResultMessage.ChannelInfo.channelType:type_name -> channeldpb.ChannelType
	30, // 38: channeldpb.SpatialInterestQuery.SpotsAOI.spots:type_name -> channeldpb.SpatialInfo
	30, // 39: channeldpb.SpatialInterestQuery.BoxAOI.center:type_name -> channeldpb.SpatialInfo
	30, // 40: channeldpb.SpatialInterestQuery.BoxAOI.extent:type_name -> channeldpb.SpatialInfo
	30, // 41: channeldpb.SpatialInterestQuery.SphereAOI.center:type_name -> channeldpb.SpatialInfo
	30, // 42: channeldpb.SpatialInterestQuery.ConeAOI.center:type_name -> channeldpb.SpatialInfo
	30, // 43: channeldpb.SpatialInterestQuery.ConeAOI.direction:type_name -> channeldpb.SpatialInfo
	44, // [44:44] is the sub-list for method output_type
	44, // [44:44] is the sub-list for method input_type
	44, // [44:44] is the sub-list for extension type_name
	44, // [44:44] is the sub-list for extension extendee
	0,  // [0:44] is the sub-list for field type_name
}

func init() { file_channeld_proto_init() }
func file_channeld_proto_init() {
	if File_channeld_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_channeld_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Packet); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessagePack); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServerForwardMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AuthMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AuthResultMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChannelSubscriptionOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChannelDataMergeOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateChannelMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateChannelResultMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveChannelMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListChannelMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListChannelResultMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubscribedToChannelMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubscribedToChannelResultMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UnsubscribedFromChannelMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UnsubscribedFromChannelResultMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChannelDataUpdateMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DisconnectMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChannelDataRecoveryMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EndRecoveryMesssage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChannelOwnerLostMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChannelOwnerRecoveredMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateSpatialChannelsResultMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*QuerySpatialChannelMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*QuerySpatialChannelResultMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialChannelsReadyMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChannelDataHandoverMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialRegion); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialRegionsUpdateMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialInterestQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateSpatialInterestMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateEntityChannelMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddEntityGroupMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveEntityGroupMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DebugGetSpatialRegionsMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListChannelResultMessage_ChannelInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialInterestQuery_SpotsAOI); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialInterestQuery_BoxAOI); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialInterestQuery_SphereAOI); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_channeld_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SpatialInterestQuery_ConeAOI); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_channeld_proto_msgTypes[5].OneofWrappers = []interface{}{}
	file_channeld_proto_msgTypes[18].OneofWrappers = []interface{}{}
	file_channeld_proto_msgTypes[30].OneofWrappers = []interface{}{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_channeld_proto_rawDesc,
			NumEnums:      8,
			NumMessages:   41,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_channeld_proto_goTypes,
		DependencyIndexes: file_channeld_proto_depIdxs,
		EnumInfos:         file_channeld_proto_enumTypes,
		MessageInfos:      file_channeld_proto_msgTypes,
	}.Build()
	File_channeld_proto = out.File
	file_channeld_proto_rawDesc = nil
	file_channeld_proto_goTypes = nil
	file_channeld_proto_depIdxs = nil
}
