From 68430a966b9514826dbd7657d93bebdb4613db95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Thu, 21 Sep 2023 13:46:44 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=85=AC=E4=BC=9A?= =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/imserver/constant.go | 23 ++-- server/imserver/cs/cs_proto.pb.go | 169 +++++++++++++++------------ server/imserver/guildmgr.go | 122 +++++++++++++++---- server/imserver/player.go | 8 +- server/imserver/playermgr.go | 2 +- server/imserver/proto/cs_proto.proto | 2 + 6 files changed, 217 insertions(+), 109 deletions(-) diff --git a/server/imserver/constant.go b/server/imserver/constant.go index 718bb6b2..68372bdb 100644 --- a/server/imserver/constant.go +++ b/server/imserver/constant.go @@ -74,16 +74,17 @@ const ( PendingReqIsJoinGuildStatusDisband = 3 // 等待验证请求状态, 3 公会已解散 // Event Names - EVENT_CREATE = "event_create" - EVENT_APPLY = "event_apply" - EVENT_APPROVE = "event_approve" - EVENT_REJECT = "event_reject" - EVENT_JOIN = "event_join" - EVENT_LEAVE = "event_leave" - EVENT_DISMISS_MEMBER = "event_dismiss_member" - EVENT_SET_MEMBER_LEVEL = "event_set_member_level" - EVENT_DISBAND = "event_disband" - EVENT_SET_NOTICE = "event_set_notice" + EVENT_GUILD_CREATE = "event_guild_create" + EVENT_GUILD_APPLY = "event_guild_apply" + EVENT_GUILD_APPROVE = "event_guild_approve" + EVENT_GUILD_REJECT = "event_guild_reject" + EVENT_GUILD_JOIN = "event_guild_join" + EVENT_GUILD_LEAVE = "event_guild_leave" + EVENT_GUILD_DISMISS_MEMBER = "event_guild_dismiss_member" + EVENT_GUILD_DISBAND = "event_guild_disband" + EVENT_GUILD_SET_MEMBER_LEVEL = "event_guild_set_member_level" + EVENT_GUILD_SET_NAME = "event_guild_set_name" + EVENT_GUILD_SET_NOTICE = "event_guild_set_notice" // Err code ERR_CODE_OK = 0 @@ -125,4 +126,6 @@ const ( ERR_CODE_UPDATE_GUILD_PENDING_REQUEST_DB_FAIL = 12017 ERR_CODE_REQUEST_PARAMS_ERROR = 12018 ERR_CODE_GUILD_SETMEMBERLEVEL_VICE_LEADER_MAX_LIMIT = 12019 + ERR_CODE_GUILD_SETNAME_DUPLICATE_NAMES = 12020 + ERR_CODE_GUILD_SETNAME_API_ERROR = 12021 ) diff --git a/server/imserver/cs/cs_proto.pb.go b/server/imserver/cs/cs_proto.pb.go index 37e18a83..8ed3700c 100644 --- a/server/imserver/cs/cs_proto.pb.go +++ b/server/imserver/cs/cs_proto.pb.go @@ -4577,7 +4577,9 @@ type CMSetName struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + ItemId *int32 `protobuf:"varint,2,opt,name=item_id,json=itemId" json:"item_id,omitempty"` + ItemNum *int32 `protobuf:"varint,3,opt,name=item_num,json=itemNum" json:"item_num,omitempty"` } func (x *CMSetName) Reset() { @@ -4619,6 +4621,20 @@ func (x *CMSetName) GetName() string { return "" } +func (x *CMSetName) GetItemId() int32 { + if x != nil && x.ItemId != nil { + return *x.ItemId + } + return 0 +} + +func (x *CMSetName) GetItemNum() int32 { + if x != nil && x.ItemNum != nil { + return *x.ItemNum + } + return 0 +} + // 回复修改公会名称 type SMSetName struct { state protoimpl.MessageState @@ -5670,81 +5686,84 @@ var file_cs_proto_proto_rawDesc = []byte{ 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x22, 0x1f, 0x0a, 0x09, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, + 0x74, 0x65, 0x6e, 0x74, 0x22, 0x53, 0x0a, 0x09, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, - 0x72, 0x6d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x3f, 0x0a, 0x0b, 0x53, - 0x4d, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, - 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, - 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x0b, - 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, - 0x74, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x54, 0x0a, 0x0d, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4a, - 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, - 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, - 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, - 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x0d, - 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, - 0x9c, 0x03, 0x0a, 0x07, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, - 0x75, 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x75, - 0x74, 0x6f, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x69, - 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, - 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, - 0x74, 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x53, 0x74, 0x61, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x68, 0x69, 0x63, 0x6b, - 0x65, 0x6e, 0x5f, 0x64, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0e, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x44, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, - 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0e, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x8e, - 0x02, 0x0a, 0x0d, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, - 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x68, 0x65, - 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, - 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, - 0x74, 0x61, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x2a, - 0x22, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x65, 0x12, 0x14, 0x0a, - 0x0c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0xd1, 0xa2, - 0xd5, 0xc4, 0x07, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x63, 0x73, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x19, + 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x53, + 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x4d, 0x53, 0x65, + 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, + 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, + 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, + 0x22, 0x27, 0x0a, 0x0b, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, + 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, + 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x54, 0x0a, 0x0d, 0x43, 0x4d, + 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, + 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x41, 0x0a, 0x0d, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x22, 0x9c, 0x03, 0x0a, 0x07, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x61, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, + 0x74, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, + 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, + 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x5f, 0x64, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x44, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x22, 0x8e, 0x02, 0x0a, 0x0d, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, + 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, + 0x74, 0x61, 0x72, 0x2a, 0x22, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, + 0x65, 0x12, 0x14, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x10, 0xd1, 0xa2, 0xd5, 0xc4, 0x07, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x63, 0x73, } var ( diff --git a/server/imserver/guildmgr.go b/server/imserver/guildmgr.go index ce724968..734b39a7 100644 --- a/server/imserver/guildmgr.go +++ b/server/imserver/guildmgr.go @@ -2,9 +2,11 @@ package main import ( "cs" + "encoding/json" "f5" "fmt" "math/rand" + "mt" "q5" "time" ) @@ -127,7 +129,7 @@ func (gm *GuildMgr) CreateGuild(avatar int32, name *string, leaderId string, GAME_ID, leaderId, "127.0.0.1", - EVENT_CREATE, + EVENT_GUILD_CREATE, prop, ) cb(ERR_CODE_OK, "Create OK", guild) @@ -211,7 +213,7 @@ func (gm *GuildMgr) ApplyToGuild(guildId int64, applicantAccountId string, cb fu GAME_ID, applicantAccountId, "127.0.0.1", - EVENT_APPLY, + EVENT_GUILD_APPLY, prop, ) cb(ERR_CODE_OK, "ApplyToGuild ok", guild) @@ -284,7 +286,7 @@ func (gm *GuildMgr) Approve(operatorAccountId, accountId string, cb func(errCode GAME_ID, operatorAccountId, "127.0.0.1", - EVENT_APPROVE, + EVENT_GUILD_APPROVE, prop, ) @@ -341,7 +343,7 @@ func (gm *GuildMgr) Reject(operatorAccountId, accountId string, cb func(errCode GAME_ID, operatorAccountId, "127.0.0.1", - EVENT_REJECT, + EVENT_GUILD_REJECT, prop, ) @@ -375,7 +377,7 @@ func (gm *GuildMgr) JoinGuild(guild *Guild, accountId string, cb func(errCode in GAME_ID, accountId, "127.0.0.1", - EVENT_JOIN, + EVENT_GUILD_JOIN, prop, ) }) @@ -454,7 +456,7 @@ func (gm *GuildMgr) LeaveGuild(accountId string, cb func(errCode int32, errMsg s GAME_ID, accountId, "127.0.0.1", - EVENT_LEAVE, + EVENT_GUILD_LEAVE, prop, ) cb(ERR_CODE_OK, "LeaveGuild OK", guild) @@ -515,7 +517,7 @@ func (gm *GuildMgr) DismissMember(operatorAccountId, accountId string, cb func(e GAME_ID, operatorAccountId, "127.0.0.1", - EVENT_DISMISS_MEMBER, + EVENT_GUILD_DISMISS_MEMBER, prop, ) @@ -588,7 +590,7 @@ func (gm *GuildMgr) SetMemberLevel(operatorAccountId, accountId string, newLevel GAME_ID, operatorAccountId, "127.0.0.1", - EVENT_SET_MEMBER_LEVEL, + EVENT_GUILD_SET_MEMBER_LEVEL, prop, ) @@ -725,7 +727,7 @@ func (gm *GuildMgr) Disband(operatorAccountId string, cb func(errCode int32, err GAME_ID, operatorAccountId, "127.0.0.1", - EVENT_DISBAND, + EVENT_GUILD_DISBAND, prop, ) @@ -763,31 +765,91 @@ func (gm *GuildMgr) SetAvatar(operatorAccountId string, avatar int32, cb func(er } guild.Avatar = avatar - cb(ERR_CODE_OK, "SetNotice OK") + cb(ERR_CODE_OK, "SetAvatar OK") }) } -func (gm *GuildMgr) SetName(operatorAccountId string, name *string, cb func(errCode int32, errMsg string)) { - guild, ok := gm.CheckGuildAndPermission(operatorAccountId) - if !ok || name == nil || guild.Name == *name { +func (gm *GuildMgr) SetName(player *Player, name *string, itemId, itemNum int32, cb func(errCode int32, errMsg string)) { + guild, ok := gm.CheckGuildAndPermission(player.GetAccountId()) + if !ok || name == nil { cb(ERR_CODE_REQUEST_PARAMS_ERROR, "params is null") return } - - updateFields := [][]string{ - {"name", *name}, - } - gm.updateGuild(guild, updateFields, func(err error) { - if err != nil { - cb(ERR_CODE_UPDATE_GUILD_DB_FAIL, err.Error()) + for _, g := range gm.guilds { + if g.Name == *name { + cb(ERR_CODE_GUILD_SETNAME_DUPLICATE_NAMES, "Duplicate guild names") return } - guild.Name = *name + } - cb(ERR_CODE_OK, "SetNotice OK") + // 扣消耗 + gm.SetNameConsume(player, itemId, itemNum, func(errCode int32, errMsg string) { + if errCode != 0 { + cb(errCode, errMsg) + return + } + updateFields := [][]string{ + {"name", *name}, + } + + gm.updateGuild(guild, updateFields, func(err error) { + if err != nil { + cb(ERR_CODE_UPDATE_GUILD_DB_FAIL, err.Error()) + return + } + + // Add event + prop := map[string]string{ + "guild_id": q5.ToString(guild.GuildId), + "accountId": q5.ToString(player.GetAccountId()), + "before_guild_name": guild.Name, + "after_guild_name": *name, + } + f5.GetTgLog().AddTrackLog( + GAME_ID, + player.GetAccountId(), + "127.0.0.1", + EVENT_GUILD_SET_NAME, + prop, + ) + + guild.Name = *name + cb(ERR_CODE_OK, "SetName OK") + }) }) } +func (gm *GuildMgr) SetNameConsume(player *Player, itemId, itemNum int32, cb func(errCode int32, errMsg string)) { + params := map[string]string{ + "c": "Bag", + "a": "useItem", + "account_id": player.GetAccountId(), + "session_id": player.GetSessionId(), + "item_id": q5.ToString(itemId), + "item_num": q5.ToString(itemNum), + } + url := fmt.Sprintf("%s/webapp/index.php", mt.Table.Config.GetById(0).GetGameapiUrl()) + + f5.GetSysLog().Info("SetNameConsume url:%s, params:%+v\n", url, params) + + f5.GetHttpCliMgr().SendJsStyleRequest( + url, + params, + func(rsp f5.HttpCliResponse) { + resObj := struct { + ErrCode int32 `json:"errcode"` + ErrMsg string `json:"errmsg"` + }{} + err := json.Unmarshal([]byte(rsp.GetRawData()), &resObj) + if err != nil { + cb(ERR_CODE_GUILD_SETNAME_API_ERROR, "SetNameConsume Api服务器JSON解析错误") + f5.GetSysLog().Info("SetNameConsume Api服务器JSON解析错误:%s\n", err) + return + } + cb(resObj.ErrCode, resObj.ErrMsg) + }) +} + // SetNotice 设置公告 func (gm *GuildMgr) SetNotice(operatorAccountId string, notice *string, cb func(errCode int32, errMsg string)) { guild, ok := gm.CheckGuildAndPermission(operatorAccountId) @@ -804,6 +866,22 @@ func (gm *GuildMgr) SetNotice(operatorAccountId string, notice *string, cb func( cb(ERR_CODE_UPDATE_GUILD_DB_FAIL, err.Error()) return } + + // Add event + prop := map[string]string{ + "guild_id": q5.ToString(guild.GuildId), + "accountId": q5.ToString(operatorAccountId), + "before_notice": guild.Notice, + "after_notice": *notice, + } + f5.GetTgLog().AddTrackLog( + GAME_ID, + operatorAccountId, + "127.0.0.1", + EVENT_GUILD_SET_NOTICE, + prop, + ) + guild.Notice = *notice cb(ERR_CODE_OK, "SetNotice OK") }) diff --git a/server/imserver/player.go b/server/imserver/player.go index e5c412f1..1dc3ba97 100644 --- a/server/imserver/player.go +++ b/server/imserver/player.go @@ -23,6 +23,10 @@ func (p *Player) GetAccountId() string { return p.accountId } +func (p *Player) GetSessionId() string { + return p.sessionId +} + // CMSearchUser 搜索用户 func (p *Player) CMSearchUser(hdr *f5.MsgHdr, msg *cs.CMSearchUser) { sinceId := msg.GetSinceId() @@ -577,8 +581,10 @@ func (p *Player) CMSetAvatar(hdr *f5.MsgHdr, msg *cs.CMSetAvatar) { // CMSetName 设置公会名称 func (p *Player) CMSetName(hdr *f5.MsgHdr, msg *cs.CMSetName) { guildMgr.SetName( - p.accountId, + p, msg.Name, + msg.GetItemId(), + msg.GetItemNum(), func(errCode int32, errMsg string) { rspMsg := new(cs.SMSetName) if errCode != 0 { diff --git a/server/imserver/playermgr.go b/server/imserver/playermgr.go index 785473f6..7d664029 100644 --- a/server/imserver/playermgr.go +++ b/server/imserver/playermgr.go @@ -116,7 +116,7 @@ func (this *PlayerMgr) CMLoginResult(hdr *f5.MsgHdr, msg *cs.CMLogin, rsp f5.Htt player := Player{ socket: hdr.GetSocket(), accountId: accountId, - sessionId: accountId, + sessionId: msg.GetSessionId(), } // Add to online user this.addPlayer(&player) diff --git a/server/imserver/proto/cs_proto.proto b/server/imserver/proto/cs_proto.proto index ccbfda01..47a09028 100644 --- a/server/imserver/proto/cs_proto.proto +++ b/server/imserver/proto/cs_proto.proto @@ -598,6 +598,8 @@ message MFGuildLog { message CMSetName { optional string name = 1; + optional int32 item_id = 2; + optional int32 item_num = 3; } // 回复修改公会名称 From 095deb582b3bb6409f1b912cf8cb641bd3fc77ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Thu, 21 Sep 2023 14:51:40 +0800 Subject: [PATCH 2/8] reconnection --- server/imserver/constant.go | 4 ++++ server/imserver/handlermgr.go | 1 + server/imserver/player.go | 16 ++++++++++++---- server/imserver/playermgr.go | 20 ++++++++++++++++++++ 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/server/imserver/constant.go b/server/imserver/constant.go index 68372bdb..6db03a23 100644 --- a/server/imserver/constant.go +++ b/server/imserver/constant.go @@ -89,6 +89,10 @@ const ( // Err code ERR_CODE_OK = 0 + // Login and Reconnect + ERR_CODE_RECONNECT_PLAYER_NO_EXISTS = 10001 + ERR_CODE_RECONNECT_PLAYER_SESSION_ID_NO_VALID = 10002 + // Friemds ERR_CODE_USERS_NO_EXISTS = 11001 ERR_CODE_FRIENDSHIP_IS_FULL = 11002 diff --git a/server/imserver/handlermgr.go b/server/imserver/handlermgr.go index e401c77b..2d5fccb3 100644 --- a/server/imserver/handlermgr.go +++ b/server/imserver/handlermgr.go @@ -14,6 +14,7 @@ func (this *HandlerMgr) init() { cs.RegHandlerId(int(cs.CMMessageIdE__CMPing), PLAYER_MGR_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMLogin), PLAYER_MGR_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMReconnect), PLAYER_MGR_HANDLER_ID) // 好友 cs.RegHandlerId(int(cs.CMMessageIdE__CMSearchUser), PLAYER_HANDLER_ID) diff --git a/server/imserver/player.go b/server/imserver/player.go index 1dc3ba97..bf593b5d 100644 --- a/server/imserver/player.go +++ b/server/imserver/player.go @@ -27,6 +27,18 @@ func (p *Player) GetSessionId() string { return p.sessionId } +func (p *Player) SendMsg(rspMsg proto.Message) { + wspListener.sendProxyMsg(p.socket.Conn, p.socket.SocketHandle, rspMsg) +} + +func (p *Player) ReBind(socket f5.WspCliConn) { + if p.socket.IsValid() { + delete(playerMgr.socketHash, p.socket) + } + p.socket = socket + playerMgr.socketHash[p.socket] = p +} + // CMSearchUser 搜索用户 func (p *Player) CMSearchUser(hdr *f5.MsgHdr, msg *cs.CMSearchUser) { sinceId := msg.GetSinceId() @@ -279,10 +291,6 @@ func (p *Player) MarkNewMsg() { p.SendMsg(rspMsg) } -func (p *Player) SendMsg(rspMsg proto.Message) { - wspListener.sendProxyMsg(p.socket.Conn, p.socket.SocketHandle, rspMsg) -} - func IsValidChatChannel(chatChannel int32) bool { return chatChannel > kCCBegin && chatChannel < kCCEnd } diff --git a/server/imserver/playermgr.go b/server/imserver/playermgr.go index 7d664029..af9cb12b 100644 --- a/server/imserver/playermgr.go +++ b/server/imserver/playermgr.go @@ -5,6 +5,7 @@ import ( "encoding/json" "f5" "fmt" + "github.com/golang/protobuf/proto" "mt" "q5" ) @@ -198,3 +199,22 @@ func (this *PlayerMgr) GetOnlineStatus(accountId string) int32 { } return OnlineStatusOff } + +func (this *PlayerMgr) CMReconnect(hdr *f5.MsgHdr, msg *cs.CMReconnect) { + hum := this.GetPlayerByAccountId(msg.GetAccountId()) + rspMsg := &cs.SMReconnect{} + if hum == nil { + rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_NO_EXISTS) + rspMsg.Errmsg = proto.String("player no exists") + wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) + return + } + if hum.GetSessionId() != msg.GetSessionId() { + rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_SESSION_ID_NO_VALID) + rspMsg.Errmsg = proto.String("session id no valid") + wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) + return + } + hum.ReBind(hdr.GetSocket()) + wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) +} From f924d4e8809face7672f85824421a5d195f2f5b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Thu, 21 Sep 2023 17:09:52 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E8=81=8A=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/imserver/chatmgr.go | 12 +- server/imserver/cs/cs_proto.pb.go | 1132 +++++++++++++++----------- server/imserver/guild.go | 24 +- server/imserver/handlermgr.go | 6 + server/imserver/mt/IMCluster.go | 13 +- server/imserver/player.go | 45 +- server/imserver/playermgr.go | 10 +- server/imserver/proto/cs_proto.proto | 19 +- 8 files changed, 746 insertions(+), 515 deletions(-) diff --git a/server/imserver/chatmgr.go b/server/imserver/chatmgr.go index adf97930..82bb498b 100644 --- a/server/imserver/chatmgr.go +++ b/server/imserver/chatmgr.go @@ -39,11 +39,11 @@ func NewChatMgr(pm *PlayerMgr, fm *FriendsMgr, gm *GuildMgr) *ChatMgr { func (cm *ChatMgr) init() {} -func (cm *ChatMgr) FillMFChatMsg(msg *cs.MFChatMsg, accountId *string, +func (cm *ChatMgr) FillMFChatMsg(msg *cs.MFChatMsg, sender *Player, msgAutoId uint64, chatChannel int32, msgType int32, msgBody *string) { msg.MsgUuid = &msgAutoId - msg.Sender = accountId + msg.Sender = sender.FillMFChatUser() msg.ChatChannel = &chatChannel msg.MsgType = &msgType msg.MsgBody = msgBody @@ -91,10 +91,9 @@ func (cm *ChatMgr) FillSMUpdatePrivateChatRedPointNotify(p *Player, msg *cs.SMUp } func (cm *ChatMgr) ProcWorldChat(p *Player, msg *cs.CMSendChatMsg) { - accountId := p.GetAccountId() chatMsg := new(cs.MFChatMsg) cm.worldMsgId++ - cm.FillMFChatMsg(chatMsg, &accountId, cm.worldMsgId, *msg.ChatChannel, *msg.MsgType, msg.MsgBody) + cm.FillMFChatMsg(chatMsg, p, cm.worldMsgId, *msg.ChatChannel, *msg.MsgType, msg.MsgBody) cm.worldMsgRec.CurrID = cm.worldMsgId cm.worldMsgRec.AddChatMsg(chatMsg) @@ -114,7 +113,7 @@ func (cm *ChatMgr) ProcGuildChat(p *Player, msg *cs.CMSendChatMsg) { cm.guildMsgId++ chatMsg := new(cs.MFChatMsg) - cm.FillMFChatMsg(chatMsg, &p.accountId, cm.guildMsgId, *msg.ChatChannel, *msg.MsgType, msg.MsgBody) + cm.FillMFChatMsg(chatMsg, p, cm.guildMsgId, *msg.ChatChannel, *msg.MsgType, msg.MsgBody) if msgRec, exists := cm.guildMsgRec[guildId]; exists { msgRec.AddChatMsg(chatMsg) @@ -138,6 +137,7 @@ func (cm *ChatMgr) ProcPrivateChat(p *Player, msg *cs.CMSendChatMsg) { if p.accountId == targetAccountId { return } + // 确定是否好友 targetAccount := cm.fm.GetFriendByAccountId(p.accountId, targetAccountId) if targetAccount == nil { @@ -145,7 +145,7 @@ func (cm *ChatMgr) ProcPrivateChat(p *Player, msg *cs.CMSendChatMsg) { } chatMsg := new(cs.MFChatMsg) - cm.FillMFChatMsg(chatMsg, &p.accountId, 0, *msg.ChatChannel, *msg.MsgType, msg.MsgBody) + cm.FillMFChatMsg(chatMsg, p, 0, *msg.ChatChannel, *msg.MsgType, msg.MsgBody) cm.AddChatUser(p.accountId, msg.GetTargetAccountId(), chatMsg, p.IncrPrivateChatLastId()) cm.SyncPrivateChatMsg(p) diff --git a/server/imserver/cs/cs_proto.pb.go b/server/imserver/cs/cs_proto.pb.go index 8ed3700c..6dac69d4 100644 --- a/server/imserver/cs/cs_proto.pb.go +++ b/server/imserver/cs/cs_proto.pb.go @@ -2560,13 +2560,13 @@ type MFChatMsg struct { // 消息唯一id,递增序列,客户端可以用chat_channel + msg_uuid作为主键 // !!!不同的频道msg_uuid可能重复 - MsgUuid *uint64 `protobuf:"varint,1,opt,name=msg_uuid,json=msgUuid" json:"msg_uuid,omitempty"` - Sender *string `protobuf:"bytes,2,opt,name=sender" json:"sender,omitempty"` //发送者 - Receiver *string `protobuf:"bytes,3,opt,name=receiver" json:"receiver,omitempty"` //接收者 - ChatChannel *int32 `protobuf:"varint,4,opt,name=chat_channel,json=chatChannel" json:"chat_channel,omitempty"` //聊天频道 - MsgType *int32 `protobuf:"varint,5,opt,name=msg_type,json=msgType" json:"msg_type,omitempty"` //消息类型 0:文本消息(json) 1:自定义协议 (json) 2:纯文本(但是任会做屏蔽字替换) - MsgBody *string `protobuf:"bytes,6,opt,name=msg_body,json=msgBody" json:"msg_body,omitempty"` //消息内容(json类型里的字段!开头的会做屏蔽替换) - SendTime *int64 `protobuf:"varint,7,opt,name=send_time,json=sendTime" json:"send_time,omitempty"` //消息发送时间 + MsgUuid *uint64 `protobuf:"varint,1,opt,name=msg_uuid,json=msgUuid" json:"msg_uuid,omitempty"` + Sender *MFChatUser `protobuf:"bytes,2,opt,name=sender" json:"sender,omitempty"` //发送者 + Receiver *MFChatUser `protobuf:"bytes,3,opt,name=receiver" json:"receiver,omitempty"` //接收者 + ChatChannel *int32 `protobuf:"varint,4,opt,name=chat_channel,json=chatChannel" json:"chat_channel,omitempty"` //聊天频道 + MsgType *int32 `protobuf:"varint,5,opt,name=msg_type,json=msgType" json:"msg_type,omitempty"` //消息类型 0:文本消息(json) 1:自定义协议 (json) 2:纯文本(但是任会做屏蔽字替换) + MsgBody *string `protobuf:"bytes,6,opt,name=msg_body,json=msgBody" json:"msg_body,omitempty"` //消息内容(json类型里的字段!开头的会做屏蔽替换) + SendTime *int64 `protobuf:"varint,7,opt,name=send_time,json=sendTime" json:"send_time,omitempty"` //消息发送时间 } func (x *MFChatMsg) Reset() { @@ -2608,18 +2608,18 @@ func (x *MFChatMsg) GetMsgUuid() uint64 { return 0 } -func (x *MFChatMsg) GetSender() string { - if x != nil && x.Sender != nil { - return *x.Sender +func (x *MFChatMsg) GetSender() *MFChatUser { + if x != nil { + return x.Sender } - return "" + return nil } -func (x *MFChatMsg) GetReceiver() string { - if x != nil && x.Receiver != nil { - return *x.Receiver +func (x *MFChatMsg) GetReceiver() *MFChatUser { + if x != nil { + return x.Receiver } - return "" + return nil } func (x *MFChatMsg) GetChatChannel() int32 { @@ -2650,6 +2650,126 @@ func (x *MFChatMsg) GetSendTime() int64 { return 0 } +// 聊天用户 +type MFChatUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccountId *string `protobuf:"bytes,1,opt,name=account_id,json=accountId" json:"account_id,omitempty"` + Username *string `protobuf:"bytes,2,opt,name=username" json:"username,omitempty"` + Avatar *int32 `protobuf:"varint,3,opt,name=avatar" json:"avatar,omitempty"` + AvatarHead *int32 `protobuf:"varint,4,opt,name=avatar_head,json=avatarHead" json:"avatar_head,omitempty"` + GuildId *int64 `protobuf:"varint,5,opt,name=guild_id,json=guildId" json:"guild_id,omitempty"` + GuildName *string `protobuf:"bytes,6,opt,name=guild_name,json=guildName" json:"guild_name,omitempty"` + GuildLevel *int32 `protobuf:"varint,7,opt,name=guild_level,json=guildLevel" json:"guild_level,omitempty"` + OnlineStatus *int32 `protobuf:"varint,8,opt,name=online_status,json=onlineStatus" json:"online_status,omitempty"` + LastLoginTime *int32 `protobuf:"varint,9,opt,name=last_login_time,json=lastLoginTime" json:"last_login_time,omitempty"` + IsSysUser *int32 `protobuf:"varint,10,opt,name=is_sys_user,json=isSysUser" json:"is_sys_user,omitempty"` //是否系统用户(主要在聊天时判断) +} + +func (x *MFChatUser) Reset() { + *x = MFChatUser{} + if protoimpl.UnsafeEnabled { + mi := &file_cs_proto_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MFChatUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MFChatUser) ProtoMessage() {} + +func (x *MFChatUser) ProtoReflect() protoreflect.Message { + mi := &file_cs_proto_proto_msgTypes[44] + 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 MFChatUser.ProtoReflect.Descriptor instead. +func (*MFChatUser) Descriptor() ([]byte, []int) { + return file_cs_proto_proto_rawDescGZIP(), []int{44} +} + +func (x *MFChatUser) GetAccountId() string { + if x != nil && x.AccountId != nil { + return *x.AccountId + } + return "" +} + +func (x *MFChatUser) GetUsername() string { + if x != nil && x.Username != nil { + return *x.Username + } + return "" +} + +func (x *MFChatUser) GetAvatar() int32 { + if x != nil && x.Avatar != nil { + return *x.Avatar + } + return 0 +} + +func (x *MFChatUser) GetAvatarHead() int32 { + if x != nil && x.AvatarHead != nil { + return *x.AvatarHead + } + return 0 +} + +func (x *MFChatUser) GetGuildId() int64 { + if x != nil && x.GuildId != nil { + return *x.GuildId + } + return 0 +} + +func (x *MFChatUser) GetGuildName() string { + if x != nil && x.GuildName != nil { + return *x.GuildName + } + return "" +} + +func (x *MFChatUser) GetGuildLevel() int32 { + if x != nil && x.GuildLevel != nil { + return *x.GuildLevel + } + return 0 +} + +func (x *MFChatUser) GetOnlineStatus() int32 { + if x != nil && x.OnlineStatus != nil { + return *x.OnlineStatus + } + return 0 +} + +func (x *MFChatUser) GetLastLoginTime() int32 { + if x != nil && x.LastLoginTime != nil { + return *x.LastLoginTime + } + return 0 +} + +func (x *MFChatUser) GetIsSysUser() int32 { + if x != nil && x.IsSysUser != nil { + return *x.IsSysUser + } + return 0 +} + // --- 公会 --- // 请求我的公会信息 type CMGuildInfo struct { @@ -2661,7 +2781,7 @@ type CMGuildInfo struct { func (x *CMGuildInfo) Reset() { *x = CMGuildInfo{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[44] + mi := &file_cs_proto_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2674,7 +2794,7 @@ func (x *CMGuildInfo) String() string { func (*CMGuildInfo) ProtoMessage() {} func (x *CMGuildInfo) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[44] + mi := &file_cs_proto_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2687,7 +2807,7 @@ func (x *CMGuildInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CMGuildInfo.ProtoReflect.Descriptor instead. func (*CMGuildInfo) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{44} + return file_cs_proto_proto_rawDescGZIP(), []int{45} } // 回复我的公会信息 @@ -2704,7 +2824,7 @@ type SMGuildInfo struct { func (x *SMGuildInfo) Reset() { *x = SMGuildInfo{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[45] + mi := &file_cs_proto_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2717,7 +2837,7 @@ func (x *SMGuildInfo) String() string { func (*SMGuildInfo) ProtoMessage() {} func (x *SMGuildInfo) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[45] + mi := &file_cs_proto_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2730,7 +2850,7 @@ func (x *SMGuildInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SMGuildInfo.ProtoReflect.Descriptor instead. func (*SMGuildInfo) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{45} + return file_cs_proto_proto_rawDescGZIP(), []int{46} } func (x *SMGuildInfo) GetErrcode() int32 { @@ -2764,7 +2884,7 @@ type CMRecommendGuildList struct { func (x *CMRecommendGuildList) Reset() { *x = CMRecommendGuildList{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[46] + mi := &file_cs_proto_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2777,7 +2897,7 @@ func (x *CMRecommendGuildList) String() string { func (*CMRecommendGuildList) ProtoMessage() {} func (x *CMRecommendGuildList) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[46] + mi := &file_cs_proto_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2790,7 +2910,7 @@ func (x *CMRecommendGuildList) ProtoReflect() protoreflect.Message { // Deprecated: Use CMRecommendGuildList.ProtoReflect.Descriptor instead. func (*CMRecommendGuildList) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{46} + return file_cs_proto_proto_rawDescGZIP(), []int{47} } // 回复推荐公会列表 @@ -2807,7 +2927,7 @@ type SMRecommendGuildList struct { func (x *SMRecommendGuildList) Reset() { *x = SMRecommendGuildList{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[47] + mi := &file_cs_proto_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2820,7 +2940,7 @@ func (x *SMRecommendGuildList) String() string { func (*SMRecommendGuildList) ProtoMessage() {} func (x *SMRecommendGuildList) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[47] + mi := &file_cs_proto_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2833,7 +2953,7 @@ func (x *SMRecommendGuildList) ProtoReflect() protoreflect.Message { // Deprecated: Use SMRecommendGuildList.ProtoReflect.Descriptor instead. func (*SMRecommendGuildList) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{47} + return file_cs_proto_proto_rawDescGZIP(), []int{48} } func (x *SMRecommendGuildList) GetErrcode() int32 { @@ -2870,7 +2990,7 @@ type CMCreateGuild struct { func (x *CMCreateGuild) Reset() { *x = CMCreateGuild{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[48] + mi := &file_cs_proto_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2883,7 +3003,7 @@ func (x *CMCreateGuild) String() string { func (*CMCreateGuild) ProtoMessage() {} func (x *CMCreateGuild) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[48] + mi := &file_cs_proto_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2896,7 +3016,7 @@ func (x *CMCreateGuild) ProtoReflect() protoreflect.Message { // Deprecated: Use CMCreateGuild.ProtoReflect.Descriptor instead. func (*CMCreateGuild) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{48} + return file_cs_proto_proto_rawDescGZIP(), []int{49} } func (x *CMCreateGuild) GetAvatar() int32 { @@ -2927,7 +3047,7 @@ type SMCreateGuild struct { func (x *SMCreateGuild) Reset() { *x = SMCreateGuild{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[49] + mi := &file_cs_proto_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2940,7 +3060,7 @@ func (x *SMCreateGuild) String() string { func (*SMCreateGuild) ProtoMessage() {} func (x *SMCreateGuild) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[49] + mi := &file_cs_proto_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2953,7 +3073,7 @@ func (x *SMCreateGuild) ProtoReflect() protoreflect.Message { // Deprecated: Use SMCreateGuild.ProtoReflect.Descriptor instead. func (*SMCreateGuild) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{49} + return file_cs_proto_proto_rawDescGZIP(), []int{50} } func (x *SMCreateGuild) GetErrcode() int32 { @@ -2989,7 +3109,7 @@ type CMApplyToGuild struct { func (x *CMApplyToGuild) Reset() { *x = CMApplyToGuild{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[50] + mi := &file_cs_proto_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3002,7 +3122,7 @@ func (x *CMApplyToGuild) String() string { func (*CMApplyToGuild) ProtoMessage() {} func (x *CMApplyToGuild) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[50] + mi := &file_cs_proto_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3015,7 +3135,7 @@ func (x *CMApplyToGuild) ProtoReflect() protoreflect.Message { // Deprecated: Use CMApplyToGuild.ProtoReflect.Descriptor instead. func (*CMApplyToGuild) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{50} + return file_cs_proto_proto_rawDescGZIP(), []int{51} } func (x *CMApplyToGuild) GetGuildId() int64 { @@ -3038,7 +3158,7 @@ type SMApplyToGuild struct { func (x *SMApplyToGuild) Reset() { *x = SMApplyToGuild{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[51] + mi := &file_cs_proto_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3051,7 +3171,7 @@ func (x *SMApplyToGuild) String() string { func (*SMApplyToGuild) ProtoMessage() {} func (x *SMApplyToGuild) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[51] + mi := &file_cs_proto_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3064,7 +3184,7 @@ func (x *SMApplyToGuild) ProtoReflect() protoreflect.Message { // Deprecated: Use SMApplyToGuild.ProtoReflect.Descriptor instead. func (*SMApplyToGuild) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{51} + return file_cs_proto_proto_rawDescGZIP(), []int{52} } func (x *SMApplyToGuild) GetErrcode() int32 { @@ -3096,7 +3216,7 @@ type SMApplyToGuildNotify struct { func (x *SMApplyToGuildNotify) Reset() { *x = SMApplyToGuildNotify{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[52] + mi := &file_cs_proto_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3109,7 +3229,7 @@ func (x *SMApplyToGuildNotify) String() string { func (*SMApplyToGuildNotify) ProtoMessage() {} func (x *SMApplyToGuildNotify) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[52] + mi := &file_cs_proto_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3122,7 +3242,7 @@ func (x *SMApplyToGuildNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use SMApplyToGuildNotify.ProtoReflect.Descriptor instead. func (*SMApplyToGuildNotify) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{52} + return file_cs_proto_proto_rawDescGZIP(), []int{53} } func (x *SMApplyToGuildNotify) GetGuildId() int64 { @@ -3163,7 +3283,7 @@ type CMApplyList struct { func (x *CMApplyList) Reset() { *x = CMApplyList{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[53] + mi := &file_cs_proto_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3176,7 +3296,7 @@ func (x *CMApplyList) String() string { func (*CMApplyList) ProtoMessage() {} func (x *CMApplyList) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[53] + mi := &file_cs_proto_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3189,7 +3309,7 @@ func (x *CMApplyList) ProtoReflect() protoreflect.Message { // Deprecated: Use CMApplyList.ProtoReflect.Descriptor instead. func (*CMApplyList) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{53} + return file_cs_proto_proto_rawDescGZIP(), []int{54} } // 回复申请者列表 @@ -3206,7 +3326,7 @@ type SMApplyList struct { func (x *SMApplyList) Reset() { *x = SMApplyList{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[54] + mi := &file_cs_proto_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3219,7 +3339,7 @@ func (x *SMApplyList) String() string { func (*SMApplyList) ProtoMessage() {} func (x *SMApplyList) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[54] + mi := &file_cs_proto_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3232,7 +3352,7 @@ func (x *SMApplyList) ProtoReflect() protoreflect.Message { // Deprecated: Use SMApplyList.ProtoReflect.Descriptor instead. func (*SMApplyList) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{54} + return file_cs_proto_proto_rawDescGZIP(), []int{55} } func (x *SMApplyList) GetErrcode() int32 { @@ -3268,7 +3388,7 @@ type CMApprove struct { func (x *CMApprove) Reset() { *x = CMApprove{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[55] + mi := &file_cs_proto_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3281,7 +3401,7 @@ func (x *CMApprove) String() string { func (*CMApprove) ProtoMessage() {} func (x *CMApprove) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[55] + mi := &file_cs_proto_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3294,7 +3414,7 @@ func (x *CMApprove) ProtoReflect() protoreflect.Message { // Deprecated: Use CMApprove.ProtoReflect.Descriptor instead. func (*CMApprove) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{55} + return file_cs_proto_proto_rawDescGZIP(), []int{56} } func (x *CMApprove) GetApplicantAccountId() string { @@ -3317,7 +3437,7 @@ type SMApprove struct { func (x *SMApprove) Reset() { *x = SMApprove{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[56] + mi := &file_cs_proto_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3330,7 +3450,7 @@ func (x *SMApprove) String() string { func (*SMApprove) ProtoMessage() {} func (x *SMApprove) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[56] + mi := &file_cs_proto_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3343,7 +3463,7 @@ func (x *SMApprove) ProtoReflect() protoreflect.Message { // Deprecated: Use SMApprove.ProtoReflect.Descriptor instead. func (*SMApprove) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{56} + return file_cs_proto_proto_rawDescGZIP(), []int{57} } func (x *SMApprove) GetErrcode() int32 { @@ -3375,7 +3495,7 @@ type SMApproveJoinGuildNotify struct { func (x *SMApproveJoinGuildNotify) Reset() { *x = SMApproveJoinGuildNotify{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[57] + mi := &file_cs_proto_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3388,7 +3508,7 @@ func (x *SMApproveJoinGuildNotify) String() string { func (*SMApproveJoinGuildNotify) ProtoMessage() {} func (x *SMApproveJoinGuildNotify) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[57] + mi := &file_cs_proto_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3401,7 +3521,7 @@ func (x *SMApproveJoinGuildNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use SMApproveJoinGuildNotify.ProtoReflect.Descriptor instead. func (*SMApproveJoinGuildNotify) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{57} + return file_cs_proto_proto_rawDescGZIP(), []int{58} } func (x *SMApproveJoinGuildNotify) GetGuildId() int64 { @@ -3444,7 +3564,7 @@ type CMReject struct { func (x *CMReject) Reset() { *x = CMReject{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[58] + mi := &file_cs_proto_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3457,7 +3577,7 @@ func (x *CMReject) String() string { func (*CMReject) ProtoMessage() {} func (x *CMReject) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[58] + mi := &file_cs_proto_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3470,7 +3590,7 @@ func (x *CMReject) ProtoReflect() protoreflect.Message { // Deprecated: Use CMReject.ProtoReflect.Descriptor instead. func (*CMReject) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{58} + return file_cs_proto_proto_rawDescGZIP(), []int{59} } func (x *CMReject) GetApplicantAccountId() string { @@ -3493,7 +3613,7 @@ type SMReject struct { func (x *SMReject) Reset() { *x = SMReject{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[59] + mi := &file_cs_proto_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3506,7 +3626,7 @@ func (x *SMReject) String() string { func (*SMReject) ProtoMessage() {} func (x *SMReject) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[59] + mi := &file_cs_proto_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3519,7 +3639,7 @@ func (x *SMReject) ProtoReflect() protoreflect.Message { // Deprecated: Use SMReject.ProtoReflect.Descriptor instead. func (*SMReject) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{59} + return file_cs_proto_proto_rawDescGZIP(), []int{60} } func (x *SMReject) GetErrcode() int32 { @@ -3546,7 +3666,7 @@ type CMLeaveGuild struct { func (x *CMLeaveGuild) Reset() { *x = CMLeaveGuild{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[60] + mi := &file_cs_proto_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3559,7 +3679,7 @@ func (x *CMLeaveGuild) String() string { func (*CMLeaveGuild) ProtoMessage() {} func (x *CMLeaveGuild) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[60] + mi := &file_cs_proto_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3572,7 +3692,7 @@ func (x *CMLeaveGuild) ProtoReflect() protoreflect.Message { // Deprecated: Use CMLeaveGuild.ProtoReflect.Descriptor instead. func (*CMLeaveGuild) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{60} + return file_cs_proto_proto_rawDescGZIP(), []int{61} } // 回复离开公会 @@ -3588,7 +3708,7 @@ type SMLeaveGuild struct { func (x *SMLeaveGuild) Reset() { *x = SMLeaveGuild{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[61] + mi := &file_cs_proto_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3601,7 +3721,7 @@ func (x *SMLeaveGuild) String() string { func (*SMLeaveGuild) ProtoMessage() {} func (x *SMLeaveGuild) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[61] + mi := &file_cs_proto_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3614,7 +3734,7 @@ func (x *SMLeaveGuild) ProtoReflect() protoreflect.Message { // Deprecated: Use SMLeaveGuild.ProtoReflect.Descriptor instead. func (*SMLeaveGuild) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{61} + return file_cs_proto_proto_rawDescGZIP(), []int{62} } func (x *SMLeaveGuild) GetErrcode() int32 { @@ -3646,7 +3766,7 @@ type SMLeaveGuildNotify struct { func (x *SMLeaveGuildNotify) Reset() { *x = SMLeaveGuildNotify{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[62] + mi := &file_cs_proto_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3659,7 +3779,7 @@ func (x *SMLeaveGuildNotify) String() string { func (*SMLeaveGuildNotify) ProtoMessage() {} func (x *SMLeaveGuildNotify) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[62] + mi := &file_cs_proto_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3672,7 +3792,7 @@ func (x *SMLeaveGuildNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use SMLeaveGuildNotify.ProtoReflect.Descriptor instead. func (*SMLeaveGuildNotify) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{62} + return file_cs_proto_proto_rawDescGZIP(), []int{63} } func (x *SMLeaveGuildNotify) GetGuildId() int64 { @@ -3715,7 +3835,7 @@ type CMDismissMember struct { func (x *CMDismissMember) Reset() { *x = CMDismissMember{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[63] + mi := &file_cs_proto_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3728,7 +3848,7 @@ func (x *CMDismissMember) String() string { func (*CMDismissMember) ProtoMessage() {} func (x *CMDismissMember) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[63] + mi := &file_cs_proto_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3741,7 +3861,7 @@ func (x *CMDismissMember) ProtoReflect() protoreflect.Message { // Deprecated: Use CMDismissMember.ProtoReflect.Descriptor instead. func (*CMDismissMember) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{63} + return file_cs_proto_proto_rawDescGZIP(), []int{64} } func (x *CMDismissMember) GetDismissAccountId() string { @@ -3764,7 +3884,7 @@ type SMDismissMember struct { func (x *SMDismissMember) Reset() { *x = SMDismissMember{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[64] + mi := &file_cs_proto_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3777,7 +3897,7 @@ func (x *SMDismissMember) String() string { func (*SMDismissMember) ProtoMessage() {} func (x *SMDismissMember) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[64] + mi := &file_cs_proto_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3790,7 +3910,7 @@ func (x *SMDismissMember) ProtoReflect() protoreflect.Message { // Deprecated: Use SMDismissMember.ProtoReflect.Descriptor instead. func (*SMDismissMember) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{64} + return file_cs_proto_proto_rawDescGZIP(), []int{65} } func (x *SMDismissMember) GetErrcode() int32 { @@ -3822,7 +3942,7 @@ type SMDismissMemberNotify struct { func (x *SMDismissMemberNotify) Reset() { *x = SMDismissMemberNotify{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[65] + mi := &file_cs_proto_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3835,7 +3955,7 @@ func (x *SMDismissMemberNotify) String() string { func (*SMDismissMemberNotify) ProtoMessage() {} func (x *SMDismissMemberNotify) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[65] + mi := &file_cs_proto_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3848,7 +3968,7 @@ func (x *SMDismissMemberNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use SMDismissMemberNotify.ProtoReflect.Descriptor instead. func (*SMDismissMemberNotify) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{65} + return file_cs_proto_proto_rawDescGZIP(), []int{66} } func (x *SMDismissMemberNotify) GetGuildId() int64 { @@ -3892,7 +4012,7 @@ type CMSetMemberLevel struct { func (x *CMSetMemberLevel) Reset() { *x = CMSetMemberLevel{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[66] + mi := &file_cs_proto_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3905,7 +4025,7 @@ func (x *CMSetMemberLevel) String() string { func (*CMSetMemberLevel) ProtoMessage() {} func (x *CMSetMemberLevel) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[66] + mi := &file_cs_proto_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3918,7 +4038,7 @@ func (x *CMSetMemberLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use CMSetMemberLevel.ProtoReflect.Descriptor instead. func (*CMSetMemberLevel) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{66} + return file_cs_proto_proto_rawDescGZIP(), []int{67} } func (x *CMSetMemberLevel) GetMemberAccountId() string { @@ -3948,7 +4068,7 @@ type SMSetMemberLevel struct { func (x *SMSetMemberLevel) Reset() { *x = SMSetMemberLevel{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[67] + mi := &file_cs_proto_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3961,7 +4081,7 @@ func (x *SMSetMemberLevel) String() string { func (*SMSetMemberLevel) ProtoMessage() {} func (x *SMSetMemberLevel) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[67] + mi := &file_cs_proto_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3974,7 +4094,7 @@ func (x *SMSetMemberLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use SMSetMemberLevel.ProtoReflect.Descriptor instead. func (*SMSetMemberLevel) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{67} + return file_cs_proto_proto_rawDescGZIP(), []int{68} } func (x *SMSetMemberLevel) GetErrcode() int32 { @@ -4007,7 +4127,7 @@ type SMSetMemberLevelNotify struct { func (x *SMSetMemberLevelNotify) Reset() { *x = SMSetMemberLevelNotify{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[68] + mi := &file_cs_proto_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4020,7 +4140,7 @@ func (x *SMSetMemberLevelNotify) String() string { func (*SMSetMemberLevelNotify) ProtoMessage() {} func (x *SMSetMemberLevelNotify) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[68] + mi := &file_cs_proto_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4033,7 +4153,7 @@ func (x *SMSetMemberLevelNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use SMSetMemberLevelNotify.ProtoReflect.Descriptor instead. func (*SMSetMemberLevelNotify) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{68} + return file_cs_proto_proto_rawDescGZIP(), []int{69} } func (x *SMSetMemberLevelNotify) GetGuildId() int64 { @@ -4081,7 +4201,7 @@ type CMGuildMembersList struct { func (x *CMGuildMembersList) Reset() { *x = CMGuildMembersList{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[69] + mi := &file_cs_proto_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4094,7 +4214,7 @@ func (x *CMGuildMembersList) String() string { func (*CMGuildMembersList) ProtoMessage() {} func (x *CMGuildMembersList) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[69] + mi := &file_cs_proto_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4107,7 +4227,7 @@ func (x *CMGuildMembersList) ProtoReflect() protoreflect.Message { // Deprecated: Use CMGuildMembersList.ProtoReflect.Descriptor instead. func (*CMGuildMembersList) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{69} + return file_cs_proto_proto_rawDescGZIP(), []int{70} } // 回复公会成员列表 @@ -4124,7 +4244,7 @@ type SMGuildMembersList struct { func (x *SMGuildMembersList) Reset() { *x = SMGuildMembersList{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[70] + mi := &file_cs_proto_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4137,7 +4257,7 @@ func (x *SMGuildMembersList) String() string { func (*SMGuildMembersList) ProtoMessage() {} func (x *SMGuildMembersList) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[70] + mi := &file_cs_proto_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4150,7 +4270,7 @@ func (x *SMGuildMembersList) ProtoReflect() protoreflect.Message { // Deprecated: Use SMGuildMembersList.ProtoReflect.Descriptor instead. func (*SMGuildMembersList) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{70} + return file_cs_proto_proto_rawDescGZIP(), []int{71} } func (x *SMGuildMembersList) GetErrcode() int32 { @@ -4184,7 +4304,7 @@ type CMDisband struct { func (x *CMDisband) Reset() { *x = CMDisband{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[71] + mi := &file_cs_proto_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4197,7 +4317,7 @@ func (x *CMDisband) String() string { func (*CMDisband) ProtoMessage() {} func (x *CMDisband) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[71] + mi := &file_cs_proto_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4210,7 +4330,7 @@ func (x *CMDisband) ProtoReflect() protoreflect.Message { // Deprecated: Use CMDisband.ProtoReflect.Descriptor instead. func (*CMDisband) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{71} + return file_cs_proto_proto_rawDescGZIP(), []int{72} } // 回复解散公会 @@ -4226,7 +4346,7 @@ type SMDisband struct { func (x *SMDisband) Reset() { *x = SMDisband{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[72] + mi := &file_cs_proto_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4239,7 +4359,7 @@ func (x *SMDisband) String() string { func (*SMDisband) ProtoMessage() {} func (x *SMDisband) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[72] + mi := &file_cs_proto_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4252,7 +4372,7 @@ func (x *SMDisband) ProtoReflect() protoreflect.Message { // Deprecated: Use SMDisband.ProtoReflect.Descriptor instead. func (*SMDisband) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{72} + return file_cs_proto_proto_rawDescGZIP(), []int{73} } func (x *SMDisband) GetErrcode() int32 { @@ -4282,7 +4402,7 @@ type CMSearchGuilds struct { func (x *CMSearchGuilds) Reset() { *x = CMSearchGuilds{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[73] + mi := &file_cs_proto_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4295,7 +4415,7 @@ func (x *CMSearchGuilds) String() string { func (*CMSearchGuilds) ProtoMessage() {} func (x *CMSearchGuilds) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[73] + mi := &file_cs_proto_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4308,7 +4428,7 @@ func (x *CMSearchGuilds) ProtoReflect() protoreflect.Message { // Deprecated: Use CMSearchGuilds.ProtoReflect.Descriptor instead. func (*CMSearchGuilds) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{73} + return file_cs_proto_proto_rawDescGZIP(), []int{74} } func (x *CMSearchGuilds) GetSinceId() int64 { @@ -4340,7 +4460,7 @@ type SMSearchGuilds struct { func (x *SMSearchGuilds) Reset() { *x = SMSearchGuilds{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[74] + mi := &file_cs_proto_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4353,7 +4473,7 @@ func (x *SMSearchGuilds) String() string { func (*SMSearchGuilds) ProtoMessage() {} func (x *SMSearchGuilds) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[74] + mi := &file_cs_proto_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4366,7 +4486,7 @@ func (x *SMSearchGuilds) ProtoReflect() protoreflect.Message { // Deprecated: Use SMSearchGuilds.ProtoReflect.Descriptor instead. func (*SMSearchGuilds) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{74} + return file_cs_proto_proto_rawDescGZIP(), []int{75} } func (x *SMSearchGuilds) GetErrcode() int32 { @@ -4407,7 +4527,7 @@ type CMGuildLogs struct { func (x *CMGuildLogs) Reset() { *x = CMGuildLogs{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[75] + mi := &file_cs_proto_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4420,7 +4540,7 @@ func (x *CMGuildLogs) String() string { func (*CMGuildLogs) ProtoMessage() {} func (x *CMGuildLogs) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[75] + mi := &file_cs_proto_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4433,7 +4553,7 @@ func (x *CMGuildLogs) ProtoReflect() protoreflect.Message { // Deprecated: Use CMGuildLogs.ProtoReflect.Descriptor instead. func (*CMGuildLogs) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{75} + return file_cs_proto_proto_rawDescGZIP(), []int{76} } // 回复公会日志 @@ -4450,7 +4570,7 @@ type SMGuildLogs struct { func (x *SMGuildLogs) Reset() { *x = SMGuildLogs{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[76] + mi := &file_cs_proto_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4463,7 +4583,7 @@ func (x *SMGuildLogs) String() string { func (*SMGuildLogs) ProtoMessage() {} func (x *SMGuildLogs) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[76] + mi := &file_cs_proto_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4476,7 +4596,7 @@ func (x *SMGuildLogs) ProtoReflect() protoreflect.Message { // Deprecated: Use SMGuildLogs.ProtoReflect.Descriptor instead. func (*SMGuildLogs) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{76} + return file_cs_proto_proto_rawDescGZIP(), []int{77} } func (x *SMGuildLogs) GetErrcode() int32 { @@ -4514,7 +4634,7 @@ type MFGuildLog struct { func (x *MFGuildLog) Reset() { *x = MFGuildLog{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[77] + mi := &file_cs_proto_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4527,7 +4647,7 @@ func (x *MFGuildLog) String() string { func (*MFGuildLog) ProtoMessage() {} func (x *MFGuildLog) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[77] + mi := &file_cs_proto_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4540,7 +4660,7 @@ func (x *MFGuildLog) ProtoReflect() protoreflect.Message { // Deprecated: Use MFGuildLog.ProtoReflect.Descriptor instead. func (*MFGuildLog) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{77} + return file_cs_proto_proto_rawDescGZIP(), []int{78} } func (x *MFGuildLog) GetGuildId() int64 { @@ -4585,7 +4705,7 @@ type CMSetName struct { func (x *CMSetName) Reset() { *x = CMSetName{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[78] + mi := &file_cs_proto_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4598,7 +4718,7 @@ func (x *CMSetName) String() string { func (*CMSetName) ProtoMessage() {} func (x *CMSetName) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[78] + mi := &file_cs_proto_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4611,7 +4731,7 @@ func (x *CMSetName) ProtoReflect() protoreflect.Message { // Deprecated: Use CMSetName.ProtoReflect.Descriptor instead. func (*CMSetName) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{78} + return file_cs_proto_proto_rawDescGZIP(), []int{79} } func (x *CMSetName) GetName() string { @@ -4648,7 +4768,7 @@ type SMSetName struct { func (x *SMSetName) Reset() { *x = SMSetName{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[79] + mi := &file_cs_proto_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4661,7 +4781,7 @@ func (x *SMSetName) String() string { func (*SMSetName) ProtoMessage() {} func (x *SMSetName) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[79] + mi := &file_cs_proto_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4674,7 +4794,7 @@ func (x *SMSetName) ProtoReflect() protoreflect.Message { // Deprecated: Use SMSetName.ProtoReflect.Descriptor instead. func (*SMSetName) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{79} + return file_cs_proto_proto_rawDescGZIP(), []int{80} } func (x *SMSetName) GetErrcode() int32 { @@ -4703,7 +4823,7 @@ type CMSetAvatar struct { func (x *CMSetAvatar) Reset() { *x = CMSetAvatar{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[80] + mi := &file_cs_proto_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4716,7 +4836,7 @@ func (x *CMSetAvatar) String() string { func (*CMSetAvatar) ProtoMessage() {} func (x *CMSetAvatar) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[80] + mi := &file_cs_proto_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4729,7 +4849,7 @@ func (x *CMSetAvatar) ProtoReflect() protoreflect.Message { // Deprecated: Use CMSetAvatar.ProtoReflect.Descriptor instead. func (*CMSetAvatar) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{80} + return file_cs_proto_proto_rawDescGZIP(), []int{81} } func (x *CMSetAvatar) GetAvatar() int32 { @@ -4752,7 +4872,7 @@ type SMSetAvatar struct { func (x *SMSetAvatar) Reset() { *x = SMSetAvatar{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[81] + mi := &file_cs_proto_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4765,7 +4885,7 @@ func (x *SMSetAvatar) String() string { func (*SMSetAvatar) ProtoMessage() {} func (x *SMSetAvatar) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[81] + mi := &file_cs_proto_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4778,7 +4898,7 @@ func (x *SMSetAvatar) ProtoReflect() protoreflect.Message { // Deprecated: Use SMSetAvatar.ProtoReflect.Descriptor instead. func (*SMSetAvatar) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{81} + return file_cs_proto_proto_rawDescGZIP(), []int{82} } func (x *SMSetAvatar) GetErrcode() int32 { @@ -4807,7 +4927,7 @@ type CMSetNotice struct { func (x *CMSetNotice) Reset() { *x = CMSetNotice{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[82] + mi := &file_cs_proto_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4820,7 +4940,7 @@ func (x *CMSetNotice) String() string { func (*CMSetNotice) ProtoMessage() {} func (x *CMSetNotice) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[82] + mi := &file_cs_proto_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4833,7 +4953,7 @@ func (x *CMSetNotice) ProtoReflect() protoreflect.Message { // Deprecated: Use CMSetNotice.ProtoReflect.Descriptor instead. func (*CMSetNotice) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{82} + return file_cs_proto_proto_rawDescGZIP(), []int{83} } func (x *CMSetNotice) GetContent() string { @@ -4856,7 +4976,7 @@ type SMSetNotice struct { func (x *SMSetNotice) Reset() { *x = SMSetNotice{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[83] + mi := &file_cs_proto_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4869,7 +4989,7 @@ func (x *SMSetNotice) String() string { func (*SMSetNotice) ProtoMessage() {} func (x *SMSetNotice) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[83] + mi := &file_cs_proto_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4882,7 +5002,7 @@ func (x *SMSetNotice) ProtoReflect() protoreflect.Message { // Deprecated: Use SMSetNotice.ProtoReflect.Descriptor instead. func (*SMSetNotice) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{83} + return file_cs_proto_proto_rawDescGZIP(), []int{84} } func (x *SMSetNotice) GetErrcode() int32 { @@ -4912,7 +5032,7 @@ type CMSetJoinCond struct { func (x *CMSetJoinCond) Reset() { *x = CMSetJoinCond{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[84] + mi := &file_cs_proto_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4925,7 +5045,7 @@ func (x *CMSetJoinCond) String() string { func (*CMSetJoinCond) ProtoMessage() {} func (x *CMSetJoinCond) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[84] + mi := &file_cs_proto_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4938,7 +5058,7 @@ func (x *CMSetJoinCond) ProtoReflect() protoreflect.Message { // Deprecated: Use CMSetJoinCond.ProtoReflect.Descriptor instead. func (*CMSetJoinCond) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{84} + return file_cs_proto_proto_rawDescGZIP(), []int{85} } func (x *CMSetJoinCond) GetJoinCond() int32 { @@ -4968,7 +5088,7 @@ type SMSetJoinCond struct { func (x *SMSetJoinCond) Reset() { *x = SMSetJoinCond{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[85] + mi := &file_cs_proto_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4981,7 +5101,7 @@ func (x *SMSetJoinCond) String() string { func (*SMSetJoinCond) ProtoMessage() {} func (x *SMSetJoinCond) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[85] + mi := &file_cs_proto_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4994,7 +5114,7 @@ func (x *SMSetJoinCond) ProtoReflect() protoreflect.Message { // Deprecated: Use SMSetJoinCond.ProtoReflect.Descriptor instead. func (*SMSetJoinCond) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{85} + return file_cs_proto_proto_rawDescGZIP(), []int{86} } func (x *SMSetJoinCond) GetErrcode() int32 { @@ -5034,7 +5154,7 @@ type MFGuild struct { func (x *MFGuild) Reset() { *x = MFGuild{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[86] + mi := &file_cs_proto_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5047,7 +5167,7 @@ func (x *MFGuild) String() string { func (*MFGuild) ProtoMessage() {} func (x *MFGuild) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[86] + mi := &file_cs_proto_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5060,7 +5180,7 @@ func (x *MFGuild) ProtoReflect() protoreflect.Message { // Deprecated: Use MFGuild.ProtoReflect.Descriptor instead. func (*MFGuild) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{86} + return file_cs_proto_proto_rawDescGZIP(), []int{87} } func (x *MFGuild) GetAutoId() int64 { @@ -5173,7 +5293,7 @@ type MFGuildMember struct { func (x *MFGuildMember) Reset() { *x = MFGuildMember{} if protoimpl.UnsafeEnabled { - mi := &file_cs_proto_proto_msgTypes[87] + mi := &file_cs_proto_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5186,7 +5306,7 @@ func (x *MFGuildMember) String() string { func (*MFGuildMember) ProtoMessage() {} func (x *MFGuildMember) ProtoReflect() protoreflect.Message { - mi := &file_cs_proto_proto_msgTypes[87] + mi := &file_cs_proto_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5199,7 +5319,7 @@ func (x *MFGuildMember) ProtoReflect() protoreflect.Message { // Deprecated: Use MFGuildMember.ProtoReflect.Descriptor instead. func (*MFGuildMember) Descriptor() ([]byte, []int) { - return file_cs_proto_proto_rawDescGZIP(), []int{87} + return file_cs_proto_proto_rawDescGZIP(), []int{88} } func (x *MFGuildMember) GetAccountId() string { @@ -5507,12 +5627,14 @@ var file_cs_proto_proto_rawDesc = []byte{ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x61, 0x73, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x50, 0x61, 0x69, 0x72, 0x36, 0x34, 0x52, 0x07, 0x6c, 0x61, - 0x73, 0x74, 0x49, 0x64, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x09, 0x4d, 0x46, 0x43, 0x68, 0x61, 0x74, + 0x73, 0x74, 0x49, 0x64, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x09, 0x4d, 0x46, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x55, 0x75, 0x69, 0x64, 0x12, 0x26, + 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, + 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x5f, 0x74, 0x79, 0x70, @@ -5520,250 +5642,271 @@ var file_cs_proto_proto_rawDesc = []byte{ 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x62, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, - 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, - 0x4d, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x53, 0x4d, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, - 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x36, - 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x5f, 0x67, 0x75, 0x69, 0x6c, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, - 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, - 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x0d, 0x43, 0x4d, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x64, 0x0a, 0x0d, 0x53, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x0a, 0x4d, 0x46, 0x43, + 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x48, 0x65, 0x61, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x73, 0x79, 0x73, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x73, 0x53, 0x79, 0x73, 0x55, + 0x73, 0x65, 0x72, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x62, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, + 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x80, + 0x01, 0x0a, 0x14, 0x53, 0x4d, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x36, 0x0a, 0x10, 0x72, 0x65, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x73, 0x22, 0x3b, 0x0a, 0x0d, 0x43, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, + 0x6c, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x64, + 0x0a, 0x0d, 0x53, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x22, 0x2b, 0x0a, 0x0e, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, + 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, + 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x7f, 0x0a, 0x14, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, + 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x6c, + 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x0b, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, - 0x6c, 0x64, 0x52, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x2b, 0x0a, 0x0e, 0x43, 0x4d, 0x41, - 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x22, 0x3d, 0x0a, 0x09, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, + 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x4a, + 0x6f, 0x69, 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, + 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x43, 0x4d, 0x52, 0x65, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, + 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x08, 0x53, 0x4d, 0x52, 0x65, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x7d, 0x0a, 0x12, 0x53, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x7f, 0x0a, 0x14, 0x53, 0x4d, - 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x0f, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, + 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, + 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0f, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x80, 0x01, 0x0a, 0x15, 0x53, 0x4d, 0x44, + 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x43, - 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x0b, 0x53, 0x4d, - 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x43, + 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x28, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x44, 0x0a, 0x10, 0x53, + 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x22, 0xa3, 0x01, 0x0a, 0x16, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x4d, 0x47, 0x75, 0x69, + 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x73, 0x0a, + 0x12, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x22, 0x0b, 0x0a, 0x09, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x22, + 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, + 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x3f, + 0x0a, 0x0e, 0x43, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, + 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x82, 0x01, 0x0a, 0x0e, 0x53, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, + 0x72, 0x6d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, 0x67, 0x75, + 0x69, 0x6c, 0x64, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, + 0x6f, 0x67, 0x73, 0x22, 0x6d, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, + 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, + 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, + 0x67, 0x73, 0x22, 0x7b, 0x0a, 0x0a, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, + 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x6f, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, + 0x53, 0x0a, 0x09, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x74, 0x65, + 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x74, 0x65, + 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, + 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, - 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, - 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x3d, 0x0a, 0x09, 0x43, 0x4d, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x41, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x53, 0x4d, 0x41, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x08, - 0x43, 0x4d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, - 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x08, 0x53, 0x4d, - 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x4d, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x4d, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x7d, 0x0a, 0x12, 0x53, 0x4d, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x0f, 0x43, 0x4d, 0x44, - 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, - 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0f, 0x53, 0x4d, 0x44, 0x69, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, - 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x80, 0x01, - 0x0a, 0x15, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x5e, 0x0a, 0x10, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x22, 0x44, 0x0a, 0x10, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0xa3, 0x01, 0x0a, 0x16, 0x53, 0x4d, 0x53, 0x65, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, - 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x22, 0x73, 0x0a, 0x12, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, - 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x0b, 0x0a, 0x09, 0x43, 0x4d, 0x44, 0x69, 0x73, - 0x62, 0x61, 0x6e, 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x6d, 0x73, 0x67, 0x22, 0x3f, 0x0a, 0x0e, 0x43, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0e, 0x53, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x69, 0x6e, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, - 0x64, 0x52, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x6d, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x75, 0x69, - 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, - 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x09, 0x67, 0x75, - 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x7b, 0x0a, 0x0a, 0x4d, 0x46, 0x47, 0x75, 0x69, - 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x22, 0x53, 0x0a, 0x09, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x19, - 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x53, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x4d, 0x53, 0x65, - 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, - 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, - 0x22, 0x27, 0x0a, 0x0b, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, - 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x54, 0x0a, 0x0d, 0x43, 0x4d, - 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, - 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, - 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x41, 0x0a, 0x0d, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x6d, 0x73, 0x67, 0x22, 0x9c, 0x03, 0x0a, 0x07, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x61, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, - 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, - 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x74, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, - 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, - 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, - 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x5f, 0x64, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x44, 0x69, 0x6e, - 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x22, 0x8e, 0x02, 0x0a, 0x0d, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x76, - 0x61, 0x74, 0x61, 0x72, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, - 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, - 0x74, 0x61, 0x72, 0x2a, 0x22, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, - 0x65, 0x12, 0x14, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x10, 0xd1, 0xa2, 0xd5, 0xc4, 0x07, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x63, 0x73, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x0b, 0x43, + 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, + 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x54, 0x0a, 0x0d, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4a, 0x6f, + 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, + 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, + 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, + 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x0d, 0x53, + 0x4d, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, + 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x9c, + 0x03, 0x0a, 0x07, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x75, + 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x75, 0x74, + 0x6f, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0f, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x53, 0x74, 0x61, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6b, + 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x65, + 0x6e, 0x5f, 0x64, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x44, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x12, + 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x8e, 0x02, + 0x0a, 0x0d, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x48, + 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, + 0x61, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x2a, 0x22, + 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x65, 0x12, 0x14, 0x0a, 0x0c, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0xd1, 0xa2, 0xd5, + 0xc4, 0x07, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x63, 0x73, } var ( @@ -5779,7 +5922,7 @@ func file_cs_proto_proto_rawDescGZIP() []byte { } var file_cs_proto_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_cs_proto_proto_msgTypes = make([]protoimpl.MessageInfo, 88) +var file_cs_proto_proto_msgTypes = make([]protoimpl.MessageInfo, 89) var file_cs_proto_proto_goTypes = []interface{}{ (ConstantE)(0), // 0: cs.Constant_e (*CMPing)(nil), // 1: cs.CMPing @@ -5826,50 +5969,51 @@ var file_cs_proto_proto_goTypes = []interface{}{ (*SMUpdatePrivateChatRedPointNotify)(nil), // 42: cs.SMUpdatePrivateChatRedPointNotify (*SMUpdateChatChannelLastId)(nil), // 43: cs.SMUpdateChatChannelLastId (*MFChatMsg)(nil), // 44: cs.MFChatMsg - (*CMGuildInfo)(nil), // 45: cs.CMGuildInfo - (*SMGuildInfo)(nil), // 46: cs.SMGuildInfo - (*CMRecommendGuildList)(nil), // 47: cs.CMRecommendGuildList - (*SMRecommendGuildList)(nil), // 48: cs.SMRecommendGuildList - (*CMCreateGuild)(nil), // 49: cs.CMCreateGuild - (*SMCreateGuild)(nil), // 50: cs.SMCreateGuild - (*CMApplyToGuild)(nil), // 51: cs.CMApplyToGuild - (*SMApplyToGuild)(nil), // 52: cs.SMApplyToGuild - (*SMApplyToGuildNotify)(nil), // 53: cs.SMApplyToGuildNotify - (*CMApplyList)(nil), // 54: cs.CMApplyList - (*SMApplyList)(nil), // 55: cs.SMApplyList - (*CMApprove)(nil), // 56: cs.CMApprove - (*SMApprove)(nil), // 57: cs.SMApprove - (*SMApproveJoinGuildNotify)(nil), // 58: cs.SMApproveJoinGuildNotify - (*CMReject)(nil), // 59: cs.CMReject - (*SMReject)(nil), // 60: cs.SMReject - (*CMLeaveGuild)(nil), // 61: cs.CMLeaveGuild - (*SMLeaveGuild)(nil), // 62: cs.SMLeaveGuild - (*SMLeaveGuildNotify)(nil), // 63: cs.SMLeaveGuildNotify - (*CMDismissMember)(nil), // 64: cs.CMDismissMember - (*SMDismissMember)(nil), // 65: cs.SMDismissMember - (*SMDismissMemberNotify)(nil), // 66: cs.SMDismissMemberNotify - (*CMSetMemberLevel)(nil), // 67: cs.CMSetMemberLevel - (*SMSetMemberLevel)(nil), // 68: cs.SMSetMemberLevel - (*SMSetMemberLevelNotify)(nil), // 69: cs.SMSetMemberLevelNotify - (*CMGuildMembersList)(nil), // 70: cs.CMGuildMembersList - (*SMGuildMembersList)(nil), // 71: cs.SMGuildMembersList - (*CMDisband)(nil), // 72: cs.CMDisband - (*SMDisband)(nil), // 73: cs.SMDisband - (*CMSearchGuilds)(nil), // 74: cs.CMSearchGuilds - (*SMSearchGuilds)(nil), // 75: cs.SMSearchGuilds - (*CMGuildLogs)(nil), // 76: cs.CMGuildLogs - (*SMGuildLogs)(nil), // 77: cs.SMGuildLogs - (*MFGuildLog)(nil), // 78: cs.MFGuildLog - (*CMSetName)(nil), // 79: cs.CMSetName - (*SMSetName)(nil), // 80: cs.SMSetName - (*CMSetAvatar)(nil), // 81: cs.CMSetAvatar - (*SMSetAvatar)(nil), // 82: cs.SMSetAvatar - (*CMSetNotice)(nil), // 83: cs.CMSetNotice - (*SMSetNotice)(nil), // 84: cs.SMSetNotice - (*CMSetJoinCond)(nil), // 85: cs.CMSetJoinCond - (*SMSetJoinCond)(nil), // 86: cs.SMSetJoinCond - (*MFGuild)(nil), // 87: cs.MFGuild - (*MFGuildMember)(nil), // 88: cs.MFGuildMember + (*MFChatUser)(nil), // 45: cs.MFChatUser + (*CMGuildInfo)(nil), // 46: cs.CMGuildInfo + (*SMGuildInfo)(nil), // 47: cs.SMGuildInfo + (*CMRecommendGuildList)(nil), // 48: cs.CMRecommendGuildList + (*SMRecommendGuildList)(nil), // 49: cs.SMRecommendGuildList + (*CMCreateGuild)(nil), // 50: cs.CMCreateGuild + (*SMCreateGuild)(nil), // 51: cs.SMCreateGuild + (*CMApplyToGuild)(nil), // 52: cs.CMApplyToGuild + (*SMApplyToGuild)(nil), // 53: cs.SMApplyToGuild + (*SMApplyToGuildNotify)(nil), // 54: cs.SMApplyToGuildNotify + (*CMApplyList)(nil), // 55: cs.CMApplyList + (*SMApplyList)(nil), // 56: cs.SMApplyList + (*CMApprove)(nil), // 57: cs.CMApprove + (*SMApprove)(nil), // 58: cs.SMApprove + (*SMApproveJoinGuildNotify)(nil), // 59: cs.SMApproveJoinGuildNotify + (*CMReject)(nil), // 60: cs.CMReject + (*SMReject)(nil), // 61: cs.SMReject + (*CMLeaveGuild)(nil), // 62: cs.CMLeaveGuild + (*SMLeaveGuild)(nil), // 63: cs.SMLeaveGuild + (*SMLeaveGuildNotify)(nil), // 64: cs.SMLeaveGuildNotify + (*CMDismissMember)(nil), // 65: cs.CMDismissMember + (*SMDismissMember)(nil), // 66: cs.SMDismissMember + (*SMDismissMemberNotify)(nil), // 67: cs.SMDismissMemberNotify + (*CMSetMemberLevel)(nil), // 68: cs.CMSetMemberLevel + (*SMSetMemberLevel)(nil), // 69: cs.SMSetMemberLevel + (*SMSetMemberLevelNotify)(nil), // 70: cs.SMSetMemberLevelNotify + (*CMGuildMembersList)(nil), // 71: cs.CMGuildMembersList + (*SMGuildMembersList)(nil), // 72: cs.SMGuildMembersList + (*CMDisband)(nil), // 73: cs.CMDisband + (*SMDisband)(nil), // 74: cs.SMDisband + (*CMSearchGuilds)(nil), // 75: cs.CMSearchGuilds + (*SMSearchGuilds)(nil), // 76: cs.SMSearchGuilds + (*CMGuildLogs)(nil), // 77: cs.CMGuildLogs + (*SMGuildLogs)(nil), // 78: cs.SMGuildLogs + (*MFGuildLog)(nil), // 79: cs.MFGuildLog + (*CMSetName)(nil), // 80: cs.CMSetName + (*SMSetName)(nil), // 81: cs.SMSetName + (*CMSetAvatar)(nil), // 82: cs.CMSetAvatar + (*SMSetAvatar)(nil), // 83: cs.SMSetAvatar + (*CMSetNotice)(nil), // 84: cs.CMSetNotice + (*SMSetNotice)(nil), // 85: cs.SMSetNotice + (*CMSetJoinCond)(nil), // 86: cs.CMSetJoinCond + (*SMSetJoinCond)(nil), // 87: cs.SMSetJoinCond + (*MFGuild)(nil), // 88: cs.MFGuild + (*MFGuildMember)(nil), // 89: cs.MFGuildMember } var file_cs_proto_proto_depIdxs = []int32{ 34, // 0: cs.SMSearchUser.users:type_name -> cs.MFUser @@ -5880,19 +6024,21 @@ var file_cs_proto_proto_depIdxs = []int32{ 5, // 5: cs.CMReadMsgAndOpenChatNotify.last_ids:type_name -> cs.MFPair64 44, // 6: cs.SMChatMsgNotify.msg_list:type_name -> cs.MFChatMsg 5, // 7: cs.SMUpdateChatChannelLastId.last_ids:type_name -> cs.MFPair64 - 87, // 8: cs.SMGuildInfo.guild:type_name -> cs.MFGuild - 87, // 9: cs.SMRecommendGuildList.recommend_guilds:type_name -> cs.MFGuild - 87, // 10: cs.SMCreateGuild.guild:type_name -> cs.MFGuild - 88, // 11: cs.SMApplyList.members:type_name -> cs.MFGuildMember - 88, // 12: cs.SMGuildMembersList.members:type_name -> cs.MFGuildMember - 87, // 13: cs.SMSearchGuilds.guilds:type_name -> cs.MFGuild - 78, // 14: cs.SMGuildLogs.guildLogs:type_name -> cs.MFGuildLog - 88, // 15: cs.MFGuild.members:type_name -> cs.MFGuildMember - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 45, // 8: cs.MFChatMsg.sender:type_name -> cs.MFChatUser + 45, // 9: cs.MFChatMsg.receiver:type_name -> cs.MFChatUser + 88, // 10: cs.SMGuildInfo.guild:type_name -> cs.MFGuild + 88, // 11: cs.SMRecommendGuildList.recommend_guilds:type_name -> cs.MFGuild + 88, // 12: cs.SMCreateGuild.guild:type_name -> cs.MFGuild + 89, // 13: cs.SMApplyList.members:type_name -> cs.MFGuildMember + 89, // 14: cs.SMGuildMembersList.members:type_name -> cs.MFGuildMember + 88, // 15: cs.SMSearchGuilds.guilds:type_name -> cs.MFGuild + 79, // 16: cs.SMGuildLogs.guildLogs:type_name -> cs.MFGuildLog + 89, // 17: cs.MFGuild.members:type_name -> cs.MFGuildMember + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_cs_proto_proto_init() } @@ -6430,7 +6576,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMGuildInfo); i { + switch v := v.(*MFChatUser); i { case 0: return &v.state case 1: @@ -6442,7 +6588,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMGuildInfo); i { + switch v := v.(*CMGuildInfo); i { case 0: return &v.state case 1: @@ -6454,7 +6600,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMRecommendGuildList); i { + switch v := v.(*SMGuildInfo); i { case 0: return &v.state case 1: @@ -6466,7 +6612,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMRecommendGuildList); i { + switch v := v.(*CMRecommendGuildList); i { case 0: return &v.state case 1: @@ -6478,7 +6624,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMCreateGuild); i { + switch v := v.(*SMRecommendGuildList); i { case 0: return &v.state case 1: @@ -6490,7 +6636,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMCreateGuild); i { + switch v := v.(*CMCreateGuild); i { case 0: return &v.state case 1: @@ -6502,7 +6648,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMApplyToGuild); i { + switch v := v.(*SMCreateGuild); i { case 0: return &v.state case 1: @@ -6514,7 +6660,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMApplyToGuild); i { + switch v := v.(*CMApplyToGuild); i { case 0: return &v.state case 1: @@ -6526,7 +6672,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMApplyToGuildNotify); i { + switch v := v.(*SMApplyToGuild); i { case 0: return &v.state case 1: @@ -6538,7 +6684,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMApplyList); i { + switch v := v.(*SMApplyToGuildNotify); i { case 0: return &v.state case 1: @@ -6550,7 +6696,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMApplyList); i { + switch v := v.(*CMApplyList); i { case 0: return &v.state case 1: @@ -6562,7 +6708,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMApprove); i { + switch v := v.(*SMApplyList); i { case 0: return &v.state case 1: @@ -6574,7 +6720,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMApprove); i { + switch v := v.(*CMApprove); i { case 0: return &v.state case 1: @@ -6586,7 +6732,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMApproveJoinGuildNotify); i { + switch v := v.(*SMApprove); i { case 0: return &v.state case 1: @@ -6598,7 +6744,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMReject); i { + switch v := v.(*SMApproveJoinGuildNotify); i { case 0: return &v.state case 1: @@ -6610,7 +6756,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMReject); i { + switch v := v.(*CMReject); i { case 0: return &v.state case 1: @@ -6622,7 +6768,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMLeaveGuild); i { + switch v := v.(*SMReject); i { case 0: return &v.state case 1: @@ -6634,7 +6780,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMLeaveGuild); i { + switch v := v.(*CMLeaveGuild); i { case 0: return &v.state case 1: @@ -6646,7 +6792,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMLeaveGuildNotify); i { + switch v := v.(*SMLeaveGuild); i { case 0: return &v.state case 1: @@ -6658,7 +6804,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMDismissMember); i { + switch v := v.(*SMLeaveGuildNotify); i { case 0: return &v.state case 1: @@ -6670,7 +6816,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMDismissMember); i { + switch v := v.(*CMDismissMember); i { case 0: return &v.state case 1: @@ -6682,7 +6828,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMDismissMemberNotify); i { + switch v := v.(*SMDismissMember); i { case 0: return &v.state case 1: @@ -6694,7 +6840,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMSetMemberLevel); i { + switch v := v.(*SMDismissMemberNotify); i { case 0: return &v.state case 1: @@ -6706,7 +6852,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMSetMemberLevel); i { + switch v := v.(*CMSetMemberLevel); i { case 0: return &v.state case 1: @@ -6718,7 +6864,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMSetMemberLevelNotify); i { + switch v := v.(*SMSetMemberLevel); i { case 0: return &v.state case 1: @@ -6730,7 +6876,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMGuildMembersList); i { + switch v := v.(*SMSetMemberLevelNotify); i { case 0: return &v.state case 1: @@ -6742,7 +6888,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMGuildMembersList); i { + switch v := v.(*CMGuildMembersList); i { case 0: return &v.state case 1: @@ -6754,7 +6900,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMDisband); i { + switch v := v.(*SMGuildMembersList); i { case 0: return &v.state case 1: @@ -6766,7 +6912,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMDisband); i { + switch v := v.(*CMDisband); i { case 0: return &v.state case 1: @@ -6778,7 +6924,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMSearchGuilds); i { + switch v := v.(*SMDisband); i { case 0: return &v.state case 1: @@ -6790,7 +6936,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMSearchGuilds); i { + switch v := v.(*CMSearchGuilds); i { case 0: return &v.state case 1: @@ -6802,7 +6948,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMGuildLogs); i { + switch v := v.(*SMSearchGuilds); i { case 0: return &v.state case 1: @@ -6814,7 +6960,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMGuildLogs); i { + switch v := v.(*CMGuildLogs); i { case 0: return &v.state case 1: @@ -6826,7 +6972,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MFGuildLog); i { + switch v := v.(*SMGuildLogs); i { case 0: return &v.state case 1: @@ -6838,7 +6984,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMSetName); i { + switch v := v.(*MFGuildLog); i { case 0: return &v.state case 1: @@ -6850,7 +6996,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMSetName); i { + switch v := v.(*CMSetName); i { case 0: return &v.state case 1: @@ -6862,7 +7008,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMSetAvatar); i { + switch v := v.(*SMSetName); i { case 0: return &v.state case 1: @@ -6874,7 +7020,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMSetAvatar); i { + switch v := v.(*CMSetAvatar); i { case 0: return &v.state case 1: @@ -6886,7 +7032,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMSetNotice); i { + switch v := v.(*SMSetAvatar); i { case 0: return &v.state case 1: @@ -6898,7 +7044,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMSetNotice); i { + switch v := v.(*CMSetNotice); i { case 0: return &v.state case 1: @@ -6910,7 +7056,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CMSetJoinCond); i { + switch v := v.(*SMSetNotice); i { case 0: return &v.state case 1: @@ -6922,7 +7068,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SMSetJoinCond); i { + switch v := v.(*CMSetJoinCond); i { case 0: return &v.state case 1: @@ -6934,7 +7080,7 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MFGuild); i { + switch v := v.(*SMSetJoinCond); i { case 0: return &v.state case 1: @@ -6946,6 +7092,18 @@ func file_cs_proto_proto_init() { } } file_cs_proto_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MFGuild); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cs_proto_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MFGuildMember); i { case 0: return &v.state @@ -6964,7 +7122,7 @@ func file_cs_proto_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cs_proto_proto_rawDesc, NumEnums: 1, - NumMessages: 88, + NumMessages: 89, NumExtensions: 0, NumServices: 0, }, diff --git a/server/imserver/guild.go b/server/imserver/guild.go index 147bb869..9dbe3d93 100644 --- a/server/imserver/guild.go +++ b/server/imserver/guild.go @@ -56,14 +56,6 @@ func (g *Guild) GetMembersViceLeaderCount() int { return count } -// GetMember 根据 AccountId 获取成员信息 -func (g *Guild) GetMember(accountId string) *GuildMember { - if member, exists := g.Members[accountId]; exists { - return member - } - return nil -} - // IsMember 是否是公会成员 func (g *Guild) IsMember(accountId string) bool { _, exists := g.Members[accountId] @@ -86,6 +78,22 @@ func (g *Guild) RemoveMember(accountId string) { delete(g.Members, accountId) } +// GetMember 获取成员 +func (g *Guild) GetMember(accountId string) *GuildMember { + if member, exists := g.Members[accountId]; exists { + return member + } + return nil +} + +// GetMemberLevel 获取成员职位 +func (g *Guild) GetMemberLevel(accountId string) int32 { + if member, exists := g.Members[accountId]; exists { + return member.Level + } + return 0 +} + func (g *Guild) SetNotice(notice *string) { g.Notice = *notice } diff --git a/server/imserver/handlermgr.go b/server/imserver/handlermgr.go index 2d5fccb3..24c5aadf 100644 --- a/server/imserver/handlermgr.go +++ b/server/imserver/handlermgr.go @@ -45,6 +45,12 @@ func (this *HandlerMgr) init() { cs.RegHandlerId(int(cs.CMMessageIdE__CMSetAvatar), PLAYER_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMSetJoinCond), PLAYER_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMSetMemberLevel), PLAYER_HANDLER_ID) + + // 聊天 + cs.RegHandlerId(int(cs.CMMessageIdE__CMSendChatMsg), PLAYER_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMReadMsgAndOpenChatNotify), PLAYER_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMSetCurrPrivateChatTarget), PLAYER_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMCloseChatNotify), PLAYER_HANDLER_ID) } func (this *HandlerMgr) unInit() { diff --git a/server/imserver/mt/IMCluster.go b/server/imserver/mt/IMCluster.go index 9873bb82..7f6ec428 100644 --- a/server/imserver/mt/IMCluster.go +++ b/server/imserver/mt/IMCluster.go @@ -3,6 +3,7 @@ package mt import ( "f5" "mtb" + "q5" ) type IMCluster struct { @@ -11,13 +12,18 @@ type IMCluster struct { type IMClusterTable struct { f5.IdMetaTable[IMCluster] - selfConf *IMCluster + selfConf *IMCluster + serverInfo string } func (this *IMCluster) Init1() { } +func (this *IMClusterTable) GetIp() string { + return q5.GetLocalIP() +} + func (this *IMClusterTable) GetListenPort() int32 { return this.selfConf.GetListenPort() } @@ -31,4 +37,9 @@ func (this *IMClusterTable) PostInit1() { if this.selfConf == nil { panic("imserver集群无法读取本服配置") } + this.serverInfo = this.GetIp() + ":" + q5.ToString(this.GetListenPort()) +} + +func (this *IMClusterTable) GetServerInfo() string { + return this.serverInfo } diff --git a/server/imserver/player.go b/server/imserver/player.go index bf593b5d..cb31a06b 100644 --- a/server/imserver/player.go +++ b/server/imserver/player.go @@ -246,11 +246,11 @@ func (p *Player) CMRemoveBlacklist(hdr *f5.MsgHdr, msg *cs.CMRemoveBlacklist) { // CMSendChatMsg 发送聊天消息 func (p *Player) CMSendChatMsg(hdr *f5.MsgHdr, msg *cs.CMSendChatMsg) { - chatChannel := *msg.ChatChannel - if !IsValidChatChannel(chatChannel) { + // p.chatChannel := *msg.ChatChannel + if !IsValidChatChannel(msg.GetChatChannel()) { return } - switch chatChannel { + switch msg.GetChatChannel() { case kCCWorld: chatMgr.ProcWorldChat(p, msg) case kCCPrivate: @@ -270,11 +270,11 @@ func (p *Player) SyncPrivateChatRedPoint() { // CMReadMsgAndOpenChatNotify 读取聊天消息列表并且开启聊天通知 func (p *Player) CMReadMsgAndOpenChatNotify(hdr *f5.MsgHdr, msg *cs.CMReadMsgAndOpenChatNotify) { - chatChannel := *msg.CurrChannel - if !IsValidChatChannel(chatChannel) { + if !IsValidChatChannel(msg.GetCurrChannel()) { return } - if chatChannel == kCCPrivate { + p.chatChannel = int(msg.GetCurrChannel()) + if p.chatChannel == kCCPrivate { p.SyncPrivateChatRedPoint() } } @@ -779,6 +779,39 @@ func (p *Player) FillMFUser(profile *PlayerProfile) *cs.MFUser { return resUser } +// FillMFChatUser 填充聊天信息 +func (p *Player) FillMFChatUser() *cs.MFChatUser { + accountId := p.accountId + profile := cacheMgr.GetPlayerProfile(accountId) + if profile == nil { + return nil + } + + var guildId int64 = 0 + var guildName = "" + var guildLevel int32 = 0 + guild := guildMgr.GetGuildByAccountId(profile.AccountId) + if guild != nil { + guildId = guild.GuildId + guildName = guild.Name + guildLevel = guild.GetMemberLevel(accountId) + } + onlineStatus := playerMgr.GetOnlineStatus(profile.AccountId) + + res := &cs.MFChatUser{ + AccountId: &profile.AccountId, + Username: &profile.Username, + Avatar: &profile.Avatar, + AvatarHead: &profile.AvatarHead, + GuildId: &guildId, + GuildName: &guildName, + GuildLevel: &guildLevel, + OnlineStatus: &onlineStatus, + LastLoginTime: &profile.LastLoginTime, + } + return res +} + func (p *Player) IncrPrivateChatLastId() uint64 { p.privateChatLastId++ return p.privateChatLastId diff --git a/server/imserver/playermgr.go b/server/imserver/playermgr.go index af9cb12b..4791cab1 100644 --- a/server/imserver/playermgr.go +++ b/server/imserver/playermgr.go @@ -137,9 +137,11 @@ func (this *PlayerMgr) CMLoginResult(hdr *f5.MsgHdr, msg *cs.CMLogin, rsp f5.Htt cacheMgr.AddCacheProfile(1, playerProfile) friendMgr.LoadUser(accountId) - serverInfo := "192.168.100.39:2000" + serverInfo := proto.String(mt.Table.IMCluster.GetServerInfo()) + f5.GetSysLog().Info("ServerInfo:%s", serverInfo) + rspMsg := &cs.SMLogin{} - rspMsg.ServerInfo = &serverInfo + rspMsg.ServerInfo = serverInfo rspMsg.AccountId = &resObj.Info.AccountID wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) } @@ -148,7 +150,7 @@ func (this *PlayerMgr) reportServerState(masterIp string, masterPort int32) { params := map[string]string{ "node_id": q5.ToString(f5.GetApp().GetNodeId()), "instance_id": q5.ToString(f5.GetApp().GetInstanceId()), - "ip": "192.168.100.164", + "ip": mt.Table.IMCluster.GetIp(), "port": q5.ToString(mt.Table.IMCluster.GetListenPort()), "online_num": q5.ToString(0), "room_num": q5.ToString(0), @@ -211,7 +213,7 @@ func (this *PlayerMgr) CMReconnect(hdr *f5.MsgHdr, msg *cs.CMReconnect) { } if hum.GetSessionId() != msg.GetSessionId() { rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_SESSION_ID_NO_VALID) - rspMsg.Errmsg = proto.String("session id no valid") + rspMsg.Errmsg = proto.String("session_id no valid") wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) return } diff --git a/server/imserver/proto/cs_proto.proto b/server/imserver/proto/cs_proto.proto index 47a09028..ffe28e13 100644 --- a/server/imserver/proto/cs_proto.proto +++ b/server/imserver/proto/cs_proto.proto @@ -351,14 +351,27 @@ message MFChatMsg !!!不同的频道msg_uuid可能重复 */ optional uint64 msg_uuid = 1; - optional string sender = 2; //发送者 - optional string receiver = 3; //接收者 + optional MFChatUser sender = 2; //发送者 + optional MFChatUser receiver = 3; //接收者 optional int32 chat_channel = 4; //聊天频道 optional int32 msg_type = 5; //消息类型 0:文本消息(json) 1:自定义协议 (json) 2:纯文本(但是任会做屏蔽字替换) optional string msg_body = 6; //消息内容(json类型里的字段!开头的会做屏蔽替换) optional int64 send_time = 7; //消息发送时间 } +// 聊天用户 +message MFChatUser{ + optional string account_id = 1; + optional string username = 2; + optional int32 avatar = 3; + optional int32 avatar_head = 4; + optional int64 guild_id = 5; + optional string guild_name = 6; + optional int32 guild_level = 7; + optional int32 online_status = 8; + optional int32 last_login_time = 9; +} + // --- 公会 --- // 请求我的公会信息 message CMGuildInfo @@ -675,4 +688,4 @@ message MFGuildMember { optional int32 last_login_time = 9; optional int32 level = 10; optional int32 star = 11; -} \ No newline at end of file +} From 05cccd3e9a6d7ec2c25749b726bf504db53f0029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Thu, 21 Sep 2023 19:10:28 +0800 Subject: [PATCH 4/8] save --- server/imserver/chatmgr.go | 32 +++++++++++++++++++++++++++----- server/imserver/player.go | 22 +++++++++++++++++++++- 2 files changed, 48 insertions(+), 6 deletions(-) diff --git a/server/imserver/chatmgr.go b/server/imserver/chatmgr.go index 82bb498b..c9a07670 100644 --- a/server/imserver/chatmgr.go +++ b/server/imserver/chatmgr.go @@ -17,7 +17,8 @@ type ChatMgr struct { worldMsgId uint64 guildMsgId uint64 - tmpMsgId uint64 + teamMsgId uint64 + //tmpMsgId uint64 } func NewChatMgr(pm *PlayerMgr, fm *FriendsMgr, gm *GuildMgr) *ChatMgr { @@ -32,7 +33,7 @@ func NewChatMgr(pm *PlayerMgr, fm *FriendsMgr, gm *GuildMgr) *ChatMgr { // Default values cm.worldMsgId = 1000 cm.guildMsgId = 1000 - cm.tmpMsgId = 1000 + cm.teamMsgId = 1000 return cm } @@ -118,9 +119,9 @@ func (cm *ChatMgr) ProcGuildChat(p *Player, msg *cs.CMSendChatMsg) { if msgRec, exists := cm.guildMsgRec[guildId]; exists { msgRec.AddChatMsg(chatMsg) } else { - msgRec := &ChatMsgRec{} - msgRec.CurrID = cm.guildMsgId - cm.guildMsgRec[guildId] = msgRec + cm.guildMsgRec[guildId] = &ChatMsgRec{ + CurrID: cm.guildMsgId, + } } // TraverseMember @@ -132,6 +133,27 @@ func (cm *ChatMgr) ProcGuildChat(p *Player, msg *cs.CMSendChatMsg) { } } +func (cm *ChatMgr) ProcTeamChat(p *Player, msg *cs.CMSendChatMsg) { + chatMsg := new(cs.MFChatMsg) + cm.teamMsgId++ + cm.FillMFChatMsg(chatMsg, p, cm.teamMsgId, *msg.ChatChannel, *msg.MsgType, msg.MsgBody) + + notifyMsg := &cs.SMChatMsgNotify{} + notifyMsg.MsgList = append(notifyMsg.MsgList, chatMsg) + + // Traverse msg members + for _, accountId := range msg.GetMembers() { + p2 := cm.pm.GetPlayerByAccountId(accountId) + if p2 != nil { + continue + } + p2.SendMsg(notifyMsg) + if p2.chatChannel == kCCTeam { + // p2.SyncPrivateChatRedPoint() + } + } +} + func (cm *ChatMgr) ProcPrivateChat(p *Player, msg *cs.CMSendChatMsg) { targetAccountId := msg.GetTargetAccountId() if p.accountId == targetAccountId { diff --git a/server/imserver/player.go b/server/imserver/player.go index cb31a06b..975e73d8 100644 --- a/server/imserver/player.go +++ b/server/imserver/player.go @@ -257,13 +257,14 @@ func (p *Player) CMSendChatMsg(hdr *f5.MsgHdr, msg *cs.CMSendChatMsg) { chatMgr.ProcPrivateChat(p, msg) case kCCGuild: chatMgr.ProcGuildChat(p, msg) + case kCCTeam: + chatMgr.ProcTeamChat(p, msg) default: return } } func (p *Player) SyncPrivateChatRedPoint() { - //rspMsg := &cs.SMDeleteFriendShip{} msg := &cs.SMUpdatePrivateChatRedPointNotify{} chatMgr.FillSMUpdatePrivateChatRedPointNotify(p, msg) } @@ -277,6 +278,25 @@ func (p *Player) CMReadMsgAndOpenChatNotify(hdr *f5.MsgHdr, msg *cs.CMReadMsgAnd if p.chatChannel == kCCPrivate { p.SyncPrivateChatRedPoint() } + + // lastIds [{key:1, value:0}, {key:1, value:0}, ] + for _, v := range msg.GetLastIds() { + chatChannel := q5.ToInt32(v.GetKey()) + if !IsValidChatChannel(chatChannel) { + continue + } + chatChannelLastId := uint64(v.GetValue()) + switch chatChannel { + case kCCWorld: + p.worldChannelLastId = chatChannelLastId + chatMgr.SyncWorldChatMsg(p) + case kCCGuild: + p.guildChannelLastId = chatChannelLastId + chatMgr.SyncGuildChatMsg(p) + default: + break + } + } } // CMSetCurrPrivateChatTarget 设置当前私聊目标 From 08af4380210561d9c32273c53e2d7928bcf1041d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Fri, 22 Sep 2023 13:17:07 +0800 Subject: [PATCH 5/8] save --- server/imserver/chatmgr.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/imserver/chatmgr.go b/server/imserver/chatmgr.go index c9a07670..07b4cb80 100644 --- a/server/imserver/chatmgr.go +++ b/server/imserver/chatmgr.go @@ -126,7 +126,7 @@ func (cm *ChatMgr) ProcGuildChat(p *Player, msg *cs.CMSendChatMsg) { // TraverseMember for _, member := range guild.Members { - guildMember := playerMgr.GetPlayerByAccountId(member.GetAccountId()) + guildMember := cm.pm.GetPlayerByAccountId(member.GetAccountId()) if guildMember != nil { cm.SyncGuildChatMsg(guildMember) } From 47f9076af50db14bdc5cf4387a278e6b0be4475b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Fri, 22 Sep 2023 15:12:27 +0800 Subject: [PATCH 6/8] save --- server/imserver/chatmgr.go | 9 +- server/imserver/friendsmgr.go | 17 +-- server/imserver/guilddbmgr.go | 2 - server/imserver/guildmgr.go | 272 ++++++++++++---------------------- server/imserver/player.go | 2 +- 5 files changed, 107 insertions(+), 195 deletions(-) diff --git a/server/imserver/chatmgr.go b/server/imserver/chatmgr.go index 07b4cb80..0702d1cc 100644 --- a/server/imserver/chatmgr.go +++ b/server/imserver/chatmgr.go @@ -145,11 +145,10 @@ func (cm *ChatMgr) ProcTeamChat(p *Player, msg *cs.CMSendChatMsg) { for _, accountId := range msg.GetMembers() { p2 := cm.pm.GetPlayerByAccountId(accountId) if p2 != nil { - continue - } - p2.SendMsg(notifyMsg) - if p2.chatChannel == kCCTeam { - // p2.SyncPrivateChatRedPoint() + p2.SendMsg(notifyMsg) + if p2.chatChannel == kCCTeam { + p2.SyncPrivateChatRedPoint() + } } } } diff --git a/server/imserver/friendsmgr.go b/server/imserver/friendsmgr.go index aa3892e2..36fc1144 100644 --- a/server/imserver/friendsmgr.go +++ b/server/imserver/friendsmgr.go @@ -151,34 +151,31 @@ func (fm *FriendsMgr) AcceptFriendRequest(account1Id string, account2Id string, } user2.Friendships[account1Id] = friendship2 - //cacheMgr.LoadPlayerProfile(user1, func(playerProfile *PlayerProfile) {}) - //cacheMgr.LoadPlayerProfile(user2, func(playerProfile *PlayerProfile) {}) - cb(ERR_CODE_OK, "") }) } // RejectFriendRequest 拒绝好友请求 func (fm *FriendsMgr) RejectFriendRequest(account1Id string, account2Id string, cb func(errCode int32, errMsg string)) { - User1 := fm.GetUser(account1Id) + user1 := fm.GetUser(account1Id) user2 := fm.GetUser(account2Id) if user2 == nil { user2 = fm.LoadUser(account2Id) } - //if User1 == nil || user2 == nil { - // cb(ERR_CODE_USERS_NO_EXISTS, "RejectFriendRequest user no exists") - // return - //} + if user1 == nil || user2 == nil { + cb(ERR_CODE_USERS_NO_EXISTS, "RejectFriendRequest user no exists") + return + } + requestTime := time.Now().Unix() fm.upsertFriendShip(account2Id, account1Id, FriendshipStatusReject, requestTime, func(err error) { if err != nil { cb(ERR_CODE_UPDATE_PENDING_REQUEST_DB_FAIL, "RejectFriendRequest update pending request db error") return } - User1.RemoveFriendRequest(account2Id) + user1.RemoveFriendRequest(account2Id) user2.RemoveFriendRequest(account1Id) cb(ERR_CODE_OK, "") - }) } diff --git a/server/imserver/guilddbmgr.go b/server/imserver/guilddbmgr.go index a8649cee..546ab563 100644 --- a/server/imserver/guilddbmgr.go +++ b/server/imserver/guilddbmgr.go @@ -57,9 +57,7 @@ func (gm *GuildMgr) loadGuildFromDBResult(err error, rows *f5.DataSet) { Members: make(map[string]*GuildMember, MaxMembers), PendingReqs: make(map[string]int32, MaxPendingReqs), } - gm.guilds[guildId] = guild - gm.guildIds = append(gm.guildIds, guildId) } q5.UnSetBitFlag(&gm.loadedFlags, LoadGuildFlag) } diff --git a/server/imserver/guildmgr.go b/server/imserver/guildmgr.go index 734b39a7..ecac0db2 100644 --- a/server/imserver/guildmgr.go +++ b/server/imserver/guildmgr.go @@ -21,7 +21,6 @@ const ( type GuildMgr struct { cs.MsgHandlerImpl guilds map[int64]*Guild // 公会ID -> 公会 - guildIds []int64 // 公会列表 guildIds guildLogs map[int64][]*GuildLog // 公会ID -> []公会日志列表 userGuilds map[string]int64 // accountId -> 公会ID loadedFlags int64 @@ -36,7 +35,6 @@ func NewGuildMgr() *GuildMgr { } func (gm *GuildMgr) init() { - gm.guildIds = make([]int64, 0, 200) gm.loadFromDB() } @@ -63,15 +61,18 @@ func (gm *GuildMgr) loadFromDB() { func (gm *GuildMgr) CreateGuild(avatar int32, name *string, leaderId string, cb func(errCode int32, errMsg string, guild *Guild)) { if gm.CheckJoinGuild(leaderId) { - cb(ERR_CODE_JOINED_GUILD, "Joined guild", nil) + cb(ERR_CODE_JOINED_GUILD, "Joined guild", nil) return } - guildId := f5.GetApp().NewUuid() if gm.ExistsGuild(guildId) { cb(ERR_CODE_CREATE_GUILD_FAIL, "create error ", nil) return } + if !gm.CheckGuildNameUnique(name) { + cb(ERR_CODE_CREATE_GUILD_FAIL, "Duplicate guild names", nil) + return + } unixSec := time.Now().Unix() fields := [][]string{ @@ -87,9 +88,10 @@ func (gm *GuildMgr) CreateGuild(avatar int32, name *string, leaderId string, FRIEND_DB, "t_guild", fields, - func(err error, id int64, affectedRows int64) { + func(err error, lastInsertId int64, affectedRows int64) { if err != nil { cb(ERR_CODE_CREATE_GUILD_DB_FAIL, "create guild db error ", nil) + f5.GetSysLog().Info("create guild db error:%s", err) return } newMember := &GuildMember{AccountId: leaderId, Level: GuildMemberLevelLeader} @@ -97,11 +99,12 @@ func (gm *GuildMgr) CreateGuild(avatar int32, name *string, leaderId string, func(err error) { if err != nil { cb(ERR_CODE_CREATE_GUILD_MEMBER_DB_FAIL, "create guild member db error", nil) + f5.GetSysLog().Info("create guild member db error:%s", err) return } guild := &Guild{ - AutoId: id, + AutoId: lastInsertId, GuildId: guildId, Name: *name, LeaderId: leaderId, @@ -122,9 +125,10 @@ func (gm *GuildMgr) CreateGuild(avatar int32, name *string, leaderId string, // Add event prop := make(map[string]string) - prop["auto_id"] = q5.ToString(id) + prop["auto_id"] = q5.ToString(lastInsertId) prop["guild_id"] = q5.ToString(guildId) prop["guild_name"] = *name + prop["avatar"] = q5.ToString(avatar) f5.GetTgLog().AddTrackLog( GAME_ID, leaderId, @@ -329,26 +333,25 @@ func (gm *GuildMgr) Reject(operatorAccountId, accountId string, cb func(errCode gm.updatePendingReqs(guild.GuildId, accountId, PendingReqIsJoinGuildStatusReject, func(err error) { if err != nil { - cb(ERR_CODE_UPDATE_GUILD_PENDING_REQUEST_DB_FAIL, "Reject db error") return } - - guild.RemovePendingReq(accountId) - // Add event - prop := make(map[string]string) - prop["guild_id"] = q5.ToString(guild.GuildId) - prop["reject_account_id"] = q5.ToString(accountId) - prop["members_count"] = q5.ToString(guild.GetMembersCount()) - f5.GetTgLog().AddTrackLog( - GAME_ID, - operatorAccountId, - "127.0.0.1", - EVENT_GUILD_REJECT, - prop, - ) - - cb(ERR_CODE_OK, "Reject ok") }) + + guild.RemovePendingReq(accountId) + // Add event + prop := make(map[string]string) + prop["guild_id"] = q5.ToString(guild.GuildId) + prop["reject_account_id"] = q5.ToString(accountId) + prop["members_count"] = q5.ToString(guild.GetMembersCount()) + f5.GetTgLog().AddTrackLog( + GAME_ID, + operatorAccountId, + "127.0.0.1", + EVENT_GUILD_REJECT, + prop, + ) + + cb(ERR_CODE_OK, "Reject ok") } // JoinGuild 直接加入公会 @@ -595,81 +598,6 @@ func (gm *GuildMgr) SetMemberLevel(operatorAccountId, accountId string, newLevel ) cb(ERR_CODE_OK, "SetMemberLevel OK", guild) - - // 转让公长 - //if newLevel == GuildMemberLevelLeader { - // updateFields := [][]string{ - // {"leader_account_id", q5.ToString(guild.LeaderId)}, - // } - // gm.updateGuild(guild, updateFields, nil) - // guild.LeaderId = member.AccountId - // oldMember := guild.GetMember(operatorAccountId) - // oldMemberFields := [][]string{{"level", q5.ToString(GuildMemberLevelDefault)}} - // gm.updateGuildMember(guild, oldMember.AccountId, oldMemberFields, nil) - // oldMember.Level = GuildMemberLevelDefault - //} - // - //gm.updateGuildMember(guild, member.AccountId, fields, func(err error) { - // if err != nil { - // cb(ERR_CODE_UPDATE_GUILD_MEMBER_DB_FAIL, err.Error()) - // return - // } - // - // // 转让会长的操作 - // if newLevel == GuildMemberLevelLeader { - // updateFields := [][]string{ - // {"leader_account_id", q5.ToString(member.AccountId)}, - // } - // gm.updateGuild(guild, updateFields, func(err error) { - // if err != nil { - // cb(ERR_CODE_UPDATE_GUILD_DB_FAIL, err.Error()) - // return - // } - // guild.LeaderId = member.AccountId - // // 旧会长 -> 普通成员 - // oldMember := guild.GetMember(operatorAccountId) - // oldMemberFields := [][]string{{"level", q5.ToString(GuildMemberLevelDefault)}} - // gm.updateGuildMember(guild, oldMember.AccountId, oldMemberFields, - // func(err error) { - // if err != nil { - // cb(ERR_CODE_UPDATE_GUILD_MEMBER_DB_FAIL, err.Error()) - // return - // } - // oldMember.Level = GuildMemberLevelDefault - // }) - // }) - // } - // - // newMemberFields := [][]string{{"level", q5.ToString(newLevel)}} - // gm.updateGuildMember(guild, member.AccountId, newMemberFields, - // func(err error) { - // if err != nil { - // cb(ERR_CODE_UPDATE_GUILD_MEMBER_DB_FAIL, err.Error()) - // return - // } - // member.Level = newLevel - // }) - // - // logContent := fmt.Sprintf("SetMemberLevel[%d-%s-%s-%d-%d]", guild.GuildId, operatorAccountId, accountId, beforeLevel, newLevel) - // gm.WriteLog(guild.GuildId, accountId, LogTypeChangeLevel, logContent) - // - // // Add event - // prop := make(map[string]string) - // prop["guild_id"] = q5.ToString(guild.GuildId) - // prop["accountId"] = q5.ToString(accountId) - // prop["beforeMemberLevel"] = q5.ToString(beforeLevel) - // prop["afterMemberLevel"] = q5.ToString(newLevel) - // prop["members_count"] = q5.ToString(guild.GetMembersCount()) - // f5.GetTgLog().AddTrackLog( - // GAME_ID, - // operatorAccountId, - // "127.0.0.1", - // EVENT_SET_MEMBER_LEVEL, - // prop, - // ) - // - // cb(ERR_CODE_OK, "SetMemberLevel OK") - //}) } // Disband 解散公会 @@ -697,44 +625,47 @@ func (gm *GuildMgr) Disband(operatorAccountId string, cb func(errCode int32, err cb(ERR_CODE_UPDATE_GUILD_DB_FAIL, err.Error(), nil) return } - fields := [][]string{{"is_leave_guild", q5.ToString(1)}} - gm.updateGuildMembers(guildId, fields, func(err error) { - if err != nil { - cb(ERR_CODE_UPDATE_GUILD_MEMBER_DB_FAIL, err.Error(), nil) - return - } - gm.updateAllPendingReqs(guildId, PendingReqIsJoinGuildStatusDisband, func(err error) { - if err != nil { - cb(ERR_CODE_UPDATE_GUILD_PENDING_REQUEST_DB_FAIL, err.Error(), nil) - return - } - logContent := fmt.Sprintf("GuildDisbanded[%d-%s]", guildId, guildName) - gm.WriteLog(guildId, operatorAccountId, LogTypeDisband, logContent) - - // delete user guilds - for _, member := range guild.Members { - delete(gm.userGuilds, member.AccountId) - } - guild.Members = nil - delete(gm.guilds, guildId) - delete(gm.guildLogs, guildId) - gm.RemoveGuild(guildId) - - // Add event - prop := make(map[string]string) - prop["guild_id"] = q5.ToString(guild.GuildId) - f5.GetTgLog().AddTrackLog( - GAME_ID, - operatorAccountId, - "127.0.0.1", - EVENT_GUILD_DISBAND, - prop, - ) - - cb(ERR_CODE_OK, "Disband ok", guild) - }) - }) }) + + updateGuildMembersFields := [][]string{{"is_leave_guild", q5.ToString(1)}} + gm.updateGuildMembers(guildId, updateGuildMembersFields, func(err error) { + if err != nil { + cb(ERR_CODE_UPDATE_GUILD_MEMBER_DB_FAIL, err.Error(), nil) + return + } + }) + + gm.updateAllPendingReqs(guildId, PendingReqIsJoinGuildStatusDisband, func(err error) { + if err != nil { + cb(ERR_CODE_UPDATE_GUILD_PENDING_REQUEST_DB_FAIL, err.Error(), nil) + return + } + }) + + logContent := fmt.Sprintf("GuildDisbanded[%d-%s]", guildId, guildName) + gm.WriteLog(guildId, operatorAccountId, LogTypeDisband, logContent) + + // delete user guilds + for _, member := range guild.Members { + delete(gm.userGuilds, member.AccountId) + } + guild.Members = nil + delete(gm.guilds, guildId) + delete(gm.guildLogs, guildId) + + // Add event + prop := make(map[string]string) + prop["guild_id"] = q5.ToString(guild.GuildId) + f5.GetTgLog().AddTrackLog( + GAME_ID, + operatorAccountId, + "127.0.0.1", + EVENT_GUILD_DISBAND, + prop, + ) + + cb(ERR_CODE_OK, "Disband ok", guild) + } func (gm *GuildMgr) CheckGuildAndPermission(operatorAccountId string) (*Guild, bool) { @@ -748,6 +679,15 @@ func (gm *GuildMgr) CheckGuildAndPermission(operatorAccountId string) (*Guild, b return guild, true } +func (gm *GuildMgr) CheckGuildNameUnique(newName *string) bool { + for _, g := range gm.guilds { + if g.Name == *newName { + return false + } + } + return true +} + func (gm *GuildMgr) SetAvatar(operatorAccountId string, avatar int32, cb func(errCode int32, errMsg string)) { guild, ok := gm.CheckGuildAndPermission(operatorAccountId) if !ok || guild.Avatar == avatar { @@ -775,11 +715,9 @@ func (gm *GuildMgr) SetName(player *Player, name *string, itemId, itemNum int32, cb(ERR_CODE_REQUEST_PARAMS_ERROR, "params is null") return } - for _, g := range gm.guilds { - if g.Name == *name { - cb(ERR_CODE_GUILD_SETNAME_DUPLICATE_NAMES, "Duplicate guild names") - return - } + if !gm.CheckGuildNameUnique(name) { + cb(ERR_CODE_GUILD_SETNAME_DUPLICATE_NAMES, "Duplicate guild names") + return } // 扣消耗 @@ -960,25 +898,28 @@ func (gm *GuildMgr) SearchGuild(sinceId int64, name string, cb func(errCode int3 // RandomGuilds 随机10个公会 func (gm *GuildMgr) RandomGuilds() []*Guild { - count := len(gm.guilds) - - var results []*Guild - if count <= RandomGuildCount { - for _, guildId := range gm.guildIds { - results = append(results, gm.guilds[guildId]) + if len(gm.guilds) <= RandomGuildCount { + var guilds []*Guild + for _, guild := range gm.guilds { + guilds = append(guilds, guild) } - return results + return guilds } - for i := 0; i < RandomGuildCount; i++ { - j := rand.Intn(len(gm.guildIds)) - gm.guildIds[i], gm.guildIds[j] = gm.guildIds[j], gm.guildIds[i] + guildIds := make([]int64, 0, len(gm.guilds)) + for guildId := range gm.guilds { + guildIds = append(guildIds, guildId) } + + rand.Shuffle(len(guildIds), func(i, j int) { + guildIds[i], guildIds[j] = guildIds[j], guildIds[i] + }) + + shuffledGuilds := make([]*Guild, RandomGuildCount) for i := 0; i < RandomGuildCount; i++ { - randGuildId := gm.guildIds[i] - results = append(results, gm.guilds[randGuildId]) + shuffledGuilds[i] = gm.guilds[guildIds[i]] } - return results + return shuffledGuilds } func (gm *GuildMgr) CheckOperatorPerm(operatorMember *GuildMember, level int32) error { @@ -1004,7 +945,6 @@ func (gm *GuildMgr) RemoveUserGuild(accountId string) { func (gm *GuildMgr) AddGuild(guildId int64, guild *Guild) { if _, exists := gm.guilds[guildId]; !exists { gm.guilds[guildId] = guild - gm.guildIds = append(gm.guildIds, guildId) } } @@ -1036,28 +976,6 @@ func (gm *GuildMgr) CheckJoinGuild(accountId string) bool { return exists } -func (gm *GuildMgr) loadGuildIds() { - gm.guildIds = make([]int64, 0, len(gm.guilds)) - for guildId := range gm.guilds { - gm.guildIds = append(gm.guildIds, guildId) - } -} - -func (gm *GuildMgr) RemoveGuild(guildId int64) { - guildIndex := -1 - for i, gId := range gm.guildIds { - if gId == guildId { - guildIndex = i - } - } - if guildIndex < 0 { - return - } - copy(gm.guildIds[guildIndex:], gm.guildIds[guildIndex+1:]) - gm.guildIds[len(gm.guildIds)-1] = 0 - gm.guildIds = gm.guildIds[:len(gm.guildIds)-1] -} - func (gm *GuildMgr) GetGuildLogs(guildId int64) []*GuildLog { if logs, exists := gm.guildLogs[guildId]; exists { return logs diff --git a/server/imserver/player.go b/server/imserver/player.go index 975e73d8..c0a3878e 100644 --- a/server/imserver/player.go +++ b/server/imserver/player.go @@ -246,10 +246,10 @@ func (p *Player) CMRemoveBlacklist(hdr *f5.MsgHdr, msg *cs.CMRemoveBlacklist) { // CMSendChatMsg 发送聊天消息 func (p *Player) CMSendChatMsg(hdr *f5.MsgHdr, msg *cs.CMSendChatMsg) { - // p.chatChannel := *msg.ChatChannel if !IsValidChatChannel(msg.GetChatChannel()) { return } + switch msg.GetChatChannel() { case kCCWorld: chatMgr.ProcWorldChat(p, msg) From 2180f94d30e3a3dbafc6eb781519f8d3d16f186f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Fri, 22 Sep 2023 16:11:04 +0800 Subject: [PATCH 7/8] save --- server/imserver/chatmgr.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/imserver/chatmgr.go b/server/imserver/chatmgr.go index 0702d1cc..ce6c3532 100644 --- a/server/imserver/chatmgr.go +++ b/server/imserver/chatmgr.go @@ -119,9 +119,10 @@ func (cm *ChatMgr) ProcGuildChat(p *Player, msg *cs.CMSendChatMsg) { if msgRec, exists := cm.guildMsgRec[guildId]; exists { msgRec.AddChatMsg(chatMsg) } else { - cm.guildMsgRec[guildId] = &ChatMsgRec{ - CurrID: cm.guildMsgId, - } + newMsgRec := &ChatMsgRec{} + newMsgRec.CurrID = cm.guildMsgId + newMsgRec.AddChatMsg(chatMsg) + cm.guildMsgRec[guildId] = newMsgRec } // TraverseMember From dc5f66dbb5714e55e9d81ddf742d82b21d172228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Fri, 22 Sep 2023 17:03:27 +0800 Subject: [PATCH 8/8] save --- server/imserver/cs/cs_proto.pb.go | 471 ++++++++++++++------------- server/imserver/guildmgr.go | 1 - server/imserver/player.go | 4 +- server/imserver/proto/cs_proto.proto | 5 +- 4 files changed, 241 insertions(+), 240 deletions(-) diff --git a/server/imserver/cs/cs_proto.pb.go b/server/imserver/cs/cs_proto.pb.go index 6dac69d4..a5edd64a 100644 --- a/server/imserver/cs/cs_proto.pb.go +++ b/server/imserver/cs/cs_proto.pb.go @@ -2665,7 +2665,6 @@ type MFChatUser struct { GuildLevel *int32 `protobuf:"varint,7,opt,name=guild_level,json=guildLevel" json:"guild_level,omitempty"` OnlineStatus *int32 `protobuf:"varint,8,opt,name=online_status,json=onlineStatus" json:"online_status,omitempty"` LastLoginTime *int32 `protobuf:"varint,9,opt,name=last_login_time,json=lastLoginTime" json:"last_login_time,omitempty"` - IsSysUser *int32 `protobuf:"varint,10,opt,name=is_sys_user,json=isSysUser" json:"is_sys_user,omitempty"` //是否系统用户(主要在聊天时判断) } func (x *MFChatUser) Reset() { @@ -2763,19 +2762,14 @@ func (x *MFChatUser) GetLastLoginTime() int32 { return 0 } -func (x *MFChatUser) GetIsSysUser() int32 { - if x != nil && x.IsSysUser != nil { - return *x.IsSysUser - } - return 0 -} - // --- 公会 --- -// 请求我的公会信息 +// 请求公会信息 type CMGuildInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + AccountId *string `protobuf:"bytes,1,opt,name=accountId" json:"accountId,omitempty"` } func (x *CMGuildInfo) Reset() { @@ -2810,6 +2804,13 @@ func (*CMGuildInfo) Descriptor() ([]byte, []int) { return file_cs_proto_proto_rawDescGZIP(), []int{45} } +func (x *CMGuildInfo) GetAccountId() string { + if x != nil && x.AccountId != nil { + return *x.AccountId + } + return "" +} + // 回复我的公会信息 type SMGuildInfo struct { state protoimpl.MessageState @@ -5642,7 +5643,7 @@ var file_cs_proto_proto_rawDesc = []byte{ 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x0a, 0x4d, 0x46, 0x43, + 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa8, 0x02, 0x0a, 0x0a, 0x4d, 0x46, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, @@ -5661,88 +5662,43 @@ var file_cs_proto_proto_rawDesc = []byte{ 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x73, 0x79, 0x73, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x73, 0x53, 0x79, 0x73, 0x55, - 0x73, 0x65, 0x72, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x62, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x6d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, - 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x80, - 0x01, 0x0a, 0x14, 0x53, 0x4d, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x36, 0x0a, 0x10, 0x72, 0x65, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, - 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, - 0x73, 0x22, 0x3b, 0x0a, 0x0d, 0x43, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, - 0x6c, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x64, - 0x0a, 0x0d, 0x53, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, + 0x69, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x0b, 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x22, 0x62, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x22, 0x2b, 0x0a, 0x0e, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, - 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, - 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, - 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x7f, 0x0a, 0x14, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, - 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x0b, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x22, 0x3d, 0x0a, 0x09, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, - 0x67, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x4a, - 0x6f, 0x69, 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, - 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x43, 0x4d, 0x52, 0x65, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x08, 0x53, 0x4d, 0x52, 0x65, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x75, 0x69, 0x6c, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x80, 0x01, 0x0a, + 0x14, 0x53, 0x4d, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x36, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x0f, + 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22, + 0x3b, 0x0a, 0x0d, 0x43, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x64, 0x0a, 0x0d, + 0x53, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, + 0x21, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x67, 0x75, 0x69, + 0x6c, 0x64, 0x22, 0x2b, 0x0a, 0x0e, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, + 0x42, 0x0a, 0x0e, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x6d, 0x73, 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, - 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x7d, 0x0a, 0x12, 0x53, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x6d, 0x73, 0x67, 0x22, 0x7f, 0x0a, 0x14, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, @@ -5750,163 +5706,208 @@ var file_cs_proto_proto_rawDesc = []byte{ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x0f, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, - 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, - 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0f, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x80, 0x01, 0x0a, 0x15, 0x53, 0x4d, 0x44, - 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x43, - 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x28, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x44, 0x0a, 0x10, 0x53, - 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x0b, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, + 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, + 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x22, 0x3d, 0x0a, 0x09, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x30, + 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, + 0x83, 0x01, 0x0a, 0x18, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x4a, 0x6f, 0x69, + 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x43, 0x4d, 0x52, 0x65, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x08, 0x53, 0x4d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, - 0x67, 0x22, 0xa3, 0x01, 0x0a, 0x16, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x4d, 0x47, 0x75, 0x69, - 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x73, 0x0a, - 0x12, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, - 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x22, 0x0b, 0x0a, 0x09, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x22, - 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, - 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x3f, - 0x0a, 0x0e, 0x43, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, - 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x82, 0x01, 0x0a, 0x0e, 0x53, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, - 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, - 0x72, 0x6d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x23, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, 0x67, 0x75, - 0x69, 0x6c, 0x64, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, - 0x6f, 0x67, 0x73, 0x22, 0x6d, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, - 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, - 0x72, 0x6d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, - 0x67, 0x73, 0x22, 0x7b, 0x0a, 0x0a, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, + 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x22, 0x7d, 0x0a, 0x12, 0x53, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, + 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, + 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x0f, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x22, 0x43, 0x0a, 0x0f, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x80, 0x01, 0x0a, 0x15, 0x53, 0x4d, 0x44, 0x69, 0x73, + 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, - 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x6f, - 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, - 0x53, 0x0a, 0x09, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x74, 0x65, - 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x74, 0x65, - 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, + 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x43, 0x4d, 0x53, + 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, + 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x44, 0x0a, 0x10, 0x53, 0x4d, 0x53, + 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, + 0xa3, 0x01, 0x0a, 0x16, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, + 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, + 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x73, 0x0a, 0x12, 0x53, + 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x22, 0x0b, 0x0a, 0x09, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x22, 0x3d, 0x0a, + 0x09, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, + 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x3f, 0x0a, 0x0e, + 0x43, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x19, + 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, + 0x0a, 0x0e, 0x53, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, + 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, + 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, + 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, + 0x73, 0x22, 0x6d, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, + 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, + 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, + 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, + 0x22, 0x7b, 0x0a, 0x0a, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x19, + 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x53, 0x0a, + 0x09, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, + 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, + 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4e, + 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, 0x65, + 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x0b, 0x43, 0x4d, 0x53, + 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x6d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, - 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, - 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, - 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x0b, 0x43, - 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x4d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, - 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, - 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x54, 0x0a, 0x0d, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4a, 0x6f, - 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, - 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, - 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, - 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x0d, 0x53, - 0x4d, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, - 0x72, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x9c, - 0x03, 0x0a, 0x07, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x75, - 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x75, 0x74, - 0x6f, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, - 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0f, - 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x53, 0x74, 0x61, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6b, - 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x65, - 0x6e, 0x5f, 0x64, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x44, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x12, - 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x8e, 0x02, - 0x0a, 0x0d, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, - 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, - 0x61, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x48, - 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, - 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, - 0x61, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x2a, 0x22, - 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x65, 0x12, 0x14, 0x0a, 0x0c, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0xd1, 0xa2, 0xd5, - 0xc4, 0x07, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x63, 0x73, + 0x6d, 0x73, 0x67, 0x22, 0x54, 0x0a, 0x0d, 0x43, 0x4d, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, + 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, + 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, + 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x0d, 0x53, 0x4d, 0x53, + 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, + 0x72, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x22, 0x9c, 0x03, 0x0a, + 0x07, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x6f, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x75, 0x74, 0x6f, 0x49, + 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, + 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6b, 0x69, 0x6c, + 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4b, + 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x5f, + 0x64, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, + 0x68, 0x69, 0x63, 0x6b, 0x65, 0x6e, 0x44, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, + 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2b, + 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x8e, 0x02, 0x0a, 0x0d, + 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x48, 0x65, 0x61, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x2a, 0x22, 0x0a, 0x0a, + 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x65, 0x12, 0x14, 0x0a, 0x0c, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0xd1, 0xa2, 0xd5, 0xc4, 0x07, + 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x63, 0x73, } var ( diff --git a/server/imserver/guildmgr.go b/server/imserver/guildmgr.go index ecac0db2..38c37399 100644 --- a/server/imserver/guildmgr.go +++ b/server/imserver/guildmgr.go @@ -665,7 +665,6 @@ func (gm *GuildMgr) Disband(operatorAccountId string, cb func(errCode int32, err ) cb(ERR_CODE_OK, "Disband ok", guild) - } func (gm *GuildMgr) CheckGuildAndPermission(operatorAccountId string) (*Guild, bool) { diff --git a/server/imserver/player.go b/server/imserver/player.go index c0a3878e..2964c9f4 100644 --- a/server/imserver/player.go +++ b/server/imserver/player.go @@ -315,10 +315,10 @@ func IsValidChatChannel(chatChannel int32) bool { return chatChannel > kCCBegin && chatChannel < kCCEnd } -// CMGuildInfo 我的公会信息 +// CMGuildInfo 公会信息 func (p *Player) CMGuildInfo(hdr *f5.MsgHdr, msg *cs.CMGuildInfo) { rspMsg := new(cs.SMGuildInfo) - guild := guildMgr.GetGuildByAccountId(p.accountId) + guild := guildMgr.GetGuildByAccountId(msg.GetAccountId()) if guild != nil { rspMsg.Guild = p.FillMFGuild(guild) } diff --git a/server/imserver/proto/cs_proto.proto b/server/imserver/proto/cs_proto.proto index ffe28e13..40f8c2cb 100644 --- a/server/imserver/proto/cs_proto.proto +++ b/server/imserver/proto/cs_proto.proto @@ -373,12 +373,13 @@ message MFChatUser{ } // --- 公会 --- -// 请求我的公会信息 +// 请求公会信息 message CMGuildInfo { + optional string accountId = 1; } -// 回复我的公会信息 +// 回复公会信息 message SMGuildInfo { optional int32 errcode = 1;