Merge branch 'tuoyun' of github.com:OpenIMSDK/Open-IM-Server into tuoyun

pull/218/head
wangchuxiao 3 years ago
commit db9762c5b2

@ -129,6 +129,7 @@ func main() {
conversationGroup.POST("/set_conversation", conversation.SetConversation) conversationGroup.POST("/set_conversation", conversation.SetConversation)
conversationGroup.POST("/batch_set_conversation", conversation.BatchSetConversations) conversationGroup.POST("/batch_set_conversation", conversation.BatchSetConversations)
conversationGroup.POST("/set_recv_msg_opt", conversation.SetRecvMsgOpt) conversationGroup.POST("/set_recv_msg_opt", conversation.SetRecvMsgOpt)
conversationGroup.POST("/modify_conversation_field", conversation.ModifyConversationField)
} }
// office // office
officeGroup := r.Group("/office") officeGroup := r.Group("/office")

@ -5,6 +5,7 @@ import (
"Open_IM/pkg/common/config" "Open_IM/pkg/common/config"
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
"Open_IM/pkg/grpc-etcdv3/getcdv3" "Open_IM/pkg/grpc-etcdv3/getcdv3"
pbConversation "Open_IM/pkg/proto/conversation"
pbUser "Open_IM/pkg/proto/user" pbUser "Open_IM/pkg/proto/user"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
@ -44,6 +45,37 @@ func SetConversation(c *gin.Context) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp) c.JSON(http.StatusOK, resp)
} }
func ModifyConversationField(c *gin.Context) {
var (
req api.ModifyConversationFieldReq
resp api.ModifyConversationFieldResp
reqPb pbConversation.ModifyConversationFieldReq
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
reqPb.Conversation = &pbConversation.Conversation{}
err := utils.CopyStructFields(&reqPb, req)
err = utils.CopyStructFields(reqPb.Conversation, req.Conversation)
if err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName)
client := pbConversation.NewConversationClient(etcdConn)
respPb, err := client.ModifyConversationField(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()})
return
}
resp.ErrMsg = respPb.CommonResp.ErrMsg
resp.ErrCode = respPb.CommonResp.ErrCode
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
func BatchSetConversations(c *gin.Context) { func BatchSetConversations(c *gin.Context) {
var ( var (

@ -1,11 +1,11 @@
package conversation package conversation
import ( import (
chat "Open_IM/internal/rpc/msg"
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/constant"
_ "Open_IM/pkg/common/db" "Open_IM/pkg/common/db"
_ "Open_IM/pkg/common/db/mysql_model/im_mysql_model" imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model"
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
_ "Open_IM/pkg/common/token_verify"
"Open_IM/pkg/grpc-etcdv3/getcdv3" "Open_IM/pkg/grpc-etcdv3/getcdv3"
pbConversation "Open_IM/pkg/proto/conversation" pbConversation "Open_IM/pkg/proto/conversation"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
@ -27,9 +27,104 @@ type rpcConversation struct {
} }
func (rpc *rpcConversation) ModifyConversationField(c context.Context, req *pbConversation.ModifyConversationFieldReq) (*pbConversation.ModifyConversationFieldResp, error) { func (rpc *rpcConversation) ModifyConversationField(c context.Context, req *pbConversation.ModifyConversationFieldReq) (*pbConversation.ModifyConversationFieldResp, error) {
panic("implement me") log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
resp := &pbConversation.ModifyConversationFieldResp{}
var err error
if req.Conversation.ConversationType == constant.GroupChatType {
groupInfo, err := imdb.GetGroupInfoByGroupID(req.Conversation.GroupID)
if err != nil {
log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.Conversation.GroupID, err.Error())
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
return resp, nil
}
if groupInfo.Status == constant.GroupStatusDismissed && !req.Conversation.IsNotInGroup {
errMsg := "group status is dismissed"
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}
return resp, nil
}
}
var conversation db.Conversation
if err := utils.CopyStructFields(&conversation, req.Conversation); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", *req.Conversation, err.Error())
}
haveUserID, _ := imdb.GetExistConversationUserIDList(req.Conversation.ConversationID)
switch req.FieldType {
case constant.FieldRecvMsgOpt:
for _, v := range req.UserIDList {
if err = db.DB.SetSingleConversationRecvMsgOpt(v, req.Conversation.ConversationID, req.Conversation.RecvMsgOpt); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error())
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
return resp, nil
}
}
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt})
case constant.FieldGroupAtType:
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"group_at_type": conversation.GroupAtType})
case constant.FieldIsNotInGroup:
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"is_not_in_group": conversation.IsNotInGroup})
case constant.FieldIsPinned:
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"is_pinned": conversation.IsPinned})
case constant.FieldIsPrivateChat:
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"is_private_chat": conversation.IsPrivateChat})
case constant.FieldEx:
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"ex": conversation.Ex})
case constant.FieldAttachedInfo:
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"attached_info": conversation.AttachedInfo})
}
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateColumnsConversations error", err.Error())
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
return resp, nil
}
for _, v := range utils.DifferenceString(haveUserID, req.UserIDList) {
conversation.OwnerUserID = v
err := imdb.SetOneConversation(conversation)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation error", err.Error())
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
return resp, nil
}
}
// notification
if req.Conversation.ConversationType == constant.SingleChatType && req.FieldType == constant.FieldIsPrivateChat {
//sync peer user conversation if conversation is singleChatType
if err := syncPeerUserConversation(req.Conversation, req.OperationID); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "syncPeerUserConversation", err.Error())
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
return resp, nil
}
} else {
for _, v := range req.UserIDList {
chat.ConversationChangeNotification(req.OperationID, v)
}
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return", resp.String())
resp.CommonResp = &pbConversation.CommonResp{}
return resp, nil
}
func syncPeerUserConversation(conversation *pbConversation.Conversation, operationID string) error {
peerUserConversation := db.Conversation{
OwnerUserID: conversation.UserID,
ConversationID: utils.GetConversationIDBySessionType(conversation.OwnerUserID, constant.SingleChatType),
ConversationType: constant.SingleChatType,
UserID: conversation.OwnerUserID,
GroupID: "",
RecvMsgOpt: 0,
UnreadCount: 0,
DraftTextTime: 0,
IsPinned: false,
IsPrivateChat: conversation.IsPrivateChat,
AttachedInfo: "",
Ex: "",
}
err := imdb.PeerUserSetConversation(peerUserConversation)
if err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), "SetConversation error", err.Error())
return err
}
chat.ConversationSetPrivateNotification(operationID, conversation.OwnerUserID, conversation.UserID, conversation.IsPrivateChat)
return nil
} }
func NewRpcConversationServer(port int) *rpcConversation { func NewRpcConversationServer(port int) *rpcConversation {
log.NewPrivateLog(constant.LogFileName) log.NewPrivateLog(constant.LogFileName)
return &rpcConversation{ return &rpcConversation{

@ -7,6 +7,7 @@ import (
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
"Open_IM/pkg/grpc-etcdv3/getcdv3" "Open_IM/pkg/grpc-etcdv3/getcdv3"
pbChat "Open_IM/pkg/proto/chat" pbChat "Open_IM/pkg/proto/chat"
pbConversation "Open_IM/pkg/proto/conversation"
rpc "Open_IM/pkg/proto/friend" rpc "Open_IM/pkg/proto/friend"
pbGroup "Open_IM/pkg/proto/group" pbGroup "Open_IM/pkg/proto/group"
sdk_ws "Open_IM/pkg/proto/sdk_ws" sdk_ws "Open_IM/pkg/proto/sdk_ws"
@ -227,6 +228,12 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S
log.Error(pb.Token, pb.OperationID, "rpc send_msg getGroupInfo failed, err = %s", reply.ErrMsg) log.Error(pb.Token, pb.OperationID, "rpc send_msg getGroupInfo failed, err = %s", reply.ErrMsg)
return returnMsg(&replay, pb, reply.ErrCode, reply.ErrMsg, "", 0) return returnMsg(&replay, pb, reply.ErrCode, reply.ErrMsg, "", 0)
} }
memberUserIDList := func(all []*sdk_ws.GroupMemberFullInfo) (result []string) {
for _, v := range all {
result = append(result, v.UserID)
}
return result
}(reply.MemberList)
var addUidList []string var addUidList []string
switch pb.MsgData.ContentType { switch pb.MsgData.ContentType {
case constant.MemberKickedNotification: case constant.MemberKickedNotification:
@ -247,31 +254,66 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S
case constant.MemberQuitNotification: case constant.MemberQuitNotification:
addUidList = append(addUidList, pb.MsgData.SendID) addUidList = append(addUidList, pb.MsgData.SendID)
case constant.AtText: case constant.AtText:
//tagMe := utils.IsContain(c.loginUserID, s.AtElem.AtUserList) go func() {
//tagAll := utils.IsContain(constant.AtAllString, pb.MsgData.AtUserIDList) var conversationReq pbConversation.ModifyConversationFieldReq
//if tagAll { var tag bool
// if tagMe { var atUserID []string
// lc.GroupAtType = constant.AtAllAtMe conversation := pbConversation.Conversation{
// return OwnerUserID: pb.MsgData.SendID,
// } ConversationID: utils.GetConversationIDBySessionType(pb.MsgData.GroupID, constant.GroupChatType),
// lc.GroupAtType = constant.AtAll ConversationType: constant.GroupChatType,
// return GroupID: pb.MsgData.GroupID,
//} }
//if tagMe { conversationReq.Conversation = &conversation
// lc.GroupAtType = constant.AtMe conversationReq.OperationID = pb.OperationID
//} conversationReq.FieldType = constant.FieldGroupAtType
tagAll := utils.IsContain(constant.AtAllString, pb.MsgData.AtUserIDList)
if tagAll {
atUserID = utils.DifferenceString([]string{constant.AtAllString}, pb.MsgData.AtUserIDList)
if len(atUserID) == 0 { //just @everyone
conversationReq.UserIDList = memberUserIDList
conversation.GroupAtType = constant.AtAll
} else { //@Everyone and @other people
conversationReq.UserIDList = atUserID
conversation.GroupAtType = constant.AtAllAtMe
tag = true
}
} else {
conversationReq.UserIDList = pb.MsgData.AtUserIDList
conversation.GroupAtType = constant.AtMe
}
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName)
client := pbConversation.NewConversationClient(etcdConn)
conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq)
if err != nil {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), err.Error())
} else if conversationReply.CommonResp.ErrCode != 0 {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String())
}
if tag {
conversationReq.UserIDList = utils.DifferenceString(atUserID, memberUserIDList)
conversation.GroupAtType = constant.AtAll
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName)
client := pbConversation.NewConversationClient(etcdConn)
conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq)
if err != nil {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), err.Error())
} else if conversationReply.CommonResp.ErrCode != 0 {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String())
}
}
}()
default: default:
} }
groupID := pb.MsgData.GroupID groupID := pb.MsgData.GroupID
for _, v := range reply.MemberList { for _, v := range memberUserIDList {
pb.MsgData.RecvID = v.UserID pb.MsgData.RecvID = v
isSend := modifyMessageByUserMessageReceiveOpt(v.UserID, groupID, constant.GroupChatType, pb) isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, pb)
if isSend { if isSend {
msgToMQ.MsgData = pb.MsgData msgToMQ.MsgData = pb.MsgData
err := rpc.sendMsgToKafka(&msgToMQ, v.UserID) err := rpc.sendMsgToKafka(&msgToMQ, v)
if err != nil { if err != nil {
log.NewError(msgToMQ.OperationID, "kafka send msg err:UserId", v.UserID, msgToMQ.String()) log.NewError(msgToMQ.OperationID, "kafka send msg err:UserId", v, msgToMQ.String())
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
} }
} }

@ -58,6 +58,15 @@ type SetConversationReq struct {
type SetConversationResp struct { type SetConversationResp struct {
CommResp CommResp
} }
type ModifyConversationFieldReq struct {
Conversation
FieldType int32 `json:"fieldType" binding:"required"`
UserIDList []string `json:"userIDList" binding:"required"`
OperationID string `json:"operationID" binding:"required"`
}
type ModifyConversationFieldResp struct {
CommResp
}
type BatchSetConversationsReq struct { type BatchSetConversationsReq struct {
Conversations []Conversation `json:"conversations" binding:"required"` Conversations []Conversation `json:"conversations" binding:"required"`

@ -214,6 +214,16 @@ var ContentType2PushContent = map[int64]string{
Common: "你收到一条新消息", Common: "你收到一条新消息",
} }
const (
FieldRecvMsgOpt = 1
FieldIsPinned = 2
FieldAttachedInfo = 3
FieldIsPrivateChat = 4
FieldGroupAtType = 5
FieldIsNotInGroup = 6
FieldEx = 7
)
const ( const (
AppOrdinaryUsers = 1 AppOrdinaryUsers = 1
AppAdmin = 2 AppAdmin = 2

@ -0,0 +1,145 @@
package im_mysql_model
import (
"Open_IM/pkg/common/db"
"Open_IM/pkg/common/log"
"Open_IM/pkg/utils"
)
func SetConversation(conversation db.Conversation) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(false)
newConversation := conversation
if dbConn.Model(&db.Conversation{}).Find(&newConversation).RowsAffected == 0 {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "not exist in db, create")
return dbConn.Model(&db.Conversation{}).Create(conversation).Error
// if exist, then update record
} else {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update")
//force update
return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID).
Update(map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt, "is_pinned": conversation.IsPinned, "is_private_chat": conversation.IsPrivateChat,
"group_at_type": conversation.GroupAtType, "is_not_in_group": conversation.IsNotInGroup}).Error
}
}
func SetOneConversation(conversation db.Conversation) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(false)
return dbConn.Model(&db.Conversation{}).Create(conversation).Error
}
func PeerUserSetConversation(conversation db.Conversation) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(false)
newConversation := conversation
if dbConn.Model(&db.Conversation{}).Find(&newConversation).RowsAffected == 0 {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "not exist in db, create")
return dbConn.Model(&db.Conversation{}).Create(conversation).Error
// if exist, then update record
}
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update")
//force update
return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID).
Update(map[string]interface{}{"is_private_chat": conversation.IsPrivateChat}).Error
}
func SetRecvMsgOpt(conversation db.Conversation) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(false)
newConversation := conversation
if dbConn.Model(&db.Conversation{}).Find(&newConversation).RowsAffected == 0 {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "not exist in db, create")
return dbConn.Model(&db.Conversation{}).Create(conversation).Error
// if exist, then update record
} else {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update")
//force update
return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID).
Update(map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt}).Error
}
}
func GetUserAllConversations(ownerUserID string) ([]db.Conversation, error) {
var conversations []db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversations, err
}
dbConn.LogMode(false)
err = dbConn.Model(&db.Conversation{}).Where("owner_user_id=?", ownerUserID).Find(&conversations).Error
return conversations, err
}
func GetMultipleUserConversationByConversationID(ownerUserIDList []string, conversationID string) ([]db.Conversation, error) {
var conversations []db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversations, err
}
dbConn.LogMode(false)
err = dbConn.Model(&db.Conversation{}).Where("owner_user_id IN ? and conversation_id=?", ownerUserIDList, conversationID).Find(&conversations).Error
return conversations, err
}
func GetExistConversationUserIDList(conversationID string) ([]string, error) {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return nil, err
}
var resultArr []string
err = dbConn.Table("conversations").Where(" conversation_id=?", conversationID).Pluck("owner_user_id", &resultArr).Error
if err != nil {
return nil, err
}
return resultArr, nil
}
func GetConversation(OwnerUserID, conversationID string) (db.Conversation, error) {
var conversation db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversation, err
}
err = dbConn.Table("conversations").Where("owner_user_id=? and conversation_id=?", OwnerUserID, conversationID).Take(&conversation).Error
return conversation, err
}
func GetConversations(OwnerUserID string, conversationIDs []string) ([]db.Conversation, error) {
var conversations []db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversations, err
}
err = dbConn.Model(&db.Conversation{}).Where("conversation_id IN (?) and owner_user_id=?", conversationIDs, OwnerUserID).Find(&conversations).Error
return conversations, err
}
func GetConversationsByConversationIDMultipleOwner(OwnerUserIDList []string, conversationID string) ([]db.Conversation, error) {
var conversations []db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversations, err
}
err = dbConn.Model(&db.Conversation{}).Where("owner_user_id IN (?) and conversation_id=?", OwnerUserIDList, conversationID).Find(&conversations).Error
return conversations, err
}
func UpdateColumnsConversations(ownerUserIDList []string, conversationID string, args map[string]interface{}) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(false)
return dbConn.Model(&db.Conversation{}).Where("owner_user_id IN ? and conversation_id=?", ownerUserIDList, conversationID).Updates(args).Error
}

@ -4,7 +4,6 @@ import (
"Open_IM/pkg/common/config" "Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db" "Open_IM/pkg/common/db"
"Open_IM/pkg/common/log"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"fmt" "fmt"
"time" "time"
@ -305,101 +304,3 @@ func GetBlockUsersNumCount() (int32, error) {
} }
return count, nil return count, nil
} }
func SetConversation(conversation db.Conversation) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(false)
newConversation := conversation
if dbConn.Model(&db.Conversation{}).Find(&newConversation).RowsAffected == 0 {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "not exist in db, create")
return dbConn.Model(&db.Conversation{}).Create(conversation).Error
// if exist, then update record
} else {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update")
//force update
return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID).
Update(map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt, "is_pinned": conversation.IsPinned, "is_private_chat": conversation.IsPrivateChat,
"group_at_type": conversation.GroupAtType, "is_not_in_group": conversation.IsNotInGroup}).Error
}
}
func PeerUserSetConversation(conversation db.Conversation) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(false)
newConversation := conversation
if dbConn.Model(&db.Conversation{}).Find(&newConversation).RowsAffected == 0 {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "not exist in db, create")
return dbConn.Model(&db.Conversation{}).Create(conversation).Error
// if exist, then update record
}
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update")
//force update
return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID).
Update(map[string]interface{}{"is_private_chat": conversation.IsPrivateChat}).Error
}
func SetRecvMsgOpt(conversation db.Conversation) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(false)
newConversation := conversation
if dbConn.Model(&db.Conversation{}).Find(&newConversation).RowsAffected == 0 {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "not exist in db, create")
return dbConn.Model(&db.Conversation{}).Create(conversation).Error
// if exist, then update record
} else {
log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update")
//force update
return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID).
Update(map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt}).Error
}
}
func GetUserAllConversations(ownerUserID string) ([]db.Conversation, error) {
var conversations []db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversations, err
}
dbConn.LogMode(false)
err = dbConn.Model(&db.Conversation{}).Where("owner_user_id=?", ownerUserID).Find(&conversations).Error
return conversations, err
}
func GetConversation(OwnerUserID, conversationID string) (db.Conversation, error) {
var conversation db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversation, err
}
err = dbConn.Table("conversations").Where("owner_user_id=? and conversation_id=?", OwnerUserID, conversationID).Take(&conversation).Error
return conversation, err
}
func GetConversations(OwnerUserID string, conversationIDs []string) ([]db.Conversation, error) {
var conversations []db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversations, err
}
err = dbConn.Model(&db.Conversation{}).Where("conversation_id IN (?) and owner_user_id=?", conversationIDs, OwnerUserID).Find(&conversations).Error
return conversations, err
}
func GetConversationsByConversationIDMultipleOwner(OwnerUserIDList []string, conversationID string) ([]db.Conversation, error) {
var conversations []db.Conversation
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return conversations, err
}
err = dbConn.Model(&db.Conversation{}).Where("owner_user_id IN (?) and conversation_id=?", OwnerUserIDList, conversationID).Find(&conversations).Error
return conversations, err
}

@ -40,7 +40,7 @@ func (m *GroupInfo) Reset() { *m = GroupInfo{} }
func (m *GroupInfo) String() string { return proto.CompactTextString(m) } func (m *GroupInfo) String() string { return proto.CompactTextString(m) }
func (*GroupInfo) ProtoMessage() {} func (*GroupInfo) ProtoMessage() {}
func (*GroupInfo) Descriptor() ([]byte, []int) { func (*GroupInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{0} return fileDescriptor_ws_8b0ea2633e539530, []int{0}
} }
func (m *GroupInfo) XXX_Unmarshal(b []byte) error { func (m *GroupInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupInfo.Unmarshal(m, b) return xxx_messageInfo_GroupInfo.Unmarshal(m, b)
@ -165,7 +165,7 @@ func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} }
func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) }
func (*GroupMemberFullInfo) ProtoMessage() {} func (*GroupMemberFullInfo) ProtoMessage() {}
func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{1} return fileDescriptor_ws_8b0ea2633e539530, []int{1}
} }
func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b)
@ -277,7 +277,7 @@ func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} }
func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) }
func (*PublicUserInfo) ProtoMessage() {} func (*PublicUserInfo) ProtoMessage() {}
func (*PublicUserInfo) Descriptor() ([]byte, []int) { func (*PublicUserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{2} return fileDescriptor_ws_8b0ea2633e539530, []int{2}
} }
func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b)
@ -352,7 +352,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} }
func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (m *UserInfo) String() string { return proto.CompactTextString(m) }
func (*UserInfo) ProtoMessage() {} func (*UserInfo) ProtoMessage() {}
func (*UserInfo) Descriptor() ([]byte, []int) { func (*UserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{3} return fileDescriptor_ws_8b0ea2633e539530, []int{3}
} }
func (m *UserInfo) XXX_Unmarshal(b []byte) error { func (m *UserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfo.Unmarshal(m, b) return xxx_messageInfo_UserInfo.Unmarshal(m, b)
@ -459,7 +459,7 @@ func (m *FriendInfo) Reset() { *m = FriendInfo{} }
func (m *FriendInfo) String() string { return proto.CompactTextString(m) } func (m *FriendInfo) String() string { return proto.CompactTextString(m) }
func (*FriendInfo) ProtoMessage() {} func (*FriendInfo) ProtoMessage() {}
func (*FriendInfo) Descriptor() ([]byte, []int) { func (*FriendInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{4} return fileDescriptor_ws_8b0ea2633e539530, []int{4}
} }
func (m *FriendInfo) XXX_Unmarshal(b []byte) error { func (m *FriendInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendInfo.Unmarshal(m, b) return xxx_messageInfo_FriendInfo.Unmarshal(m, b)
@ -544,7 +544,7 @@ func (m *BlackInfo) Reset() { *m = BlackInfo{} }
func (m *BlackInfo) String() string { return proto.CompactTextString(m) } func (m *BlackInfo) String() string { return proto.CompactTextString(m) }
func (*BlackInfo) ProtoMessage() {} func (*BlackInfo) ProtoMessage() {}
func (*BlackInfo) Descriptor() ([]byte, []int) { func (*BlackInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{5} return fileDescriptor_ws_8b0ea2633e539530, []int{5}
} }
func (m *BlackInfo) XXX_Unmarshal(b []byte) error { func (m *BlackInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackInfo.Unmarshal(m, b) return xxx_messageInfo_BlackInfo.Unmarshal(m, b)
@ -625,7 +625,7 @@ func (m *GroupRequest) Reset() { *m = GroupRequest{} }
func (m *GroupRequest) String() string { return proto.CompactTextString(m) } func (m *GroupRequest) String() string { return proto.CompactTextString(m) }
func (*GroupRequest) ProtoMessage() {} func (*GroupRequest) ProtoMessage() {}
func (*GroupRequest) Descriptor() ([]byte, []int) { func (*GroupRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{6} return fileDescriptor_ws_8b0ea2633e539530, []int{6}
} }
func (m *GroupRequest) XXX_Unmarshal(b []byte) error { func (m *GroupRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupRequest.Unmarshal(m, b) return xxx_messageInfo_GroupRequest.Unmarshal(m, b)
@ -733,7 +733,7 @@ func (m *FriendRequest) Reset() { *m = FriendRequest{} }
func (m *FriendRequest) String() string { return proto.CompactTextString(m) } func (m *FriendRequest) String() string { return proto.CompactTextString(m) }
func (*FriendRequest) ProtoMessage() {} func (*FriendRequest) ProtoMessage() {}
func (*FriendRequest) Descriptor() ([]byte, []int) { func (*FriendRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{7} return fileDescriptor_ws_8b0ea2633e539530, []int{7}
} }
func (m *FriendRequest) XXX_Unmarshal(b []byte) error { func (m *FriendRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendRequest.Unmarshal(m, b) return xxx_messageInfo_FriendRequest.Unmarshal(m, b)
@ -878,7 +878,7 @@ func (m *Department) Reset() { *m = Department{} }
func (m *Department) String() string { return proto.CompactTextString(m) } func (m *Department) String() string { return proto.CompactTextString(m) }
func (*Department) ProtoMessage() {} func (*Department) ProtoMessage() {}
func (*Department) Descriptor() ([]byte, []int) { func (*Department) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{8} return fileDescriptor_ws_8b0ea2633e539530, []int{8}
} }
func (m *Department) XXX_Unmarshal(b []byte) error { func (m *Department) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Department.Unmarshal(m, b) return xxx_messageInfo_Department.Unmarshal(m, b)
@ -989,7 +989,7 @@ func (m *OrganizationUser) Reset() { *m = OrganizationUser{} }
func (m *OrganizationUser) String() string { return proto.CompactTextString(m) } func (m *OrganizationUser) String() string { return proto.CompactTextString(m) }
func (*OrganizationUser) ProtoMessage() {} func (*OrganizationUser) ProtoMessage() {}
func (*OrganizationUser) Descriptor() ([]byte, []int) { func (*OrganizationUser) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{9} return fileDescriptor_ws_8b0ea2633e539530, []int{9}
} }
func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { func (m *OrganizationUser) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) return xxx_messageInfo_OrganizationUser.Unmarshal(m, b)
@ -1103,7 +1103,7 @@ func (m *DepartmentMember) Reset() { *m = DepartmentMember{} }
func (m *DepartmentMember) String() string { return proto.CompactTextString(m) } func (m *DepartmentMember) String() string { return proto.CompactTextString(m) }
func (*DepartmentMember) ProtoMessage() {} func (*DepartmentMember) ProtoMessage() {}
func (*DepartmentMember) Descriptor() ([]byte, []int) { func (*DepartmentMember) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{10} return fileDescriptor_ws_8b0ea2633e539530, []int{10}
} }
func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { func (m *DepartmentMember) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) return xxx_messageInfo_DepartmentMember.Unmarshal(m, b)
@ -1184,7 +1184,7 @@ func (m *UserDepartmentMember) Reset() { *m = UserDepartmentMember{} }
func (m *UserDepartmentMember) String() string { return proto.CompactTextString(m) } func (m *UserDepartmentMember) String() string { return proto.CompactTextString(m) }
func (*UserDepartmentMember) ProtoMessage() {} func (*UserDepartmentMember) ProtoMessage() {}
func (*UserDepartmentMember) Descriptor() ([]byte, []int) { func (*UserDepartmentMember) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{11} return fileDescriptor_ws_8b0ea2633e539530, []int{11}
} }
func (m *UserDepartmentMember) XXX_Unmarshal(b []byte) error { func (m *UserDepartmentMember) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserDepartmentMember.Unmarshal(m, b) return xxx_messageInfo_UserDepartmentMember.Unmarshal(m, b)
@ -1230,7 +1230,7 @@ func (m *UserInDepartment) Reset() { *m = UserInDepartment{} }
func (m *UserInDepartment) String() string { return proto.CompactTextString(m) } func (m *UserInDepartment) String() string { return proto.CompactTextString(m) }
func (*UserInDepartment) ProtoMessage() {} func (*UserInDepartment) ProtoMessage() {}
func (*UserInDepartment) Descriptor() ([]byte, []int) { func (*UserInDepartment) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{12} return fileDescriptor_ws_8b0ea2633e539530, []int{12}
} }
func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { func (m *UserInDepartment) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) return xxx_messageInfo_UserInDepartment.Unmarshal(m, b)
@ -1277,7 +1277,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe
func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) ProtoMessage() {}
func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{13} return fileDescriptor_ws_8b0ea2633e539530, []int{13}
} }
func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b)
@ -1331,7 +1331,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq
func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) ProtoMessage() {}
func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{14} return fileDescriptor_ws_8b0ea2633e539530, []int{14}
} }
func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b)
@ -1382,7 +1382,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} }
func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) ProtoMessage() {}
func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{15} return fileDescriptor_ws_8b0ea2633e539530, []int{15}
} }
func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b)
@ -1414,7 +1414,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} }
func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) ProtoMessage() {}
func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{16} return fileDescriptor_ws_8b0ea2633e539530, []int{16}
} }
func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b)
@ -1461,7 +1461,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} }
func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) ProtoMessage() {}
func (*UserSendMsgResp) Descriptor() ([]byte, []int) { func (*UserSendMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{17} return fileDescriptor_ws_8b0ea2633e539530, []int{17}
} }
func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b)
@ -1521,6 +1521,7 @@ type MsgData struct {
Status int32 `protobuf:"varint,17,opt,name=status" json:"status,omitempty"` Status int32 `protobuf:"varint,17,opt,name=status" json:"status,omitempty"`
Options map[string]bool `protobuf:"bytes,18,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` Options map[string]bool `protobuf:"bytes,18,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,19,opt,name=offlinePushInfo" json:"offlinePushInfo,omitempty"` OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,19,opt,name=offlinePushInfo" json:"offlinePushInfo,omitempty"`
AtUserIDList []string `protobuf:"bytes,20,rep,name=atUserIDList" json:"atUserIDList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -1530,7 +1531,7 @@ func (m *MsgData) Reset() { *m = MsgData{} }
func (m *MsgData) String() string { return proto.CompactTextString(m) } func (m *MsgData) String() string { return proto.CompactTextString(m) }
func (*MsgData) ProtoMessage() {} func (*MsgData) ProtoMessage() {}
func (*MsgData) Descriptor() ([]byte, []int) { func (*MsgData) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{18} return fileDescriptor_ws_8b0ea2633e539530, []int{18}
} }
func (m *MsgData) XXX_Unmarshal(b []byte) error { func (m *MsgData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgData.Unmarshal(m, b) return xxx_messageInfo_MsgData.Unmarshal(m, b)
@ -1676,7 +1677,13 @@ func (m *MsgData) GetOfflinePushInfo() *OfflinePushInfo {
return nil return nil
} }
// repeated string atUserIDList = 17; func (m *MsgData) GetAtUserIDList() []string {
if m != nil {
return m.AtUserIDList
}
return nil
}
type OfflinePushInfo struct { type OfflinePushInfo struct {
Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
Desc string `protobuf:"bytes,2,opt,name=desc" json:"desc,omitempty"` Desc string `protobuf:"bytes,2,opt,name=desc" json:"desc,omitempty"`
@ -1692,7 +1699,7 @@ func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} }
func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) } func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) }
func (*OfflinePushInfo) ProtoMessage() {} func (*OfflinePushInfo) ProtoMessage() {}
func (*OfflinePushInfo) Descriptor() ([]byte, []int) { func (*OfflinePushInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{19} return fileDescriptor_ws_8b0ea2633e539530, []int{19}
} }
func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b)
@ -1760,7 +1767,7 @@ func (m *TipsComm) Reset() { *m = TipsComm{} }
func (m *TipsComm) String() string { return proto.CompactTextString(m) } func (m *TipsComm) String() string { return proto.CompactTextString(m) }
func (*TipsComm) ProtoMessage() {} func (*TipsComm) ProtoMessage() {}
func (*TipsComm) Descriptor() ([]byte, []int) { func (*TipsComm) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{20} return fileDescriptor_ws_8b0ea2633e539530, []int{20}
} }
func (m *TipsComm) XXX_Unmarshal(b []byte) error { func (m *TipsComm) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TipsComm.Unmarshal(m, b) return xxx_messageInfo_TipsComm.Unmarshal(m, b)
@ -1817,7 +1824,7 @@ func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} }
func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) }
func (*GroupCreatedTips) ProtoMessage() {} func (*GroupCreatedTips) ProtoMessage() {}
func (*GroupCreatedTips) Descriptor() ([]byte, []int) { func (*GroupCreatedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{21} return fileDescriptor_ws_8b0ea2633e539530, []int{21}
} }
func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b)
@ -1886,7 +1893,7 @@ func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} }
func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) }
func (*GroupInfoSetTips) ProtoMessage() {} func (*GroupInfoSetTips) ProtoMessage() {}
func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { func (*GroupInfoSetTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{22} return fileDescriptor_ws_8b0ea2633e539530, []int{22}
} }
func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b)
@ -1941,7 +1948,7 @@ func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTi
func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) }
func (*JoinGroupApplicationTips) ProtoMessage() {} func (*JoinGroupApplicationTips) ProtoMessage() {}
func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{23} return fileDescriptor_ws_8b0ea2633e539530, []int{23}
} }
func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b)
@ -1997,7 +2004,7 @@ func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} }
func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) }
func (*MemberQuitTips) ProtoMessage() {} func (*MemberQuitTips) ProtoMessage() {}
func (*MemberQuitTips) Descriptor() ([]byte, []int) { func (*MemberQuitTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{24} return fileDescriptor_ws_8b0ea2633e539530, []int{24}
} }
func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b)
@ -2052,7 +2059,7 @@ func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAc
func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (*GroupApplicationAcceptedTips) ProtoMessage() {}
func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{25} return fileDescriptor_ws_8b0ea2633e539530, []int{25}
} }
func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b)
@ -2107,7 +2114,7 @@ func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRe
func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationRejectedTips) ProtoMessage() {} func (*GroupApplicationRejectedTips) ProtoMessage() {}
func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{26} return fileDescriptor_ws_8b0ea2633e539530, []int{26}
} }
func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b)
@ -2163,7 +2170,7 @@ func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferred
func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) }
func (*GroupOwnerTransferredTips) ProtoMessage() {} func (*GroupOwnerTransferredTips) ProtoMessage() {}
func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{27} return fileDescriptor_ws_8b0ea2633e539530, []int{27}
} }
func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b)
@ -2226,7 +2233,7 @@ func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} }
func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) }
func (*MemberKickedTips) ProtoMessage() {} func (*MemberKickedTips) ProtoMessage() {}
func (*MemberKickedTips) Descriptor() ([]byte, []int) { func (*MemberKickedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{28} return fileDescriptor_ws_8b0ea2633e539530, []int{28}
} }
func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b)
@ -2289,7 +2296,7 @@ func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} }
func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) }
func (*MemberInvitedTips) ProtoMessage() {} func (*MemberInvitedTips) ProtoMessage() {}
func (*MemberInvitedTips) Descriptor() ([]byte, []int) { func (*MemberInvitedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{29} return fileDescriptor_ws_8b0ea2633e539530, []int{29}
} }
func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b)
@ -2351,7 +2358,7 @@ func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} }
func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) }
func (*MemberEnterTips) ProtoMessage() {} func (*MemberEnterTips) ProtoMessage() {}
func (*MemberEnterTips) Descriptor() ([]byte, []int) { func (*MemberEnterTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{30} return fileDescriptor_ws_8b0ea2633e539530, []int{30}
} }
func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b)
@ -2405,7 +2412,7 @@ func (m *GroupDismissedTips) Reset() { *m = GroupDismissedTips{} }
func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) } func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) }
func (*GroupDismissedTips) ProtoMessage() {} func (*GroupDismissedTips) ProtoMessage() {}
func (*GroupDismissedTips) Descriptor() ([]byte, []int) { func (*GroupDismissedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{31} return fileDescriptor_ws_8b0ea2633e539530, []int{31}
} }
func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b)
@ -2461,7 +2468,7 @@ func (m *GroupMemberMutedTips) Reset() { *m = GroupMemberMutedTips{} }
func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMemberMutedTips) ProtoMessage() {} func (*GroupMemberMutedTips) ProtoMessage() {}
func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) { func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{32} return fileDescriptor_ws_8b0ea2633e539530, []int{32}
} }
func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b)
@ -2530,7 +2537,7 @@ func (m *GroupMemberCancelMutedTips) Reset() { *m = GroupMemberCancelMut
func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMemberCancelMutedTips) ProtoMessage() {} func (*GroupMemberCancelMutedTips) ProtoMessage() {}
func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) { func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{33} return fileDescriptor_ws_8b0ea2633e539530, []int{33}
} }
func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b)
@ -2591,7 +2598,7 @@ func (m *GroupMutedTips) Reset() { *m = GroupMutedTips{} }
func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMutedTips) ProtoMessage() {} func (*GroupMutedTips) ProtoMessage() {}
func (*GroupMutedTips) Descriptor() ([]byte, []int) { func (*GroupMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{34} return fileDescriptor_ws_8b0ea2633e539530, []int{34}
} }
func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b)
@ -2645,7 +2652,7 @@ func (m *GroupCancelMutedTips) Reset() { *m = GroupCancelMutedTips{} }
func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupCancelMutedTips) ProtoMessage() {} func (*GroupCancelMutedTips) ProtoMessage() {}
func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) { func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{35} return fileDescriptor_ws_8b0ea2633e539530, []int{35}
} }
func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b)
@ -2700,7 +2707,7 @@ func (m *GroupMemberInfoSetTips) Reset() { *m = GroupMemberInfoSetTips{}
func (m *GroupMemberInfoSetTips) String() string { return proto.CompactTextString(m) } func (m *GroupMemberInfoSetTips) String() string { return proto.CompactTextString(m) }
func (*GroupMemberInfoSetTips) ProtoMessage() {} func (*GroupMemberInfoSetTips) ProtoMessage() {}
func (*GroupMemberInfoSetTips) Descriptor() ([]byte, []int) { func (*GroupMemberInfoSetTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{36} return fileDescriptor_ws_8b0ea2633e539530, []int{36}
} }
func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b)
@ -2760,7 +2767,7 @@ func (m *OrganizationChangedTips) Reset() { *m = OrganizationChangedTips
func (m *OrganizationChangedTips) String() string { return proto.CompactTextString(m) } func (m *OrganizationChangedTips) String() string { return proto.CompactTextString(m) }
func (*OrganizationChangedTips) ProtoMessage() {} func (*OrganizationChangedTips) ProtoMessage() {}
func (*OrganizationChangedTips) Descriptor() ([]byte, []int) { func (*OrganizationChangedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{37} return fileDescriptor_ws_8b0ea2633e539530, []int{37}
} }
func (m *OrganizationChangedTips) XXX_Unmarshal(b []byte) error { func (m *OrganizationChangedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OrganizationChangedTips.Unmarshal(m, b) return xxx_messageInfo_OrganizationChangedTips.Unmarshal(m, b)
@ -2807,7 +2814,7 @@ func (m *FriendApplication) Reset() { *m = FriendApplication{} }
func (m *FriendApplication) String() string { return proto.CompactTextString(m) } func (m *FriendApplication) String() string { return proto.CompactTextString(m) }
func (*FriendApplication) ProtoMessage() {} func (*FriendApplication) ProtoMessage() {}
func (*FriendApplication) Descriptor() ([]byte, []int) { func (*FriendApplication) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{38} return fileDescriptor_ws_8b0ea2633e539530, []int{38}
} }
func (m *FriendApplication) XXX_Unmarshal(b []byte) error { func (m *FriendApplication) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplication.Unmarshal(m, b) return xxx_messageInfo_FriendApplication.Unmarshal(m, b)
@ -2860,7 +2867,7 @@ func (m *FromToUserID) Reset() { *m = FromToUserID{} }
func (m *FromToUserID) String() string { return proto.CompactTextString(m) } func (m *FromToUserID) String() string { return proto.CompactTextString(m) }
func (*FromToUserID) ProtoMessage() {} func (*FromToUserID) ProtoMessage() {}
func (*FromToUserID) Descriptor() ([]byte, []int) { func (*FromToUserID) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{39} return fileDescriptor_ws_8b0ea2633e539530, []int{39}
} }
func (m *FromToUserID) XXX_Unmarshal(b []byte) error { func (m *FromToUserID) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FromToUserID.Unmarshal(m, b) return xxx_messageInfo_FromToUserID.Unmarshal(m, b)
@ -2906,7 +2913,7 @@ func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} }
func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationTips) ProtoMessage() {} func (*FriendApplicationTips) ProtoMessage() {}
func (*FriendApplicationTips) Descriptor() ([]byte, []int) { func (*FriendApplicationTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{40} return fileDescriptor_ws_8b0ea2633e539530, []int{40}
} }
func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b)
@ -2946,7 +2953,7 @@ func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplication
func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationApprovedTips) ProtoMessage() {} func (*FriendApplicationApprovedTips) ProtoMessage() {}
func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{41} return fileDescriptor_ws_8b0ea2633e539530, []int{41}
} }
func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b)
@ -2993,7 +3000,7 @@ func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplication
func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationRejectedTips) ProtoMessage() {} func (*FriendApplicationRejectedTips) ProtoMessage() {}
func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{42} return fileDescriptor_ws_8b0ea2633e539530, []int{42}
} }
func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b)
@ -3041,7 +3048,7 @@ func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} }
func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) }
func (*FriendAddedTips) ProtoMessage() {} func (*FriendAddedTips) ProtoMessage() {}
func (*FriendAddedTips) Descriptor() ([]byte, []int) { func (*FriendAddedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{43} return fileDescriptor_ws_8b0ea2633e539530, []int{43}
} }
func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b)
@ -3094,7 +3101,7 @@ func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} }
func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) }
func (*FriendDeletedTips) ProtoMessage() {} func (*FriendDeletedTips) ProtoMessage() {}
func (*FriendDeletedTips) Descriptor() ([]byte, []int) { func (*FriendDeletedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{44} return fileDescriptor_ws_8b0ea2633e539530, []int{44}
} }
func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b)
@ -3132,7 +3139,7 @@ func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} }
func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) }
func (*BlackAddedTips) ProtoMessage() {} func (*BlackAddedTips) ProtoMessage() {}
func (*BlackAddedTips) Descriptor() ([]byte, []int) { func (*BlackAddedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{45} return fileDescriptor_ws_8b0ea2633e539530, []int{45}
} }
func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b)
@ -3170,7 +3177,7 @@ func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} }
func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) }
func (*BlackDeletedTips) ProtoMessage() {} func (*BlackDeletedTips) ProtoMessage() {}
func (*BlackDeletedTips) Descriptor() ([]byte, []int) { func (*BlackDeletedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{46} return fileDescriptor_ws_8b0ea2633e539530, []int{46}
} }
func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b)
@ -3208,7 +3215,7 @@ func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} }
func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) }
func (*FriendInfoChangedTips) ProtoMessage() {} func (*FriendInfoChangedTips) ProtoMessage() {}
func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{47} return fileDescriptor_ws_8b0ea2633e539530, []int{47}
} }
func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b)
@ -3247,7 +3254,7 @@ func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} }
func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) }
func (*UserInfoUpdatedTips) ProtoMessage() {} func (*UserInfoUpdatedTips) ProtoMessage() {}
func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{48} return fileDescriptor_ws_8b0ea2633e539530, []int{48}
} }
func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b)
@ -3286,7 +3293,7 @@ func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{}
func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) }
func (*ConversationUpdateTips) ProtoMessage() {} func (*ConversationUpdateTips) ProtoMessage() {}
func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { func (*ConversationUpdateTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{49} return fileDescriptor_ws_8b0ea2633e539530, []int{49}
} }
func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b)
@ -3326,7 +3333,7 @@ func (m *ConversationSetPrivateTips) Reset() { *m = ConversationSetPriva
func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) } func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) }
func (*ConversationSetPrivateTips) ProtoMessage() {} func (*ConversationSetPrivateTips) ProtoMessage() {}
func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) { func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{50} return fileDescriptor_ws_8b0ea2633e539530, []int{50}
} }
func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b)
@ -3380,7 +3387,7 @@ func (m *RequestPagination) Reset() { *m = RequestPagination{} }
func (m *RequestPagination) String() string { return proto.CompactTextString(m) } func (m *RequestPagination) String() string { return proto.CompactTextString(m) }
func (*RequestPagination) ProtoMessage() {} func (*RequestPagination) ProtoMessage() {}
func (*RequestPagination) Descriptor() ([]byte, []int) { func (*RequestPagination) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{51} return fileDescriptor_ws_8b0ea2633e539530, []int{51}
} }
func (m *RequestPagination) XXX_Unmarshal(b []byte) error { func (m *RequestPagination) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RequestPagination.Unmarshal(m, b) return xxx_messageInfo_RequestPagination.Unmarshal(m, b)
@ -3426,7 +3433,7 @@ func (m *ResponsePagination) Reset() { *m = ResponsePagination{} }
func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } func (m *ResponsePagination) String() string { return proto.CompactTextString(m) }
func (*ResponsePagination) ProtoMessage() {} func (*ResponsePagination) ProtoMessage() {}
func (*ResponsePagination) Descriptor() ([]byte, []int) { func (*ResponsePagination) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{52} return fileDescriptor_ws_8b0ea2633e539530, []int{52}
} }
func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { func (m *ResponsePagination) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) return xxx_messageInfo_ResponsePagination.Unmarshal(m, b)
@ -3479,7 +3486,7 @@ func (m *SignalReq) Reset() { *m = SignalReq{} }
func (m *SignalReq) String() string { return proto.CompactTextString(m) } func (m *SignalReq) String() string { return proto.CompactTextString(m) }
func (*SignalReq) ProtoMessage() {} func (*SignalReq) ProtoMessage() {}
func (*SignalReq) Descriptor() ([]byte, []int) { func (*SignalReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{53} return fileDescriptor_ws_8b0ea2633e539530, []int{53}
} }
func (m *SignalReq) XXX_Unmarshal(b []byte) error { func (m *SignalReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalReq.Unmarshal(m, b) return xxx_messageInfo_SignalReq.Unmarshal(m, b)
@ -3746,7 +3753,7 @@ func (m *SignalResp) Reset() { *m = SignalResp{} }
func (m *SignalResp) String() string { return proto.CompactTextString(m) } func (m *SignalResp) String() string { return proto.CompactTextString(m) }
func (*SignalResp) ProtoMessage() {} func (*SignalResp) ProtoMessage() {}
func (*SignalResp) Descriptor() ([]byte, []int) { func (*SignalResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{54} return fileDescriptor_ws_8b0ea2633e539530, []int{54}
} }
func (m *SignalResp) XXX_Unmarshal(b []byte) error { func (m *SignalResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalResp.Unmarshal(m, b) return xxx_messageInfo_SignalResp.Unmarshal(m, b)
@ -4014,7 +4021,7 @@ func (m *InvitationInfo) Reset() { *m = InvitationInfo{} }
func (m *InvitationInfo) String() string { return proto.CompactTextString(m) } func (m *InvitationInfo) String() string { return proto.CompactTextString(m) }
func (*InvitationInfo) ProtoMessage() {} func (*InvitationInfo) ProtoMessage() {}
func (*InvitationInfo) Descriptor() ([]byte, []int) { func (*InvitationInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{55} return fileDescriptor_ws_8b0ea2633e539530, []int{55}
} }
func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { func (m *InvitationInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) return xxx_messageInfo_InvitationInfo.Unmarshal(m, b)
@ -4110,7 +4117,7 @@ func (m *ParticipantMetaData) Reset() { *m = ParticipantMetaData{} }
func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) } func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) }
func (*ParticipantMetaData) ProtoMessage() {} func (*ParticipantMetaData) ProtoMessage() {}
func (*ParticipantMetaData) Descriptor() ([]byte, []int) { func (*ParticipantMetaData) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{56} return fileDescriptor_ws_8b0ea2633e539530, []int{56}
} }
func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b)
@ -4165,7 +4172,7 @@ func (m *SignalInviteReq) Reset() { *m = SignalInviteReq{} }
func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) } func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) }
func (*SignalInviteReq) ProtoMessage() {} func (*SignalInviteReq) ProtoMessage() {}
func (*SignalInviteReq) Descriptor() ([]byte, []int) { func (*SignalInviteReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{57} return fileDescriptor_ws_8b0ea2633e539530, []int{57}
} }
func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b)
@ -4226,7 +4233,7 @@ func (m *SignalInviteReply) Reset() { *m = SignalInviteReply{} }
func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) } func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) }
func (*SignalInviteReply) ProtoMessage() {} func (*SignalInviteReply) ProtoMessage() {}
func (*SignalInviteReply) Descriptor() ([]byte, []int) { func (*SignalInviteReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{58} return fileDescriptor_ws_8b0ea2633e539530, []int{58}
} }
func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b)
@ -4281,7 +4288,7 @@ func (m *SignalInviteInGroupReq) Reset() { *m = SignalInviteInGroupReq{}
func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) } func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) }
func (*SignalInviteInGroupReq) ProtoMessage() {} func (*SignalInviteInGroupReq) ProtoMessage() {}
func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{59} return fileDescriptor_ws_8b0ea2633e539530, []int{59}
} }
func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b)
@ -4342,7 +4349,7 @@ func (m *SignalInviteInGroupReply) Reset() { *m = SignalInviteInGroupRep
func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) } func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) }
func (*SignalInviteInGroupReply) ProtoMessage() {} func (*SignalInviteInGroupReply) ProtoMessage() {}
func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{60} return fileDescriptor_ws_8b0ea2633e539530, []int{60}
} }
func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b)
@ -4397,7 +4404,7 @@ func (m *SignalCancelReq) Reset() { *m = SignalCancelReq{} }
func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) } func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) }
func (*SignalCancelReq) ProtoMessage() {} func (*SignalCancelReq) ProtoMessage() {}
func (*SignalCancelReq) Descriptor() ([]byte, []int) { func (*SignalCancelReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{61} return fileDescriptor_ws_8b0ea2633e539530, []int{61}
} }
func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b)
@ -4455,7 +4462,7 @@ func (m *SignalCancelReply) Reset() { *m = SignalCancelReply{} }
func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) } func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) }
func (*SignalCancelReply) ProtoMessage() {} func (*SignalCancelReply) ProtoMessage() {}
func (*SignalCancelReply) Descriptor() ([]byte, []int) { func (*SignalCancelReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{62} return fileDescriptor_ws_8b0ea2633e539530, []int{62}
} }
func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b)
@ -4490,7 +4497,7 @@ func (m *SignalAcceptReq) Reset() { *m = SignalAcceptReq{} }
func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) } func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) }
func (*SignalAcceptReq) ProtoMessage() {} func (*SignalAcceptReq) ProtoMessage() {}
func (*SignalAcceptReq) Descriptor() ([]byte, []int) { func (*SignalAcceptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{63} return fileDescriptor_ws_8b0ea2633e539530, []int{63}
} }
func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b)
@ -4558,7 +4565,7 @@ func (m *SignalAcceptReply) Reset() { *m = SignalAcceptReply{} }
func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) } func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) }
func (*SignalAcceptReply) ProtoMessage() {} func (*SignalAcceptReply) ProtoMessage() {}
func (*SignalAcceptReply) Descriptor() ([]byte, []int) { func (*SignalAcceptReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{64} return fileDescriptor_ws_8b0ea2633e539530, []int{64}
} }
func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b)
@ -4612,7 +4619,7 @@ func (m *SignalHungUpReq) Reset() { *m = SignalHungUpReq{} }
func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) } func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) }
func (*SignalHungUpReq) ProtoMessage() {} func (*SignalHungUpReq) ProtoMessage() {}
func (*SignalHungUpReq) Descriptor() ([]byte, []int) { func (*SignalHungUpReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{65} return fileDescriptor_ws_8b0ea2633e539530, []int{65}
} }
func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b)
@ -4663,7 +4670,7 @@ func (m *SignalHungUpReply) Reset() { *m = SignalHungUpReply{} }
func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) } func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) }
func (*SignalHungUpReply) ProtoMessage() {} func (*SignalHungUpReply) ProtoMessage() {}
func (*SignalHungUpReply) Descriptor() ([]byte, []int) { func (*SignalHungUpReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{66} return fileDescriptor_ws_8b0ea2633e539530, []int{66}
} }
func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b)
@ -4698,7 +4705,7 @@ func (m *SignalRejectReq) Reset() { *m = SignalRejectReq{} }
func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) } func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) }
func (*SignalRejectReq) ProtoMessage() {} func (*SignalRejectReq) ProtoMessage() {}
func (*SignalRejectReq) Descriptor() ([]byte, []int) { func (*SignalRejectReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{67} return fileDescriptor_ws_8b0ea2633e539530, []int{67}
} }
func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b)
@ -4763,7 +4770,7 @@ func (m *SignalRejectReply) Reset() { *m = SignalRejectReply{} }
func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) } func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) }
func (*SignalRejectReply) ProtoMessage() {} func (*SignalRejectReply) ProtoMessage() {}
func (*SignalRejectReply) Descriptor() ([]byte, []int) { func (*SignalRejectReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{68} return fileDescriptor_ws_8b0ea2633e539530, []int{68}
} }
func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b)
@ -4797,7 +4804,7 @@ func (m *DelMsgListReq) Reset() { *m = DelMsgListReq{} }
func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) } func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) }
func (*DelMsgListReq) ProtoMessage() {} func (*DelMsgListReq) ProtoMessage() {}
func (*DelMsgListReq) Descriptor() ([]byte, []int) { func (*DelMsgListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{69} return fileDescriptor_ws_8b0ea2633e539530, []int{69}
} }
func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b)
@ -4857,7 +4864,7 @@ func (m *DelMsgListResp) Reset() { *m = DelMsgListResp{} }
func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) } func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) }
func (*DelMsgListResp) ProtoMessage() {} func (*DelMsgListResp) ProtoMessage() {}
func (*DelMsgListResp) Descriptor() ([]byte, []int) { func (*DelMsgListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0aa1613bcc1a3980, []int{70} return fileDescriptor_ws_8b0ea2633e539530, []int{70}
} }
func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b)
@ -4966,198 +4973,199 @@ func init() {
proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp")
} }
func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_0aa1613bcc1a3980) } func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_8b0ea2633e539530) }
var fileDescriptor_ws_0aa1613bcc1a3980 = []byte{ var fileDescriptor_ws_8b0ea2633e539530 = []byte{
// 3033 bytes of a gzipped FileDescriptorProto // 3049 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcf, 0x6f, 0x24, 0x47, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcb, 0x6f, 0x24, 0x49,
0xf5, 0xff, 0x76, 0x8f, 0x67, 0xec, 0x79, 0xe3, 0xf1, 0x8f, 0xde, 0xfd, 0x3a, 0x83, 0xd9, 0x2c, 0xd1, 0xff, 0xaa, 0xda, 0xdd, 0x76, 0x47, 0xbb, 0xfd, 0xa8, 0x99, 0xcf, 0xdb, 0x98, 0xd9, 0xc1,
0xa6, 0xb1, 0x42, 0x08, 0xb0, 0x41, 0x89, 0x90, 0x20, 0x81, 0x45, 0x6b, 0x7b, 0x7f, 0x85, 0xb5, 0x14, 0xd6, 0xb2, 0x2c, 0x30, 0x8b, 0x76, 0x85, 0x04, 0xbb, 0x30, 0x68, 0x6c, 0xcf, 0x6b, 0x19,
0xd7, 0xe9, 0xd9, 0x25, 0x08, 0x90, 0xa2, 0xf6, 0x74, 0x79, 0xdc, 0x71, 0x77, 0x55, 0x4f, 0xff, 0x7b, 0xbc, 0xd5, 0x33, 0x2c, 0x02, 0xa4, 0x55, 0xb9, 0x2b, 0xdd, 0xae, 0x75, 0x55, 0x66, 0x75,
0xf0, 0xee, 0x22, 0x24, 0x24, 0x90, 0x10, 0x37, 0x4e, 0x70, 0xe0, 0x82, 0xc4, 0x05, 0x81, 0xa2, 0x3d, 0x3c, 0x33, 0x08, 0x09, 0x09, 0x24, 0xc4, 0x8d, 0x13, 0x1c, 0xb8, 0x20, 0x71, 0x41, 0xa0,
0x28, 0x42, 0x20, 0x71, 0x88, 0x10, 0x07, 0xfe, 0x01, 0x8e, 0x88, 0x1b, 0x67, 0xae, 0x1c, 0x90, 0xd5, 0x6a, 0x85, 0x40, 0xe2, 0x80, 0x10, 0x07, 0xfe, 0x01, 0x8e, 0x88, 0x0b, 0xe2, 0xcc, 0x95,
0x90, 0x40, 0x55, 0xaf, 0xba, 0xbb, 0xaa, 0x7b, 0xc6, 0x9e, 0x1d, 0x59, 0xd9, 0x8d, 0x96, 0xdb, 0x03, 0x12, 0x12, 0x28, 0x33, 0xb2, 0xaa, 0x32, 0xab, 0xba, 0xed, 0x9e, 0x96, 0xb5, 0x33, 0xab,
0xbc, 0xd7, 0xf5, 0x5e, 0xbd, 0xfa, 0xbc, 0x57, 0xf5, 0x5e, 0xfd, 0x18, 0x58, 0x4e, 0xbc, 0xe3, 0xe1, 0xd6, 0x11, 0x95, 0x11, 0x19, 0xf9, 0x8b, 0xc8, 0x8c, 0xc8, 0x47, 0xc3, 0x72, 0xe2, 0x1d,
0xb7, 0x1f, 0x24, 0x2f, 0x3f, 0x48, 0xae, 0x44, 0x31, 0x4b, 0x99, 0xb5, 0x9a, 0x90, 0xf8, 0x84, 0xbf, 0xfd, 0x20, 0x79, 0xf9, 0x41, 0x72, 0x25, 0x8a, 0x59, 0xca, 0xac, 0xd5, 0x84, 0xc4, 0x27,
0xc4, 0x6f, 0xbb, 0x91, 0xff, 0x76, 0xe4, 0xc6, 0x6e, 0x98, 0xd8, 0xff, 0x34, 0xa1, 0x7d, 0x33, 0x24, 0x7e, 0xdb, 0x8d, 0xfc, 0xb7, 0x23, 0x37, 0x76, 0xc3, 0xc4, 0xfe, 0xa7, 0x09, 0xed, 0x9b,
0x66, 0x59, 0x74, 0x9b, 0x1e, 0x32, 0xab, 0x07, 0xf3, 0x43, 0x41, 0xec, 0xf4, 0x8c, 0x0d, 0xe3, 0x31, 0xcb, 0xa2, 0xdb, 0xf4, 0x90, 0x59, 0x3d, 0x98, 0x1f, 0x0a, 0x62, 0xa7, 0x67, 0x6c, 0x18,
0xc5, 0xb6, 0x93, 0x93, 0xd6, 0x25, 0x68, 0x8b, 0x9f, 0x7b, 0x6e, 0x48, 0x7a, 0xa6, 0xf8, 0x56, 0x2f, 0xb6, 0x9d, 0x9c, 0xb4, 0x2e, 0x41, 0x5b, 0xfc, 0xdc, 0x73, 0x43, 0xd2, 0x33, 0xc5, 0xb7,
0x32, 0x2c, 0x1b, 0x16, 0x29, 0x4b, 0xfd, 0x43, 0x7f, 0xe0, 0xa6, 0x3e, 0xa3, 0xbd, 0x86, 0x68, 0x92, 0x61, 0xd9, 0xb0, 0x48, 0x59, 0xea, 0x1f, 0xfa, 0x03, 0x37, 0xf5, 0x19, 0xed, 0x35, 0x44,
0xa0, 0xf1, 0x78, 0x1b, 0x9f, 0xa6, 0x31, 0xf3, 0xb2, 0x81, 0x68, 0x33, 0x87, 0x6d, 0x54, 0x1e, 0x03, 0x8d, 0xc7, 0xdb, 0xf8, 0x34, 0x8d, 0x99, 0x97, 0x0d, 0x44, 0x9b, 0x39, 0x6c, 0xa3, 0xf2,
0xef, 0xff, 0xd0, 0x1d, 0x90, 0xfb, 0xce, 0x9d, 0x5e, 0x13, 0xfb, 0x97, 0xa4, 0xb5, 0x01, 0x1d, 0x78, 0xff, 0x87, 0xee, 0x80, 0xdc, 0x77, 0xee, 0xf4, 0x9a, 0xd8, 0xbf, 0x24, 0xad, 0x0d, 0xe8,
0xf6, 0x80, 0x92, 0xf8, 0x7e, 0x42, 0xe2, 0xdb, 0x3b, 0xbd, 0x96, 0xf8, 0xaa, 0xb2, 0xac, 0xcb, 0xb0, 0x07, 0x94, 0xc4, 0xf7, 0x13, 0x12, 0xdf, 0xde, 0xe9, 0xb5, 0xc4, 0x57, 0x95, 0x65, 0x5d,
0x00, 0x83, 0x98, 0xb8, 0x29, 0xb9, 0xe7, 0x87, 0xa4, 0x37, 0xbf, 0x61, 0xbc, 0xd8, 0x75, 0x14, 0x06, 0x18, 0xc4, 0xc4, 0x4d, 0xc9, 0x3d, 0x3f, 0x24, 0xbd, 0xf9, 0x0d, 0xe3, 0xc5, 0xae, 0xa3,
0x0e, 0xd7, 0x10, 0x92, 0xf0, 0x80, 0xc4, 0xdb, 0x2c, 0xa3, 0x69, 0x6f, 0x41, 0x34, 0x50, 0x59, 0x70, 0xb8, 0x86, 0x90, 0x84, 0x07, 0x24, 0xde, 0x66, 0x19, 0x4d, 0x7b, 0x0b, 0xa2, 0x81, 0xca,
0xd6, 0x12, 0x98, 0xe4, 0x61, 0xaf, 0x2d, 0x54, 0x9b, 0xe4, 0xa1, 0xb5, 0x06, 0xad, 0x24, 0x75, 0xb2, 0x96, 0xc0, 0x24, 0x0f, 0x7b, 0x6d, 0xa1, 0xda, 0x24, 0x0f, 0xad, 0x35, 0x68, 0x25, 0xa9,
0xd3, 0x2c, 0xe9, 0xc1, 0x86, 0xf1, 0x62, 0xd3, 0x91, 0x94, 0xb5, 0x09, 0x5d, 0xa1, 0x97, 0xe5, 0x9b, 0x66, 0x49, 0x0f, 0x36, 0x8c, 0x17, 0x9b, 0x8e, 0xa4, 0xac, 0x4d, 0xe8, 0x0a, 0xbd, 0x2c,
0xd6, 0x74, 0x84, 0x88, 0xce, 0x2c, 0x10, 0xbb, 0xf7, 0x28, 0x22, 0xbd, 0x45, 0xa1, 0xa0, 0x64, 0xb7, 0xa6, 0x23, 0x44, 0x74, 0x66, 0x81, 0xd8, 0xbd, 0x47, 0x11, 0xe9, 0x2d, 0x0a, 0x05, 0x25,
0xd8, 0x7f, 0x35, 0xe1, 0x82, 0xc0, 0x7d, 0x57, 0x18, 0x70, 0x23, 0x0b, 0x82, 0x33, 0x3c, 0xb0, 0xc3, 0xfe, 0x8b, 0x09, 0x17, 0x04, 0xee, 0xbb, 0xc2, 0x80, 0x1b, 0x59, 0x10, 0x9c, 0xe1, 0x81,
0x06, 0xad, 0x0c, 0xbb, 0x43, 0xf8, 0x25, 0xc5, 0xfb, 0x89, 0x59, 0x40, 0xee, 0x90, 0x13, 0x12, 0x35, 0x68, 0x65, 0xd8, 0x1d, 0xc2, 0x2f, 0x29, 0xde, 0x4f, 0xcc, 0x02, 0x72, 0x87, 0x9c, 0x90,
0x08, 0xe0, 0x9b, 0x4e, 0xc9, 0xb0, 0xd6, 0x61, 0xe1, 0x1d, 0xe6, 0x53, 0x81, 0xc9, 0x9c, 0xf8, 0x40, 0x00, 0xdf, 0x74, 0x4a, 0x86, 0xb5, 0x0e, 0x0b, 0xef, 0x30, 0x9f, 0x0a, 0x4c, 0xe6, 0xc4,
0x58, 0xd0, 0xfc, 0x1b, 0xf5, 0x07, 0xc7, 0x94, 0xbb, 0x14, 0xe1, 0x2e, 0x68, 0xd5, 0x13, 0x2d, 0xc7, 0x82, 0xe6, 0xdf, 0xa8, 0x3f, 0x38, 0xa6, 0xdc, 0xa5, 0x08, 0x77, 0x41, 0xab, 0x9e, 0x68,
0xdd, 0x13, 0x2f, 0xc0, 0x92, 0x1b, 0x45, 0xbb, 0x2e, 0x1d, 0x92, 0x18, 0x3b, 0x9d, 0x17, 0x7a, 0xe9, 0x9e, 0x78, 0x01, 0x96, 0xdc, 0x28, 0xda, 0x75, 0xe9, 0x90, 0xc4, 0xd8, 0xe9, 0xbc, 0xd0,
0x2b, 0x5c, 0xee, 0x0f, 0xde, 0x53, 0x9f, 0x65, 0xf1, 0x80, 0x08, 0xb8, 0x9b, 0x8e, 0xc2, 0xe1, 0x5b, 0xe1, 0x72, 0x7f, 0xf0, 0x9e, 0xfa, 0x2c, 0x8b, 0x07, 0x44, 0xc0, 0xdd, 0x74, 0x14, 0x0e,
0x7a, 0x58, 0x44, 0x62, 0x05, 0x46, 0x44, 0xbe, 0xc2, 0x95, 0x5e, 0x81, 0xc2, 0x2b, 0xdc, 0x8f, 0xd7, 0xc3, 0x22, 0x12, 0x2b, 0x30, 0x22, 0xf2, 0x15, 0xae, 0xf4, 0x0a, 0x14, 0x5e, 0xe1, 0x7e,
0x59, 0x4a, 0xae, 0x53, 0x4f, 0x0c, 0xaa, 0x23, 0xfd, 0x58, 0xb2, 0xec, 0x1f, 0x19, 0xb0, 0xb4, 0xcc, 0x52, 0x72, 0x9d, 0x7a, 0x62, 0x50, 0x1d, 0xe9, 0xc7, 0x92, 0x65, 0xff, 0xc0, 0x80, 0xa5,
0x9f, 0x1d, 0x04, 0xfe, 0x40, 0xa8, 0xe0, 0xb0, 0x96, 0xe0, 0x19, 0x1a, 0x78, 0x2a, 0x04, 0xe6, 0xfd, 0xec, 0x20, 0xf0, 0x07, 0x42, 0x05, 0x87, 0xb5, 0x04, 0xcf, 0xd0, 0xc0, 0x53, 0x21, 0x30,
0x64, 0x08, 0x1a, 0x3a, 0x04, 0x6b, 0xd0, 0x1a, 0x12, 0xea, 0x91, 0x58, 0x42, 0x2a, 0x29, 0x69, 0x27, 0x43, 0xd0, 0xd0, 0x21, 0x58, 0x83, 0xd6, 0x90, 0x50, 0x8f, 0xc4, 0x12, 0x52, 0x49, 0x49,
0x6a, 0x33, 0x37, 0xd5, 0xfe, 0x99, 0x09, 0x0b, 0x1f, 0xb2, 0x09, 0x1b, 0xd0, 0x89, 0x8e, 0x18, 0x53, 0x9b, 0xb9, 0xa9, 0xf6, 0x4f, 0x4c, 0x58, 0xf8, 0x80, 0x4d, 0xd8, 0x80, 0x4e, 0x74, 0xc4,
0x25, 0x7b, 0x19, 0x0f, 0x2b, 0x69, 0x8b, 0xca, 0xb2, 0x2e, 0x42, 0xf3, 0xc0, 0x8f, 0xd3, 0x23, 0x28, 0xd9, 0xcb, 0x78, 0x58, 0x49, 0x5b, 0x54, 0x96, 0x75, 0x11, 0x9a, 0x07, 0x7e, 0x9c, 0x1e,
0xe1, 0xd7, 0xae, 0x83, 0x04, 0xe7, 0x92, 0xd0, 0xf5, 0xd1, 0x99, 0x6d, 0x07, 0x09, 0x39, 0xa0, 0x09, 0xbf, 0x76, 0x1d, 0x24, 0x38, 0x97, 0x84, 0xae, 0x8f, 0xce, 0x6c, 0x3b, 0x48, 0xc8, 0x01,
0x85, 0x02, 0x7b, 0x7d, 0x8e, 0xb5, 0x6b, 0x73, 0xac, 0x1e, 0x1b, 0x30, 0x2e, 0x36, 0xec, 0x7f, 0x2d, 0x14, 0xd8, 0xeb, 0x73, 0xac, 0x5d, 0x9b, 0x63, 0xf5, 0xd8, 0x80, 0x71, 0xb1, 0x61, 0xff,
0x19, 0x00, 0x37, 0x62, 0x9f, 0x50, 0x4f, 0x40, 0x53, 0x99, 0xdc, 0x46, 0x7d, 0x72, 0xaf, 0x41, 0xcb, 0x00, 0xb8, 0x11, 0xfb, 0x84, 0x7a, 0x02, 0x9a, 0xca, 0xe4, 0x36, 0xea, 0x93, 0x7b, 0x0d,
0x2b, 0x26, 0xa1, 0x1b, 0x1f, 0xe7, 0xc1, 0x8f, 0x54, 0xc5, 0xa0, 0x46, 0xcd, 0xa0, 0xd7, 0x01, 0x5a, 0x31, 0x09, 0xdd, 0xf8, 0x38, 0x0f, 0x7e, 0xa4, 0x2a, 0x06, 0x35, 0x6a, 0x06, 0xbd, 0x0e,
0x0e, 0x45, 0x3f, 0x5c, 0x8f, 0x80, 0xaa, 0xf3, 0xca, 0xc7, 0xaf, 0xd4, 0x96, 0xc1, 0x2b, 0xb9, 0x70, 0x28, 0xfa, 0xe1, 0x7a, 0x04, 0x54, 0x9d, 0x57, 0x3e, 0x7a, 0xa5, 0xb6, 0x0c, 0x5e, 0xc9,
0x97, 0x1c, 0xa5, 0x39, 0x9f, 0x59, 0xae, 0xe7, 0xc9, 0x00, 0x6e, 0xe2, 0xcc, 0x2a, 0x18, 0x63, 0xbd, 0xe4, 0x28, 0xcd, 0xf9, 0xcc, 0x72, 0x3d, 0x4f, 0x06, 0x70, 0x13, 0x67, 0x56, 0xc1, 0x18,
0xe2, 0xb7, 0x75, 0x4a, 0xfc, 0xce, 0x17, 0x41, 0xf1, 0x0f, 0x03, 0xda, 0x5b, 0x81, 0x3b, 0x38, 0x13, 0xbf, 0xad, 0x53, 0xe2, 0x77, 0xbe, 0x08, 0x8a, 0x7f, 0x18, 0xd0, 0xde, 0x0a, 0xdc, 0xc1,
0x9e, 0x72, 0xe8, 0xfa, 0x10, 0xcd, 0xda, 0x10, 0x6f, 0x42, 0xf7, 0x80, 0xab, 0xcb, 0x87, 0x20, 0xf1, 0x94, 0x43, 0xd7, 0x87, 0x68, 0xd6, 0x86, 0x78, 0x13, 0xba, 0x07, 0x5c, 0x5d, 0x3e, 0x04,
0x50, 0xe8, 0xbc, 0xf2, 0xc9, 0x31, 0xa3, 0xd4, 0x27, 0x85, 0xa3, 0xcb, 0xe9, 0xc3, 0x9d, 0x3b, 0x81, 0x42, 0xe7, 0x95, 0x8f, 0x8f, 0x19, 0xa5, 0x3e, 0x29, 0x1c, 0x5d, 0x4e, 0x1f, 0xee, 0xdc,
0x7b, 0xb8, 0xcd, 0x53, 0x86, 0xdb, 0x2a, 0x86, 0xfb, 0x17, 0x13, 0x16, 0xc5, 0x42, 0xe7, 0x90, 0xd9, 0xc3, 0x6d, 0x9e, 0x32, 0xdc, 0x56, 0x31, 0xdc, 0x3f, 0x9b, 0xb0, 0x28, 0x16, 0x3a, 0x87,
0x51, 0x46, 0x92, 0xd4, 0xfa, 0x2a, 0x2c, 0x64, 0xb9, 0xa9, 0xc6, 0xb4, 0xa6, 0x16, 0x22, 0xd6, 0x8c, 0x32, 0x92, 0xa4, 0xd6, 0x97, 0x61, 0x21, 0xcb, 0x4d, 0x35, 0xa6, 0x35, 0xb5, 0x10, 0xb1,
0x6b, 0x72, 0x59, 0x15, 0xf2, 0xa6, 0x90, 0xbf, 0x34, 0x46, 0xbe, 0xc8, 0x69, 0x4e, 0xd9, 0x9c, 0x5e, 0x93, 0xcb, 0xaa, 0x90, 0x37, 0x85, 0xfc, 0xa5, 0x31, 0xf2, 0x45, 0x4e, 0x73, 0xca, 0xe6,
0xa7, 0xa0, 0x23, 0x97, 0x7a, 0x01, 0x71, 0x48, 0x92, 0x05, 0xa9, 0x5c, 0x2d, 0x35, 0x1e, 0x46, 0x3c, 0x05, 0x1d, 0xb9, 0xd4, 0x0b, 0x88, 0x43, 0x92, 0x2c, 0x48, 0xe5, 0x6a, 0xa9, 0xf1, 0x30,
0xda, 0x68, 0x37, 0x19, 0xca, 0x04, 0x25, 0x29, 0x8e, 0x0e, 0xb6, 0xe3, 0x9f, 0x70, 0xe8, 0x25, 0xd2, 0x46, 0xbb, 0xc9, 0x50, 0x26, 0x28, 0x49, 0x71, 0x74, 0xb0, 0x1d, 0xff, 0x84, 0x43, 0x2f,
0x83, 0x4f, 0xd4, 0x98, 0x8c, 0x84, 0x87, 0x70, 0x5a, 0xe5, 0x64, 0xd9, 0xa7, 0x44, 0x0d, 0x03, 0x19, 0x7c, 0xa2, 0xc6, 0x64, 0x24, 0x3c, 0x84, 0xd3, 0x2a, 0x27, 0xcb, 0x3e, 0x25, 0x6a, 0x18,
0x41, 0xe3, 0x71, 0x17, 0x23, 0x2d, 0x14, 0x60, 0x66, 0x52, 0x38, 0xd5, 0xc4, 0x64, 0xff, 0xad, 0x08, 0x1a, 0x8f, 0xbb, 0x18, 0x69, 0xa1, 0x00, 0x33, 0x93, 0xc2, 0xa9, 0x26, 0x26, 0xfb, 0xaf,
0x01, 0x5d, 0x9c, 0x3e, 0x39, 0xa8, 0x97, 0x79, 0x9c, 0xb3, 0x50, 0x8b, 0x22, 0x85, 0xc3, 0xad, 0x0d, 0xe8, 0xe2, 0xf4, 0xc9, 0x41, 0xbd, 0xcc, 0xe3, 0x9c, 0x85, 0x5a, 0x14, 0x29, 0x1c, 0x6e,
0xe0, 0xd4, 0x9e, 0xbe, 0xd0, 0x68, 0x3c, 0x1e, 0x8a, 0x9c, 0xbe, 0xa1, 0x2d, 0x38, 0x2a, 0x2b, 0x05, 0xa7, 0xf6, 0xf4, 0x85, 0x46, 0xe3, 0xf1, 0x50, 0xe4, 0xf4, 0x0d, 0x6d, 0xc1, 0x51, 0x59,
0xef, 0xe5, 0xa6, 0xba, 0xf0, 0x28, 0x1c, 0xbe, 0x94, 0xa5, 0x4c, 0x8b, 0x8e, 0x82, 0xe6, 0xb2, 0x79, 0x2f, 0x37, 0xd5, 0x85, 0x47, 0xe1, 0xf0, 0xa5, 0x2c, 0x65, 0x5a, 0x74, 0x14, 0x34, 0x97,
0x29, 0x2b, 0xfa, 0xc7, 0xf8, 0x50, 0x38, 0x1c, 0xdf, 0x94, 0xe5, 0x7d, 0x23, 0x48, 0x25, 0x03, 0x4d, 0x59, 0xd1, 0x3f, 0xc6, 0x87, 0xc2, 0xe1, 0xf8, 0xa6, 0x2c, 0xef, 0x1b, 0x41, 0x2a, 0x19,
0x35, 0xcb, 0x7e, 0x31, 0x95, 0x14, 0x74, 0xcd, 0xab, 0xed, 0x53, 0xbd, 0x0a, 0x9a, 0x57, 0xf5, 0xa8, 0x59, 0xf6, 0x8b, 0xa9, 0xa4, 0xa0, 0x6b, 0x5e, 0x6d, 0x9f, 0xea, 0x55, 0xd0, 0xbc, 0xaa,
0xc9, 0xd5, 0xa9, 0x4d, 0xae, 0x4d, 0xe8, 0xa2, 0x9e, 0x3c, 0xe8, 0x17, 0x31, 0xd5, 0x6b, 0x4c, 0x4f, 0xae, 0x4e, 0x6d, 0x72, 0x6d, 0x42, 0x17, 0xf5, 0xe4, 0x41, 0xbf, 0x88, 0xa9, 0x5e, 0x63,
0x3d, 0x36, 0xba, 0xd5, 0xd8, 0xd0, 0xbd, 0xbb, 0x34, 0xc1, 0xbb, 0xcb, 0x85, 0x77, 0x7f, 0x6b, 0xea, 0xb1, 0xd1, 0xad, 0xc6, 0x86, 0xee, 0xdd, 0xa5, 0x09, 0xde, 0x5d, 0x2e, 0xbc, 0xfb, 0x6b,
0x02, 0xec, 0x90, 0xc8, 0x8d, 0xd3, 0x90, 0xd0, 0x94, 0x0f, 0xcf, 0x2b, 0xa8, 0xc2, 0xb9, 0x1a, 0x13, 0x60, 0x87, 0x44, 0x6e, 0x9c, 0x86, 0x84, 0xa6, 0x7c, 0x78, 0x5e, 0x41, 0x15, 0xce, 0xd5,
0x4f, 0xcd, 0x13, 0xa6, 0x9e, 0x27, 0x2c, 0x98, 0x13, 0x80, 0xa3, 0x37, 0xc5, 0x6f, 0x0e, 0x66, 0x78, 0x6a, 0x9e, 0x30, 0xf5, 0x3c, 0x61, 0xc1, 0x9c, 0x00, 0x1c, 0xbd, 0x29, 0x7e, 0x73, 0x30,
0xe4, 0xc6, 0xa8, 0x0d, 0x83, 0xbc, 0xa0, 0x79, 0x1e, 0x60, 0xb1, 0x27, 0x33, 0x47, 0xd3, 0x41, 0x23, 0x37, 0x46, 0x6d, 0x18, 0xe4, 0x05, 0xcd, 0xf3, 0x00, 0x8b, 0x3d, 0x99, 0x39, 0x9a, 0x0e,
0x82, 0x4f, 0xfe, 0xb2, 0x3f, 0x51, 0xd0, 0xb4, 0x70, 0x5d, 0xd7, 0xb9, 0x67, 0xd6, 0x60, 0x2f, 0x12, 0x7c, 0xf2, 0x97, 0xfd, 0x89, 0x82, 0xa6, 0x85, 0xeb, 0xba, 0xce, 0x3d, 0xb3, 0x06, 0x7b,
0xc1, 0x4a, 0x92, 0x1d, 0x94, 0x83, 0xdb, 0xcb, 0x42, 0x19, 0xee, 0x35, 0x3e, 0x07, 0x15, 0x8b, 0x09, 0x56, 0x92, 0xec, 0xa0, 0x1c, 0xdc, 0x5e, 0x16, 0xca, 0x70, 0xaf, 0xf1, 0x39, 0xa8, 0x58,
0x33, 0xde, 0x08, 0x53, 0x4d, 0xc9, 0xa8, 0x56, 0x05, 0xf6, 0xbb, 0x26, 0xac, 0xdc, 0x8d, 0x87, 0x9c, 0xf1, 0x46, 0x98, 0x6a, 0x4a, 0x46, 0xb5, 0x2a, 0xb0, 0xdf, 0x35, 0x61, 0xe5, 0x6e, 0x3c,
0x2e, 0xf5, 0xbf, 0x2b, 0xca, 0x4d, 0xb1, 0x80, 0xcf, 0x92, 0x72, 0x37, 0xa0, 0x43, 0xe8, 0x30, 0x74, 0xa9, 0xff, 0x6d, 0x51, 0x6e, 0x8a, 0x05, 0x7c, 0x96, 0x94, 0xbb, 0x01, 0x1d, 0x42, 0x87,
0xf0, 0x93, 0xa3, 0xbd, 0x12, 0x37, 0x95, 0xa5, 0x82, 0x3d, 0x37, 0x29, 0x29, 0x37, 0xb5, 0xa4, 0x81, 0x9f, 0x1c, 0xed, 0x95, 0xb8, 0xa9, 0x2c, 0x15, 0xec, 0xb9, 0x49, 0x49, 0xb9, 0xa9, 0x25,
0xbc, 0x06, 0xad, 0x90, 0x1d, 0xf8, 0x41, 0x1e, 0xf7, 0x92, 0x12, 0x31, 0x4f, 0x02, 0x22, 0xb2, 0xe5, 0x35, 0x68, 0x85, 0xec, 0xc0, 0x0f, 0xf2, 0xb8, 0x97, 0x94, 0x88, 0x79, 0x12, 0x10, 0x91,
0x73, 0x11, 0xf3, 0x39, 0xa3, 0x4c, 0xd4, 0x0b, 0x63, 0x13, 0x75, 0x5b, 0x4d, 0xd4, 0x3a, 0xf0, 0x9d, 0x8b, 0x98, 0xcf, 0x19, 0x65, 0xa2, 0x5e, 0x18, 0x9b, 0xa8, 0xdb, 0x6a, 0xa2, 0xd6, 0x81,
0x50, 0x03, 0x1e, 0xe1, 0xea, 0x14, 0x70, 0xfd, 0xc9, 0x80, 0x95, 0x12, 0x6e, 0xac, 0x41, 0x27, 0x87, 0x1a, 0xf0, 0x08, 0x57, 0xa7, 0x80, 0xeb, 0x8f, 0x06, 0xac, 0x94, 0x70, 0x63, 0x0d, 0x3a,
0xc2, 0x55, 0x8d, 0x40, 0x73, 0x4c, 0x04, 0x16, 0x71, 0xd3, 0x50, 0xe3, 0x86, 0x47, 0x1a, 0x4b, 0x11, 0xae, 0x6a, 0x04, 0x9a, 0x63, 0x22, 0xb0, 0x88, 0x9b, 0x86, 0x1a, 0x37, 0x3c, 0xd2, 0x58,
0x7c, 0xa5, 0xde, 0x2f, 0x68, 0xde, 0x5b, 0x40, 0x5c, 0x05, 0x2c, 0xa4, 0x94, 0xaa, 0xbb, 0xa5, 0xe2, 0x2b, 0xf5, 0x7e, 0x41, 0xf3, 0xde, 0x02, 0xe2, 0x2a, 0x60, 0x21, 0xa5, 0x54, 0xdd, 0x2d,
0x55, 0xdd, 0xd5, 0x3c, 0xfa, 0x07, 0x03, 0x2e, 0x72, 0x2f, 0xd7, 0x86, 0x71, 0x17, 0x56, 0x58, 0xad, 0xea, 0xae, 0xe6, 0xd1, 0xdf, 0x19, 0x70, 0x91, 0x7b, 0xb9, 0x36, 0x8c, 0xbb, 0xb0, 0xc2,
0x25, 0x12, 0x64, 0xa2, 0xf9, 0xd4, 0x98, 0x44, 0x51, 0x0d, 0x1a, 0xa7, 0x26, 0xcc, 0x15, 0x7a, 0x2a, 0x91, 0x20, 0x13, 0xcd, 0x27, 0xc6, 0x24, 0x8a, 0x6a, 0xd0, 0x38, 0x35, 0x61, 0xae, 0xd0,
0x95, 0x4e, 0x64, 0xe6, 0x19, 0xa7, 0xb0, 0x6a, 0x8f, 0x53, 0x13, 0xb6, 0x3f, 0x30, 0x60, 0x05, 0xab, 0x74, 0x22, 0x33, 0xcf, 0x38, 0x85, 0x55, 0x7b, 0x9c, 0x9a, 0xb0, 0xfd, 0x7b, 0x03, 0x56,
0x53, 0x9b, 0x32, 0xcf, 0xcf, 0xdd, 0xec, 0xb7, 0xe0, 0x62, 0xb5, 0xe7, 0x3b, 0x7e, 0x92, 0xf6, 0x30, 0xb5, 0x29, 0xf3, 0xfc, 0xdc, 0xcd, 0x7e, 0x0b, 0x2e, 0x56, 0x7b, 0xbe, 0xe3, 0x27, 0x69,
0xcc, 0x8d, 0xc6, 0xb4, 0xa6, 0x8f, 0x55, 0x60, 0x7f, 0x0f, 0x7a, 0xfb, 0x59, 0x10, 0xec, 0x92, 0xcf, 0xdc, 0x68, 0x4c, 0x6b, 0xfa, 0x58, 0x05, 0xf6, 0x77, 0xa0, 0xb7, 0x9f, 0x05, 0xc1, 0x2e,
0x24, 0x71, 0x87, 0x64, 0xeb, 0x51, 0x9f, 0x8c, 0x38, 0xdf, 0x21, 0x49, 0xc4, 0x27, 0x07, 0x89, 0x49, 0x12, 0x77, 0x48, 0xb6, 0x1e, 0xf5, 0xc9, 0x88, 0xf3, 0x1d, 0x92, 0x44, 0x7c, 0x72, 0x90,
0xe3, 0x6d, 0xe6, 0x11, 0x61, 0x7c, 0xd3, 0xc9, 0x49, 0xee, 0x57, 0x12, 0xc7, 0x7c, 0x85, 0x94, 0x38, 0xde, 0x66, 0x1e, 0x11, 0xc6, 0x37, 0x9d, 0x9c, 0xe4, 0x7e, 0x25, 0x71, 0xcc, 0x57, 0x48,
0x25, 0x1c, 0x52, 0xd6, 0x15, 0x98, 0x0b, 0xb8, 0x59, 0x0d, 0x61, 0xd6, 0xfa, 0x18, 0xb3, 0x76, 0x59, 0xc2, 0x21, 0x65, 0x5d, 0x81, 0xb9, 0x80, 0x9b, 0xd5, 0x10, 0x66, 0xad, 0x8f, 0x31, 0x6b,
0x93, 0xe1, 0x8e, 0x9b, 0xba, 0x8e, 0x68, 0x67, 0x87, 0xf0, 0xdc, 0xf8, 0xde, 0x47, 0x13, 0x03, 0x37, 0x19, 0xee, 0xb8, 0xa9, 0xeb, 0x88, 0x76, 0x76, 0x08, 0xcf, 0x8d, 0xef, 0x7d, 0x34, 0x31,
0x98, 0x17, 0x59, 0xa2, 0x4a, 0xf1, 0x19, 0x2d, 0xe2, 0x57, 0x65, 0x71, 0xb3, 0x13, 0xd4, 0x23, 0x80, 0x79, 0x91, 0x25, 0xaa, 0x14, 0x9f, 0xd1, 0x22, 0x7e, 0x55, 0x16, 0x37, 0x3b, 0x41, 0x3d,
0xec, 0xe8, 0x3a, 0x39, 0x69, 0x5f, 0x04, 0xeb, 0x26, 0x49, 0x77, 0xdd, 0x87, 0xd7, 0xa8, 0xb7, 0xc2, 0x8e, 0xae, 0x93, 0x93, 0xf6, 0x45, 0xb0, 0x6e, 0x92, 0x74, 0xd7, 0x7d, 0x78, 0x8d, 0x7a,
0xeb, 0xd3, 0x3e, 0x19, 0x39, 0x64, 0x64, 0x5f, 0x87, 0x0b, 0x35, 0x6e, 0x12, 0x89, 0x89, 0xee, 0xbb, 0x3e, 0xed, 0x93, 0x91, 0x43, 0x46, 0xf6, 0x75, 0xb8, 0x50, 0xe3, 0x26, 0x91, 0x98, 0xe8,
0x3e, 0xec, 0x93, 0x91, 0x30, 0xa0, 0xeb, 0x48, 0x4a, 0xf0, 0x45, 0x2b, 0x59, 0xbf, 0x49, 0xca, 0xee, 0xc3, 0x3e, 0x19, 0x09, 0x03, 0xba, 0x8e, 0xa4, 0x04, 0x5f, 0xb4, 0x92, 0xf5, 0x9b, 0xa4,
0x1e, 0xc1, 0x32, 0x77, 0x55, 0x9f, 0x50, 0x6f, 0x37, 0x19, 0x0a, 0x15, 0x1b, 0xd0, 0x41, 0x04, 0xec, 0x11, 0x2c, 0x73, 0x57, 0xf5, 0x09, 0xf5, 0x76, 0x93, 0xa1, 0x50, 0xb1, 0x01, 0x1d, 0x44,
0x76, 0x93, 0x61, 0x59, 0x10, 0x2a, 0x2c, 0xde, 0x62, 0x10, 0xf8, 0xdc, 0x25, 0xa2, 0x85, 0x1c, 0x60, 0x37, 0x19, 0x96, 0x05, 0xa1, 0xc2, 0xe2, 0x2d, 0x06, 0x81, 0xcf, 0x5d, 0x22, 0x5a, 0xc8,
0x8d, 0xc2, 0xe2, 0xd3, 0x2e, 0x21, 0x72, 0x7f, 0xc4, 0xe7, 0x63, 0xc3, 0x29, 0x68, 0xfb, 0x83, 0xd1, 0x28, 0x2c, 0x3e, 0xed, 0x12, 0x22, 0xf7, 0x47, 0x7c, 0x3e, 0x36, 0x9c, 0x82, 0xb6, 0xff,
0x26, 0xcc, 0x4b, 0x40, 0xc5, 0x54, 0xe3, 0x35, 0x78, 0x81, 0x17, 0x52, 0x98, 0x2d, 0x07, 0x27, 0xd6, 0x84, 0x79, 0x09, 0xa8, 0x98, 0x6a, 0xbc, 0x06, 0x2f, 0xf0, 0x42, 0x0a, 0xb3, 0xe5, 0xe0,
0xe5, 0x56, 0x13, 0x29, 0x75, 0x73, 0xda, 0xd0, 0x37, 0xa7, 0x15, 0x9b, 0xe6, 0xea, 0x36, 0x55, 0xa4, 0xdc, 0x6a, 0x22, 0xa5, 0x6e, 0x4e, 0x1b, 0xfa, 0xe6, 0xb4, 0x62, 0xd3, 0x5c, 0xdd, 0xa6,
0xc6, 0xd5, 0xac, 0x8f, 0x8b, 0x27, 0x07, 0xb1, 0x5e, 0xee, 0x07, 0x6e, 0x7a, 0xc8, 0xe2, 0x50, 0xca, 0xb8, 0x9a, 0xf5, 0x71, 0xf1, 0xe4, 0x20, 0xd6, 0xcb, 0xfd, 0xc0, 0x4d, 0x0f, 0x59, 0x1c,
0x96, 0xd4, 0x4d, 0xa7, 0xc6, 0xe7, 0x09, 0x09, 0x79, 0x45, 0x45, 0x81, 0x0b, 0x43, 0x85, 0xcb, 0xca, 0x92, 0xba, 0xe9, 0xd4, 0xf8, 0x3c, 0x21, 0x21, 0xaf, 0xa8, 0x28, 0x70, 0x61, 0xa8, 0x70,
0xf3, 0x37, 0x72, 0xf2, 0xca, 0x02, 0xf7, 0x32, 0x3a, 0x13, 0x6d, 0x4b, 0x12, 0x9f, 0x51, 0x91, 0x79, 0xfe, 0x46, 0x4e, 0x5e, 0x59, 0xe0, 0x5e, 0x46, 0x67, 0xa2, 0x6d, 0x49, 0xe2, 0x33, 0x2a,
0xdb, 0xb0, 0x80, 0x50, 0x59, 0x7c, 0xe4, 0x61, 0x32, 0xbc, 0x11, 0xb3, 0x50, 0xee, 0x68, 0x72, 0x72, 0x1b, 0x16, 0x10, 0x2a, 0x8b, 0x8f, 0x3c, 0x4c, 0x86, 0x37, 0x62, 0x16, 0xca, 0x1d, 0x4d,
0x52, 0x8c, 0x9c, 0xd1, 0x34, 0xcf, 0x8b, 0x1d, 0x94, 0x55, 0x58, 0x5c, 0x56, 0x92, 0xa2, 0x7a, 0x4e, 0x8a, 0x91, 0x33, 0x9a, 0xe6, 0x79, 0xb1, 0x83, 0xb2, 0x0a, 0x8b, 0xcb, 0x4a, 0x52, 0x54,
0x58, 0x74, 0x72, 0xd2, 0x5a, 0x81, 0x46, 0x42, 0x46, 0xb2, 0x24, 0xe0, 0x3f, 0x35, 0xcf, 0x2d, 0x0f, 0x8b, 0x4e, 0x4e, 0x5a, 0x2b, 0xd0, 0x48, 0xc8, 0x48, 0x96, 0x04, 0xfc, 0xa7, 0xe6, 0xb9,
0xeb, 0x9e, 0xab, 0xac, 0xf1, 0x2b, 0xe2, 0xab, 0xba, 0xc6, 0x97, 0x0b, 0xe7, 0xaa, 0xb6, 0x70, 0x65, 0xdd, 0x73, 0x95, 0x35, 0x7e, 0x45, 0x7c, 0x55, 0xd7, 0xf8, 0x72, 0xe1, 0x5c, 0xd5, 0x16,
0x5e, 0x83, 0x79, 0x16, 0xf1, 0x38, 0x4f, 0x7a, 0x96, 0x98, 0x63, 0x9f, 0x9e, 0x3c, 0xc7, 0xae, 0xce, 0x6b, 0x30, 0xcf, 0x22, 0x1e, 0xe7, 0x49, 0xcf, 0x12, 0x73, 0xec, 0x93, 0x93, 0xe7, 0xd8,
0xdc, 0xc5, 0x96, 0xd7, 0x69, 0x1a, 0x3f, 0x72, 0x72, 0x39, 0xeb, 0x0e, 0x2c, 0xb3, 0xc3, 0xc3, 0x95, 0xbb, 0xd8, 0xf2, 0x3a, 0x4d, 0xe3, 0x47, 0x4e, 0x2e, 0x67, 0xdd, 0x81, 0x65, 0x76, 0x78,
0xc0, 0xa7, 0x64, 0x3f, 0x4b, 0x8e, 0x44, 0xe9, 0x7d, 0x41, 0x2c, 0x4d, 0xf6, 0xb8, 0xa5, 0x49, 0x18, 0xf8, 0x94, 0xec, 0x67, 0xc9, 0x91, 0x28, 0xbd, 0x2f, 0x88, 0xa5, 0xc9, 0x1e, 0xb7, 0x34,
0x6f, 0xe9, 0x54, 0x45, 0xd7, 0x5f, 0x83, 0x45, 0xb5, 0x1b, 0x0e, 0xc3, 0x31, 0x79, 0x24, 0x63, 0xe9, 0x2d, 0x9d, 0xaa, 0x28, 0xcf, 0x27, 0x6e, 0x8a, 0xa5, 0x93, 0x98, 0x71, 0x17, 0x37, 0x1a,
0x90, 0xff, 0xe4, 0xd9, 0xe4, 0xc4, 0x0d, 0x32, 0xcc, 0xce, 0x0b, 0x0e, 0x12, 0xaf, 0x99, 0x5f, 0x3c, 0x9f, 0xa8, 0xbc, 0xf5, 0xd7, 0x60, 0x51, 0x35, 0x85, 0x43, 0x75, 0x4c, 0x1e, 0xc9, 0x38,
0x32, 0xec, 0x9f, 0x1a, 0xb0, 0x5c, 0xe9, 0x80, 0xb7, 0x4e, 0xfd, 0x34, 0x20, 0x52, 0x03, 0x12, 0xe5, 0x3f, 0x79, 0xc6, 0x39, 0x71, 0x83, 0x0c, 0x33, 0xf8, 0x82, 0x83, 0xc4, 0x6b, 0xe6, 0x17,
0xbc, 0xf2, 0xf1, 0x48, 0x32, 0x90, 0x21, 0x2c, 0x7e, 0xcb, 0x1c, 0xd2, 0x28, 0xf6, 0xb3, 0x36, 0x0c, 0xfb, 0xc7, 0x06, 0x2c, 0x57, 0x8c, 0xe0, 0xad, 0x53, 0x3f, 0x0d, 0x88, 0xd4, 0x80, 0x04,
0x2c, 0xfa, 0x77, 0xfb, 0x5c, 0x51, 0x9f, 0x65, 0xd4, 0x2b, 0xce, 0xa4, 0x14, 0x1e, 0x0f, 0x21, 0xaf, 0x8e, 0x3c, 0x92, 0x0c, 0x64, 0x98, 0x8b, 0xdf, 0x32, 0xcf, 0x34, 0x8a, 0x3d, 0xaf, 0x0d,
0xff, 0x6e, 0x7f, 0xcb, 0xf5, 0x86, 0x04, 0x4f, 0x8e, 0x9a, 0xc2, 0x26, 0x9d, 0x69, 0x7b, 0xb0, 0x8b, 0xfe, 0xdd, 0x3e, 0x57, 0xd4, 0x67, 0x19, 0xf5, 0x8a, 0x73, 0x2b, 0x85, 0xc7, 0xc3, 0xcc,
0x70, 0xcf, 0x8f, 0x92, 0x6d, 0x16, 0x86, 0xdc, 0x11, 0x1e, 0x49, 0x79, 0x8e, 0x36, 0x84, 0xbf, 0xbf, 0xdb, 0xdf, 0x72, 0xbd, 0x21, 0xc1, 0xd3, 0xa5, 0xa6, 0xb0, 0x49, 0x67, 0xda, 0x1e, 0x2c,
0x25, 0xc5, 0x43, 0xc5, 0x23, 0x87, 0x6e, 0x16, 0xa4, 0xbc, 0x69, 0x3e, 0x71, 0x15, 0x96, 0x38, 0xdc, 0xf3, 0xa3, 0x64, 0x9b, 0x85, 0x21, 0x77, 0x96, 0x47, 0x52, 0x9e, 0xc7, 0x0d, 0x11, 0x13,
0x33, 0x49, 0x18, 0xdd, 0x41, 0x69, 0xb4, 0x53, 0xe1, 0xd8, 0x7f, 0x36, 0x61, 0x45, 0xec, 0x6c, 0x92, 0xe2, 0xe1, 0xe4, 0x91, 0x43, 0x37, 0x0b, 0x52, 0xde, 0x34, 0x9f, 0xdc, 0x0a, 0x4b, 0x9c,
0xb6, 0x85, 0xdb, 0x3d, 0x21, 0xf4, 0x0a, 0x34, 0xc5, 0x34, 0x94, 0xd9, 0xe2, 0xf4, 0xdd, 0x10, 0xab, 0x24, 0x8c, 0xee, 0xa0, 0x34, 0xda, 0xa9, 0x70, 0xec, 0x3f, 0x99, 0xb0, 0x22, 0x76, 0x3f,
0x36, 0xb5, 0xae, 0x42, 0x8b, 0x45, 0x22, 0xc5, 0x60, 0x22, 0x7b, 0x61, 0x92, 0x90, 0x7e, 0x3c, 0xdb, 0x22, 0x34, 0x3c, 0x21, 0xf4, 0x0a, 0x34, 0xc5, 0x54, 0x95, 0x19, 0xe5, 0xf4, 0x1d, 0x13,
0xe5, 0x48, 0x29, 0xeb, 0x06, 0x40, 0x58, 0x66, 0x14, 0x5c, 0xba, 0xa7, 0xd5, 0xa1, 0x48, 0x72, 0x36, 0xb5, 0xae, 0x42, 0x8b, 0x45, 0x22, 0x0d, 0x61, 0xb2, 0x7b, 0x61, 0x92, 0x90, 0x7e, 0x84,
0x70, 0x8b, 0x65, 0xb8, 0x38, 0xa3, 0x6a, 0x38, 0x3a, 0xd3, 0xda, 0x83, 0x25, 0x61, 0xf6, 0xdd, 0xe5, 0x48, 0x29, 0xeb, 0x06, 0x40, 0x58, 0x66, 0x1d, 0x5c, 0xde, 0xa7, 0xd5, 0xa1, 0x48, 0x72,
0x7c, 0x5b, 0x2c, 0x7c, 0x30, 0x7d, 0x8f, 0x15, 0x69, 0xfb, 0x97, 0x86, 0x84, 0x91, 0x7f, 0xed, 0x70, 0x8b, 0xa5, 0xba, 0x38, 0xc7, 0x6a, 0x38, 0x3a, 0xd3, 0xda, 0x83, 0x25, 0x61, 0xf6, 0xdd,
0x13, 0xc4, 0xbe, 0x84, 0xc4, 0x98, 0x09, 0x92, 0x75, 0x58, 0x08, 0x33, 0x65, 0x97, 0xde, 0x70, 0x7c, 0xeb, 0x2c, 0x7c, 0x30, 0x7d, 0x8f, 0x15, 0x69, 0xfb, 0xe7, 0x86, 0x84, 0x91, 0x7f, 0xed,
0x0a, 0xba, 0x74, 0x51, 0x63, 0x6a, 0x17, 0xd9, 0xbf, 0x32, 0xa0, 0xf7, 0x06, 0xf3, 0xa9, 0xf8, 0x13, 0xc4, 0xbe, 0x84, 0xc4, 0x98, 0x09, 0x92, 0x75, 0x58, 0x08, 0x33, 0x65, 0x27, 0xdf, 0x70,
0x70, 0x2d, 0x8a, 0x02, 0x79, 0x90, 0x3a, 0xb3, 0xcf, 0xbf, 0x06, 0x6d, 0x17, 0xd5, 0xd0, 0x54, 0x0a, 0xba, 0x74, 0x51, 0x63, 0x6a, 0x17, 0xd9, 0xbf, 0x30, 0xa0, 0xf7, 0x06, 0xf3, 0xa9, 0xf8,
0xba, 0x7d, 0x8a, 0x9d, 0x77, 0x29, 0xa3, 0x6c, 0xa2, 0x1a, 0xea, 0x26, 0xca, 0x7e, 0xcf, 0x80, 0x70, 0x2d, 0x8a, 0x02, 0x79, 0xd8, 0x3a, 0xb3, 0xcf, 0xbf, 0x02, 0x6d, 0x17, 0xd5, 0xd0, 0x54,
0xba, 0x7d, 0x8a, 0xdd, 0x79, 0x29, 0xa3, 0x6c, 0xb4, 0x1a, 0xea, 0x46, 0xcb, 0x7e, 0xcf, 0x80,
0x25, 0x04, 0xe5, 0xcd, 0xcc, 0x4f, 0x67, 0xb6, 0x6f, 0x0b, 0x16, 0x46, 0x99, 0x9f, 0xce, 0x10, 0x25, 0x04, 0xe5, 0xcd, 0xcc, 0x4f, 0x67, 0xb6, 0x6f, 0x0b, 0x16, 0x46, 0x99, 0x9f, 0xce, 0x10,
0x95, 0x85, 0x5c, 0x3d, 0x9e, 0x1a, 0x63, 0xe2, 0xc9, 0x7e, 0xdf, 0x80, 0x4b, 0x55, 0x58, 0xaf, 0x95, 0x85, 0x5c, 0x3d, 0x9e, 0x1a, 0x63, 0xe2, 0xc9, 0x7e, 0xdf, 0x80, 0x4b, 0x55, 0x58, 0xaf,
0x0d, 0x06, 0x24, 0x7a, 0x92, 0x53, 0x4a, 0xdb, 0x44, 0xce, 0x55, 0x36, 0x91, 0x63, 0x4d, 0x76, 0x0d, 0x06, 0x24, 0x7a, 0x92, 0x53, 0x4a, 0xdb, 0x68, 0xce, 0x55, 0x36, 0x9a, 0x63, 0x4d, 0x76,
0xc8, 0x3b, 0x64, 0xf0, 0xf4, 0x9a, 0xfc, 0x43, 0x13, 0x3e, 0x76, 0xb3, 0x98, 0x78, 0xf7, 0x62, 0xc8, 0x3b, 0x64, 0xf0, 0xf4, 0x9a, 0xfc, 0x7d, 0x13, 0x3e, 0x72, 0xb3, 0x98, 0x78, 0xf7, 0x62,
0x97, 0x26, 0x87, 0x24, 0x8e, 0x9f, 0xa0, 0xbd, 0x77, 0xa0, 0x4b, 0xc9, 0x83, 0xd2, 0x26, 0x39, 0x97, 0x26, 0x87, 0x24, 0x8e, 0x9f, 0xa0, 0xbd, 0x77, 0xa0, 0x4b, 0xc9, 0x83, 0xd2, 0x26, 0x39,
0x1d, 0xa7, 0x55, 0xa3, 0x0b, 0x4f, 0xb7, 0x76, 0xd9, 0xff, 0x36, 0x60, 0x05, 0xf5, 0x7c, 0xdd, 0x1d, 0xa7, 0x55, 0xa3, 0x0b, 0x4f, 0xb7, 0x76, 0xd9, 0xff, 0x36, 0x60, 0x05, 0xf5, 0x7c, 0xd5,
0x1f, 0x1c, 0x3f, 0xc1, 0xc1, 0xef, 0xc1, 0xd2, 0xb1, 0xb0, 0x80, 0x53, 0x33, 0x2c, 0xdb, 0x15, 0x1f, 0x1c, 0x3f, 0xc1, 0xc1, 0xef, 0xc1, 0xd2, 0xb1, 0xb0, 0x80, 0x53, 0x33, 0x2c, 0xdb, 0x15,
0xe9, 0x29, 0x87, 0xff, 0x1f, 0x03, 0x56, 0x51, 0xd1, 0x6d, 0x7a, 0xe2, 0x3f, 0xc9, 0x60, 0xdd, 0xe9, 0x29, 0x87, 0xff, 0x1f, 0x03, 0x56, 0x51, 0xd1, 0x6d, 0x7a, 0xe2, 0x3f, 0xc9, 0x60, 0xdd,
0x87, 0x65, 0x1f, 0x4d, 0x98, 0x11, 0x80, 0xaa, 0xf8, 0x94, 0x08, 0xfc, 0xde, 0x80, 0x65, 0xd4, 0x87, 0x65, 0x1f, 0x4d, 0x98, 0x11, 0x80, 0xaa, 0xf8, 0x94, 0x08, 0xfc, 0xd6, 0x80, 0x65, 0xd4,
0x74, 0x9d, 0xa6, 0x24, 0x9e, 0x79, 0xfc, 0xb7, 0xa0, 0x43, 0x68, 0x1a, 0xbb, 0x74, 0x96, 0x15, 0x74, 0x9d, 0xa6, 0x24, 0x9e, 0x79, 0xfc, 0xb7, 0xa0, 0x43, 0x68, 0x1a, 0xbb, 0x74, 0x96, 0x15,
0x52, 0x15, 0x9d, 0x72, 0x91, 0x7c, 0xcf, 0x00, 0x4b, 0xa8, 0xda, 0xf1, 0x93, 0xd0, 0x4f, 0x92, 0x52, 0x15, 0x9d, 0x72, 0x91, 0x7c, 0xcf, 0x00, 0x4b, 0xa8, 0xda, 0xf1, 0x93, 0xd0, 0x4f, 0x92,
0x27, 0xe8, 0xba, 0xe9, 0x0c, 0xfe, 0xb9, 0x09, 0x17, 0x15, 0x2d, 0xbb, 0x59, 0xfa, 0xb4, 0x9b, 0x27, 0xe8, 0xba, 0xe9, 0x0c, 0xfe, 0xa9, 0x09, 0x17, 0x15, 0x2d, 0xbb, 0x59, 0xfa, 0xb4, 0x9b,
0x6c, 0xed, 0x40, 0x9b, 0xd7, 0x08, 0xea, 0xed, 0xc4, 0xb4, 0x1d, 0x95, 0x82, 0xbc, 0x8a, 0x15, 0x6c, 0xed, 0x40, 0x9b, 0xd7, 0x08, 0xea, 0x0d, 0xc6, 0xb4, 0x1d, 0x95, 0x82, 0xbc, 0x8a, 0x15,
0x44, 0x9f, 0x0c, 0x18, 0xf5, 0x12, 0x51, 0x1c, 0x75, 0x1d, 0x8d, 0xc7, 0x97, 0xa1, 0x75, 0x45, 0x44, 0x9f, 0x0c, 0x18, 0xf5, 0x12, 0x51, 0x1c, 0x75, 0x1d, 0x8d, 0xc7, 0x97, 0xa1, 0x75, 0x45,
0xcd, 0xb6, 0x4b, 0x07, 0x24, 0x78, 0x66, 0x20, 0xb2, 0x7f, 0x63, 0xc0, 0x12, 0x36, 0x79, 0xfa, 0xcd, 0xb6, 0x4b, 0x07, 0x24, 0x78, 0x66, 0x20, 0xb2, 0x7f, 0x65, 0xc0, 0x12, 0x36, 0x79, 0xfa,
0x87, 0xcc, 0x73, 0x3d, 0x06, 0xf2, 0x47, 0xc6, 0x4b, 0x3c, 0xbc, 0xd6, 0x14, 0x2d, 0x6a, 0x5d, 0x87, 0xcc, 0x73, 0x3d, 0x06, 0xf2, 0x87, 0xc6, 0x4b, 0x3c, 0xbc, 0xd6, 0x14, 0x2d, 0x6a, 0x5d,
0xfd, 0xf4, 0x86, 0xd6, 0x2d, 0xe8, 0x0c, 0x8e, 0x5c, 0x3a, 0x9c, 0x29, 0xb8, 0x54, 0x51, 0x3b, 0xfd, 0xf4, 0x86, 0xd6, 0x2d, 0xe8, 0x0c, 0x8e, 0x5c, 0x3a, 0x9c, 0x29, 0xb8, 0x54, 0x51, 0x3b,
0x85, 0xe7, 0xd4, 0x03, 0xb9, 0x6d, 0xfc, 0x24, 0x86, 0xff, 0x6a, 0x65, 0x28, 0xa7, 0xde, 0x3e, 0x85, 0xe7, 0xd4, 0x43, 0xbb, 0x6d, 0xfc, 0x24, 0x86, 0xff, 0x6a, 0x65, 0x28, 0xa7, 0xde, 0x50,
0x3e, 0x1e, 0xe8, 0xc7, 0xb0, 0x8a, 0xb7, 0x40, 0x4a, 0x4d, 0x68, 0xf5, 0x60, 0xde, 0xf5, 0xf0, 0x3e, 0x1e, 0xe8, 0xc7, 0xb0, 0x8a, 0x37, 0x45, 0x4a, 0x4d, 0x68, 0xf5, 0x60, 0xde, 0xf5, 0xf0,
0x00, 0xc1, 0x10, 0x42, 0x39, 0xa9, 0xdf, 0xef, 0xc9, 0x27, 0x1c, 0xe5, 0xfd, 0xde, 0x65, 0x00, 0x90, 0xc1, 0x10, 0x42, 0x39, 0xa9, 0xdf, 0x01, 0xca, 0x67, 0x1e, 0xe5, 0x1d, 0xe0, 0x65, 0x00,
0xd7, 0xf3, 0xde, 0x62, 0xb1, 0xe7, 0xd3, 0xbc, 0xc0, 0x57, 0x38, 0xf6, 0x1b, 0xb0, 0x78, 0x23, 0xd7, 0xf3, 0xde, 0x62, 0xb1, 0xe7, 0xd3, 0xbc, 0xc0, 0x57, 0x38, 0xf6, 0x1b, 0xb0, 0x78, 0x23,
0x66, 0xe1, 0x3d, 0xe5, 0x3e, 0xe7, 0xd4, 0x1b, 0x27, 0xf5, 0x2e, 0xc8, 0xd4, 0xef, 0x82, 0xec, 0x66, 0xe1, 0x3d, 0xe5, 0xce, 0xe7, 0xd4, 0x5b, 0x29, 0xf5, 0xbe, 0xc8, 0xd4, 0xef, 0x8b, 0xec,
0xef, 0xc0, 0xff, 0xd7, 0x0c, 0x17, 0x60, 0x6d, 0xe3, 0x35, 0x55, 0xde, 0x89, 0x0c, 0x99, 0x4f, 0x6f, 0xc1, 0xff, 0xd7, 0x0c, 0x17, 0x60, 0x6d, 0xe3, 0x55, 0x56, 0xde, 0x89, 0x0c, 0x99, 0x8f,
0x8c, 0x81, 0x4c, 0xb5, 0xc5, 0xd1, 0x84, 0xec, 0x1f, 0x18, 0xf0, 0x7c, 0x4d, 0xfd, 0xb5, 0x28, 0x8d, 0x81, 0x4c, 0xb5, 0xc5, 0xd1, 0x84, 0xec, 0xef, 0x19, 0xf0, 0x7c, 0x4d, 0xfd, 0xb5, 0x28,
0x8a, 0xd9, 0x89, 0xf4, 0xc9, 0x79, 0x74, 0xa3, 0x17, 0xbf, 0x66, 0xb5, 0xf8, 0x1d, 0x6b, 0x84, 0x8a, 0xd9, 0x89, 0xf4, 0xc9, 0x79, 0x74, 0xa3, 0x17, 0xbf, 0x66, 0xb5, 0xf8, 0x1d, 0x6b, 0x84,
0x56, 0xb0, 0x7f, 0x08, 0x46, 0xfc, 0xda, 0x80, 0x65, 0x69, 0x84, 0xe7, 0xc9, 0x6e, 0xbf, 0x08, 0x56, 0xb0, 0x7f, 0x00, 0x46, 0xfc, 0xd2, 0x80, 0x65, 0x69, 0x84, 0xe7, 0xc9, 0x6e, 0x3f, 0x0f,
0x2d, 0xbc, 0xe2, 0x96, 0x1d, 0x3e, 0x3f, 0xb6, 0xc3, 0xfc, 0x6a, 0xde, 0x91, 0x8d, 0xeb, 0x11, 0x2d, 0xbc, 0x06, 0x97, 0x1d, 0x3e, 0x3f, 0xb6, 0xc3, 0xfc, 0xfa, 0xde, 0x91, 0x8d, 0xeb, 0x11,
0x69, 0x8e, 0x9b, 0x51, 0x5f, 0x2e, 0x82, 0x7d, 0xea, 0x4b, 0x68, 0x29, 0x60, 0x7f, 0x33, 0x0f, 0x69, 0x8e, 0x9b, 0x51, 0x5f, 0x2c, 0x82, 0x7d, 0xea, 0x8b, 0x6a, 0x29, 0x60, 0x7f, 0x3d, 0x0f,
0xe6, 0x1d, 0x12, 0x90, 0xf3, 0xc4, 0xc8, 0xbe, 0x0f, 0x4b, 0xe2, 0xbe, 0xbd, 0xc4, 0xe0, 0x5c, 0xe6, 0x1d, 0x12, 0x90, 0xf3, 0xc4, 0xc8, 0xbe, 0x0f, 0x4b, 0xe2, 0x4e, 0xbe, 0xc4, 0xe0, 0x5c,
0xd4, 0xbe, 0x05, 0x2b, 0x42, 0xed, 0xb9, 0xdb, 0x5b, 0xcc, 0x0e, 0x8e, 0x8f, 0xba, 0x94, 0x9c, 0xd4, 0xbe, 0x05, 0x2b, 0x42, 0xed, 0xb9, 0xdb, 0x5b, 0xcc, 0x0e, 0x8e, 0x8f, 0xba, 0x94, 0x9c,
0x8b, 0xf6, 0xcf, 0xc3, 0x85, 0x1c, 0xfb, 0xfb, 0x91, 0x57, 0x1c, 0x22, 0x4d, 0x38, 0x3a, 0xb7, 0x8b, 0xf6, 0xcf, 0xc2, 0x85, 0x1c, 0xfb, 0xfb, 0x91, 0x57, 0x1c, 0x22, 0x4d, 0x38, 0x5e, 0xb7,
0xbf, 0x00, 0x6b, 0xdb, 0x8c, 0x9e, 0x90, 0x38, 0xc1, 0x8b, 0x05, 0x21, 0x92, 0x4b, 0x68, 0x93, 0x3f, 0x07, 0x6b, 0xdb, 0x8c, 0x9e, 0x90, 0x38, 0xc1, 0xcb, 0x07, 0x21, 0x92, 0x4b, 0x68, 0x93,
0x5f, 0x52, 0xf6, 0x3b, 0xb0, 0xae, 0x4a, 0xf4, 0x49, 0xba, 0x1f, 0xfb, 0x27, 0x8a, 0x94, 0x3c, 0x5f, 0x52, 0xf6, 0x3b, 0xb0, 0xae, 0x4a, 0xf4, 0x49, 0xba, 0x1f, 0xfb, 0x27, 0x8a, 0x94, 0x3c,
0x5a, 0x36, 0xb4, 0xa3, 0xe5, 0xf2, 0x28, 0xda, 0xd4, 0x8e, 0xa2, 0x2f, 0x41, 0xdb, 0x4f, 0xa4, 0x7e, 0x36, 0xb4, 0xe3, 0xe7, 0xf2, 0xb8, 0xda, 0xd4, 0x8e, 0xab, 0x2f, 0x41, 0xdb, 0x4f, 0xa4,
0x02, 0x11, 0x54, 0x0b, 0x4e, 0xc9, 0xb0, 0xfb, 0xb0, 0x2a, 0x6f, 0xc0, 0xf7, 0xdd, 0xa1, 0x4f, 0x02, 0x11, 0x54, 0x0b, 0x4e, 0xc9, 0xb0, 0xfb, 0xb0, 0x2a, 0x6f, 0xc9, 0xf7, 0xdd, 0xa1, 0x4f,
0x71, 0x05, 0xbc, 0x0c, 0x10, 0xb9, 0xc3, 0xfc, 0x05, 0x0c, 0xde, 0x42, 0x28, 0x1c, 0xfe, 0x3d, 0x71, 0x05, 0xbc, 0x0c, 0x10, 0xb9, 0xc3, 0xfc, 0x95, 0x0c, 0xde, 0x54, 0x28, 0x1c, 0xfe, 0x3d,
0x39, 0x62, 0x0f, 0xe4, 0x77, 0x13, 0xbf, 0x97, 0x1c, 0xfb, 0x1b, 0x60, 0x39, 0x24, 0x89, 0x18, 0x39, 0x62, 0x0f, 0xe4, 0x77, 0x13, 0xbf, 0x97, 0x1c, 0xfb, 0x6b, 0x60, 0x39, 0x24, 0x89, 0x18,
0x4d, 0x88, 0xa2, 0x75, 0x03, 0x3a, 0xdb, 0x59, 0x1c, 0x13, 0xca, 0xbb, 0xca, 0x9f, 0x83, 0xa8, 0x4d, 0x88, 0xa2, 0x75, 0x03, 0x3a, 0xdb, 0x59, 0x1c, 0x13, 0xca, 0xbb, 0xca, 0x9f, 0x8c, 0xa8,
0x2c, 0xae, 0xb7, 0x5f, 0xea, 0xc5, 0x93, 0x6b, 0x85, 0x63, 0xff, 0xa2, 0x01, 0xed, 0xbe, 0x3f, 0x2c, 0xae, 0xb7, 0x5f, 0xea, 0xc5, 0xd3, 0x6d, 0x85, 0x63, 0xff, 0xac, 0x01, 0xed, 0xbe, 0x3f,
0xa4, 0x6e, 0xe0, 0x90, 0x91, 0xf5, 0x15, 0x68, 0xe1, 0x7e, 0x42, 0xba, 0x71, 0xdc, 0x49, 0x2a, 0xa4, 0x6e, 0xe0, 0x90, 0x91, 0xf5, 0x25, 0x68, 0xe1, 0x7e, 0x42, 0xba, 0x71, 0xdc, 0x69, 0x2b,
0xb6, 0xc6, 0x8d, 0x93, 0x43, 0x46, 0xb7, 0xfe, 0xcf, 0x91, 0x32, 0xd6, 0x9b, 0xd0, 0xc5, 0x5f, 0xb6, 0xc6, 0x8d, 0x93, 0x43, 0x46, 0xb7, 0xfe, 0xcf, 0x91, 0x32, 0xd6, 0x9b, 0xd0, 0xc5, 0x5f,
0xb7, 0xf1, 0x7c, 0x48, 0x26, 0x97, 0xcf, 0x9c, 0xa1, 0x44, 0xb6, 0x46, 0x5d, 0xba, 0x06, 0x6e, 0xb7, 0xf1, 0x7c, 0x48, 0x26, 0x97, 0x4f, 0x9d, 0xa1, 0x44, 0xb6, 0x46, 0x5d, 0xba, 0x06, 0x6e,
0xd0, 0x40, 0xd4, 0x1b, 0x72, 0xee, 0x4e, 0x36, 0x08, 0xcb, 0x12, 0x69, 0x10, 0xca, 0x70, 0x69, 0xd0, 0x40, 0xd4, 0x1b, 0x72, 0xee, 0x4e, 0x36, 0x08, 0xcb, 0x12, 0x69, 0x10, 0xca, 0x70, 0x69,
0x57, 0x9c, 0xa0, 0xc8, 0x34, 0x3a, 0x59, 0x1a, 0x0f, 0x5a, 0xa4, 0x34, 0xca, 0x70, 0xe9, 0xa3, 0x57, 0x9c, 0xa0, 0xc8, 0x34, 0x3a, 0x59, 0x1a, 0x0f, 0x5a, 0xa4, 0x34, 0xca, 0x70, 0xe9, 0xa3,
0x8c, 0x0e, 0xef, 0x47, 0xf2, 0x60, 0x6f, 0xb2, 0xf4, 0x2d, 0xd1, 0x4c, 0x4a, 0xa3, 0x0c, 0x97, 0x8c, 0x0e, 0xef, 0x47, 0xf2, 0x60, 0x6f, 0xb2, 0xf4, 0x2d, 0xd1, 0x4c, 0x4a, 0xa3, 0x0c, 0x97,
0x8e, 0xc5, 0xca, 0x2a, 0x40, 0x3f, 0x4d, 0x1a, 0x17, 0x60, 0x29, 0x8d, 0x32, 0x5b, 0x6d, 0x98, 0x8e, 0xc5, 0xca, 0x2a, 0x40, 0x3f, 0x4d, 0x1a, 0x17, 0x60, 0x29, 0x8d, 0x32, 0x5b, 0x6d, 0x98,
0x8f, 0xdc, 0x47, 0x01, 0x73, 0x3d, 0xfb, 0xdd, 0x06, 0x40, 0xde, 0x30, 0x11, 0x55, 0x88, 0xe6, 0x8f, 0xdc, 0x47, 0x01, 0x73, 0x3d, 0xfb, 0xdd, 0x06, 0x40, 0xde, 0x30, 0x11, 0x55, 0x88, 0xe6,
0xa2, 0xcd, 0x33, 0x5d, 0x14, 0x05, 0x8f, 0x14, 0x27, 0xf5, 0xc7, 0x3b, 0xe9, 0xb3, 0xd3, 0x3a, 0xa2, 0xcd, 0x33, 0x5d, 0x14, 0x05, 0x8f, 0x14, 0x27, 0xf5, 0xc7, 0x3b, 0xe9, 0xd3, 0xd3, 0x3a,
0x09, 0xb5, 0x55, 0xdc, 0x74, 0xb5, 0xe2, 0xa6, 0xcd, 0x33, 0xdd, 0x24, 0x8d, 0x92, 0x8e, 0xba, 0x09, 0xb5, 0x55, 0xdc, 0x74, 0xb5, 0xe2, 0xa6, 0xcd, 0x33, 0xdd, 0x24, 0x8d, 0x92, 0x8e, 0xba,
0x5a, 0x71, 0xd4, 0xe6, 0x99, 0x8e, 0x92, 0xf2, 0xd2, 0x55, 0x57, 0x2b, 0xae, 0xda, 0x3c, 0xd3, 0x5a, 0x71, 0xd4, 0xe6, 0x99, 0x8e, 0x92, 0xf2, 0xd2, 0x55, 0x57, 0x2b, 0xae, 0xda, 0x3c, 0xd3,
0x55, 0x52, 0x5e, 0x3a, 0xeb, 0x6a, 0xc5, 0x59, 0x9b, 0x67, 0x3a, 0x4b, 0xca, 0xd7, 0xdd, 0xf5, 0x55, 0x52, 0x5e, 0x3a, 0xeb, 0x6a, 0xc5, 0x59, 0x9b, 0x67, 0x3a, 0x4b, 0xca, 0xd7, 0xdd, 0xf5,
0xbe, 0x09, 0x4b, 0x02, 0x32, 0xbc, 0xc5, 0xa3, 0x87, 0x4c, 0x1c, 0xd6, 0x0b, 0xb8, 0xf4, 0x07, 0xbe, 0x09, 0x4b, 0x02, 0x32, 0xbc, 0xe9, 0xa3, 0x87, 0x4c, 0x1c, 0xd6, 0x0b, 0xb8, 0xf4, 0x47,
0x55, 0x3a, 0xd3, 0xfa, 0x1c, 0xac, 0x22, 0x43, 0x3e, 0xc0, 0x29, 0xae, 0x45, 0xdb, 0x4e, 0xfd, 0x57, 0x3a, 0xd3, 0xfa, 0x0c, 0xac, 0x22, 0x83, 0x28, 0x37, 0x15, 0xa6, 0xb8, 0xa9, 0xa8, 0x7f,
0x83, 0xb8, 0x77, 0xc9, 0x92, 0x94, 0x85, 0x3b, 0x6e, 0xea, 0xe6, 0x95, 0x51, 0xc9, 0x51, 0x6f, 0x10, 0x77, 0x33, 0x59, 0x92, 0xb2, 0x70, 0xc7, 0x4d, 0xdd, 0xbc, 0x32, 0x2a, 0x39, 0xea, 0xcd,
0xc5, 0xe6, 0x6a, 0x4f, 0x36, 0x63, 0xc6, 0xc2, 0xe2, 0xba, 0x4b, 0x52, 0x5c, 0x22, 0xf5, 0x43, 0xd9, 0x5c, 0xed, 0x59, 0x67, 0xcc, 0x58, 0x58, 0x5c, 0x89, 0x49, 0x8a, 0x4b, 0xa4, 0x7e, 0x48,
0xc2, 0xb2, 0x54, 0x2e, 0x13, 0x39, 0x89, 0x8f, 0x1e, 0x3c, 0xdf, 0x15, 0x77, 0x49, 0xf2, 0x45, 0x58, 0x96, 0xca, 0x65, 0x22, 0x27, 0xf1, 0x61, 0x84, 0xe7, 0xbb, 0xe2, 0xbe, 0x49, 0xbe, 0x1a,
0x40, 0xc1, 0x10, 0x2b, 0x5b, 0x79, 0x37, 0x26, 0x9f, 0x54, 0x96, 0x9c, 0xb3, 0xef, 0xb1, 0xec, 0x28, 0x18, 0x62, 0x65, 0x2b, 0xef, 0xcf, 0xe4, 0xb3, 0xcb, 0x92, 0x73, 0xf6, 0x5d, 0x97, 0xfd,
0xbf, 0x1b, 0x70, 0x61, 0xdf, 0x8d, 0x53, 0x7f, 0xe0, 0x47, 0x2e, 0x4d, 0x77, 0x49, 0xea, 0x8a, 0x77, 0x03, 0x2e, 0xec, 0xbb, 0x71, 0xea, 0x0f, 0xfc, 0xc8, 0xa5, 0xe9, 0x2e, 0x49, 0x5d, 0x31,
0x31, 0x68, 0xaf, 0xaa, 0x8c, 0xc7, 0x7b, 0x55, 0xb5, 0x0f, 0xcb, 0x43, 0xbd, 0xf4, 0x7f, 0xcc, 0x06, 0xed, 0xe5, 0x95, 0xf1, 0x78, 0x2f, 0xaf, 0xf6, 0x61, 0x79, 0xa8, 0x97, 0xfe, 0x8f, 0x59,
0xaa, 0xbd, 0x2a, 0xae, 0x3d, 0x11, 0x6b, 0x3c, 0xf6, 0x13, 0x31, 0xfb, 0xc7, 0x26, 0x2c, 0x57, 0xb5, 0x57, 0xc5, 0xb5, 0x67, 0x64, 0x8d, 0xc7, 0x7e, 0x46, 0x66, 0xff, 0xd0, 0x84, 0xe5, 0xca,
0x96, 0x4e, 0x5e, 0x8e, 0x62, 0xa1, 0x51, 0xc4, 0x44, 0x41, 0x5b, 0xd7, 0x00, 0xfc, 0x22, 0x8c, 0xd2, 0xc9, 0xcb, 0x51, 0x2c, 0x34, 0x8a, 0x98, 0x28, 0x68, 0xeb, 0x1a, 0x80, 0x5f, 0x84, 0xd1,
0x4e, 0x39, 0x19, 0xd7, 0x63, 0xcd, 0x51, 0x84, 0xc6, 0x5d, 0x90, 0x35, 0x66, 0xbe, 0x20, 0xe3, 0x29, 0x27, 0xe3, 0x7a, 0xac, 0x39, 0x8a, 0xd0, 0xb8, 0x4b, 0xb4, 0xc6, 0xec, 0x97, 0x68, 0xb7,
0x1b, 0x93, 0xa8, 0x74, 0xd2, 0x29, 0x1b, 0x93, 0x31, 0xae, 0x74, 0x54, 0x51, 0xfb, 0xdb, 0xb0, 0xa0, 0x13, 0x95, 0x4e, 0x3a, 0x65, 0x63, 0x32, 0xc6, 0x95, 0x8e, 0x2a, 0x6a, 0x7f, 0x13, 0x56,
0x5a, 0x5b, 0xa1, 0xc4, 0x7d, 0x19, 0x3b, 0x26, 0xb4, 0xb8, 0x2f, 0xe3, 0x84, 0x12, 0xac, 0x66, 0x6b, 0x2b, 0x94, 0xb8, 0x2f, 0x63, 0xc7, 0x84, 0x16, 0xf7, 0x65, 0x9c, 0x50, 0x82, 0xd5, 0xac,
0x35, 0x58, 0x03, 0xff, 0x44, 0x7d, 0x83, 0x2a, 0x49, 0xfb, 0x27, 0x26, 0xac, 0x8d, 0xcf, 0x2e, 0x06, 0x6b, 0xe0, 0x9f, 0xa8, 0xef, 0x54, 0x25, 0x69, 0xff, 0xc8, 0x84, 0xb5, 0xf1, 0xd9, 0xe5,
0xcf, 0x2a, 0xdc, 0x07, 0xd0, 0x9b, 0xb4, 0x92, 0x9f, 0x1b, 0xea, 0x65, 0x74, 0x17, 0x79, 0xf8, 0x59, 0x85, 0xfb, 0x00, 0x7a, 0x93, 0x56, 0xf2, 0x73, 0x43, 0xbd, 0x8c, 0xee, 0x22, 0x0f, 0x3f,
0x59, 0x85, 0xfb, 0x42, 0x1e, 0xdd, 0x4a, 0xaa, 0xb3, 0x7f, 0x57, 0xe0, 0x53, 0x54, 0x1a, 0xcf, 0xab, 0x70, 0x5f, 0xc8, 0xa3, 0x5b, 0x49, 0x75, 0xf6, 0x6f, 0x0a, 0x7c, 0x8a, 0x4a, 0xe3, 0x19,
0x28, 0x3e, 0xd6, 0x4b, 0xb0, 0x82, 0xc3, 0x54, 0x5e, 0x54, 0x60, 0xe1, 0x5a, 0xe3, 0x97, 0x2b, 0xc5, 0xc7, 0x7a, 0x09, 0x56, 0x70, 0x98, 0xca, 0xab, 0x0b, 0x2c, 0x5c, 0x6b, 0xfc, 0x72, 0xa5,
0x85, 0x92, 0xf6, 0xcf, 0x2d, 0x66, 0xff, 0x68, 0xe4, 0x3e, 0x29, 0xea, 0xb7, 0x8f, 0x94, 0x4f, 0x50, 0xd2, 0xfe, 0xb9, 0xc5, 0xec, 0x1f, 0x8c, 0xdc, 0x27, 0x45, 0xfd, 0xf6, 0xa1, 0xf2, 0x49,
0xca, 0x48, 0x53, 0x8a, 0x1a, 0x25, 0xd2, 0x8a, 0xba, 0xf2, 0x7f, 0x91, 0x76, 0x76, 0xa4, 0x15, 0x19, 0x69, 0x4a, 0x51, 0xa3, 0x44, 0x5a, 0x51, 0x57, 0xfe, 0x2f, 0xd2, 0xce, 0x8e, 0xb4, 0x02,
0x58, 0x2a, 0x05, 0x9e, 0xfd, 0x7d, 0xe8, 0xee, 0x90, 0x60, 0x37, 0x19, 0xe6, 0x6f, 0xb9, 0x4e, 0x4b, 0xa5, 0xc0, 0xb3, 0xbf, 0x0b, 0xdd, 0x1d, 0x12, 0xec, 0x26, 0xc3, 0xfc, 0xbd, 0xd7, 0x69,
0x03, 0x72, 0xd2, 0x5f, 0x61, 0x26, 0xbe, 0xe2, 0xaa, 0xbe, 0x00, 0x9b, 0xab, 0xbd, 0x00, 0xb3, 0x40, 0x4e, 0xfa, 0xbb, 0xcc, 0xc4, 0x97, 0x5e, 0xd5, 0x57, 0x62, 0x73, 0xb5, 0x57, 0x62, 0xf6,
0xb7, 0x60, 0x49, 0x35, 0x60, 0x96, 0xa7, 0x6c, 0x5b, 0x97, 0xbe, 0xb5, 0x7e, 0xe5, 0x65, 0xfc, 0x16, 0x2c, 0xa9, 0x06, 0xcc, 0xf2, 0xdc, 0x6d, 0xeb, 0xd2, 0x37, 0xd6, 0xaf, 0xbc, 0x8c, 0x7f,
0xd3, 0xd5, 0xeb, 0x35, 0x10, 0x0f, 0x5a, 0xe2, 0x4f, 0x58, 0xaf, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xcc, 0x7a, 0xbd, 0x06, 0xe2, 0x41, 0x4b, 0xfc, 0x51, 0xeb, 0xd5, 0xff, 0x06, 0x00, 0x00, 0xff,
0xff, 0xda, 0x69, 0x8c, 0xa6, 0x97, 0x35, 0x00, 0x00, 0xff, 0xf8, 0x91, 0x1b, 0x32, 0xbb, 0x35, 0x00, 0x00,
} }

@ -213,8 +213,9 @@ message MsgData {
int32 status = 17; int32 status = 17;
map<string, bool> options = 18; map<string, bool> options = 18;
OfflinePushInfo offlinePushInfo = 19; OfflinePushInfo offlinePushInfo = 19;
repeated string atUserIDList = 20;
} }
// repeated string atUserIDList = 20;
message OfflinePushInfo{ message OfflinePushInfo{
string title = 1; string title = 1;
string desc = 2; string desc = 2;

Loading…
Cancel
Save