Merge remote-tracking branch 'origin/tuoyun' into tuoyun

pull/141/head
Gordon 3 years ago
commit 216697d4b5

@ -45,7 +45,7 @@ func GetUsersInfo(c *gin.Context) {
var publicUserInfoList []*open_im_sdk.PublicUserInfo var publicUserInfoList []*open_im_sdk.PublicUserInfo
for _, v := range RpcResp.UserInfoList { for _, v := range RpcResp.UserInfoList {
publicUserInfoList = append(publicUserInfoList, publicUserInfoList = append(publicUserInfoList,
&open_im_sdk.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender, AppMangerLevel: v.AppMangerLevel}) &open_im_sdk.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender})
} }
resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList} resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList}

@ -101,12 +101,12 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq
} }
//Establish a latest relationship in the friend request table //Establish a latest relationship in the friend request table
friendRequest := db.FriendRequest{ReqMsg: req.ReqMsg, HandleResult: 0} friendRequest := db.FriendRequest{ReqMsg: req.ReqMsg, HandleResult: 0, CreateTime: time.Now()}
utils.CopyStructFields(&friendRequest, req.CommID) utils.CopyStructFields(&friendRequest, req.CommID)
// {openIM001 openIM002 0 test add friend 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC }] // {openIM001 openIM002 0 test add friend 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC }]
log.NewDebug(req.CommID.OperationID, "UpdateFriendApplication args ", friendRequest) log.NewDebug(req.CommID.OperationID, "UpdateFriendApplication args ", friendRequest)
//err := imdb.InsertFriendApplication(&friendRequest) //err := imdb.InsertFriendApplication(&friendRequest)
err := imdb.InsertFriendApplication(&friendRequest, map[string]interface{}{"handle_result": 0}) err := imdb.InsertFriendApplication(&friendRequest)
if err != nil { if err != nil {
log.NewError(req.CommID.OperationID, "UpdateFriendApplication failed ", err.Error(), friendRequest) log.NewError(req.CommID.OperationID, "UpdateFriendApplication failed ", err.Error(), friendRequest)
return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil

@ -3,6 +3,7 @@ package im_mysql_model
import ( import (
"Open_IM/pkg/common/db" "Open_IM/pkg/common/db"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"errors"
"time" "time"
) )
@ -71,32 +72,43 @@ func UpdateFriendApplication(friendRequest *db.FriendRequest) error {
friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest).Error friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest).Error
} }
func InsertFriendApplication(friendRequest *db.FriendRequest, args map[string]interface{}) error { func InsertFriendApplication(friendRequest *db.FriendRequest) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB() dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil { if err != nil {
return err return err
} }
friendRequest.CreateTime = time.Now() if err = dbConn.Table("friend_requests").Create(friendRequest).Error; err == nil {
args["create_time"] = friendRequest.CreateTime
u := dbConn.Model(friendRequest).Updates(args)
//u := dbConn.Table("friend_requests").Where("from_user_id=? and to_user_id=?",
// friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest)
//u := dbConn.Table("friend_requests").Where("from_user_id=? and to_user_id=?",
// friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest)
if u.RowsAffected != 0 {
return nil return nil
} }
if friendRequest.CreateTime.Unix() < 0 { t := dbConn.Debug().Table("friend_requests").Select("*").Updates(*friendRequest)
friendRequest.CreateTime = time.Now() if t.RowsAffected == 0 {
} return utils.Wrap(errors.New("RowsAffected == 0"), "no update")
if friendRequest.HandleTime.Unix() < 0 {
friendRequest.HandleTime = utils.UnixSecondToTime(0)
}
err = dbConn.Table("friend_requests").Create(friendRequest).Error
if err != nil {
return err
} }
return nil return utils.Wrap(t.Error, "")
//
//friendRequest.CreateTime = time.Now()
//args["create_time"] = friendRequest.CreateTime
//u := dbConn.Model(friendRequest).Updates(args)
////u := dbConn.Table("friend_requests").Where("from_user_id=? and to_user_id=?",
//// friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest)
////u := dbConn.Table("friend_requests").Where("from_user_id=? and to_user_id=?",
//// friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest)
//if u.RowsAffected != 0 {
// return nil
//}
//
//if friendRequest.CreateTime.Unix() < 0 {
// friendRequest.CreateTime = time.Now()
//}
//if friendRequest.HandleTime.Unix() < 0 {
// friendRequest.HandleTime = utils.UnixSecondToTime(0)
//}
//err = dbConn.Table("friend_requests").Create(friendRequest).Error
//if err != nil {
// return err
//}
//return nil
} }

@ -7,6 +7,7 @@ import (
"net" "net"
"strconv" "strconv"
"strings" "strings"
"time"
) )
type RegEtcd struct { type RegEtcd struct {
@ -37,8 +38,7 @@ func RegisterEtcd4Unique(schema, etcdAddr, myHost string, myPort int, serviceNam
//etcdAddr separated by commas //etcdAddr separated by commas
func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName string, ttl int) error { func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName string, ttl int) error {
cli, err := clientv3.New(clientv3.Config{ cli, err := clientv3.New(clientv3.Config{
Endpoints: strings.Split(etcdAddr, ","), Endpoints: strings.Split(etcdAddr, ","), DialTimeout: 5 * time.Second})
})
fmt.Println("RegisterEtcd") fmt.Println("RegisterEtcd")
if err != nil { if err != nil {
// return fmt.Errorf("grpclb: create clientv3 client failed: %v", err) // return fmt.Errorf("grpclb: create clientv3 client failed: %v", err)
@ -68,13 +68,13 @@ func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName strin
} }
fmt.Println("RegisterEtcd ok") fmt.Println("RegisterEtcd ok")
go func() { go func() {
FLOOP:
for { for {
select { select {
case _, ok := <-kresp: case v, ok := <-kresp:
if ok == true { if ok == true {
// fmt.Println(" kresp ok ", v)
} else { } else {
break FLOOP fmt.Println(" kresp failed ", v)
} }
} }
} }

@ -20,6 +20,8 @@ message CreateGroupReq{
string OperationID = 3; string OperationID = 3;
string OpUserID = 4; //app manager or group owner string OpUserID = 4; //app manager or group owner
string OwnerUserID = 5; //owner string OwnerUserID = 5; //owner
} }
message CreateGroupResp{ message CreateGroupResp{
int32 ErrCode = 1; int32 ErrCode = 1;

@ -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_36d5733e27207cb1, []int{0} return fileDescriptor_ws_c0d333d3b0a04e48, []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)
@ -164,7 +164,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_36d5733e27207cb1, []int{1} return fileDescriptor_ws_c0d333d3b0a04e48, []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)
@ -259,7 +259,6 @@ type PublicUserInfo struct {
Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"`
FaceURL string `protobuf:"bytes,3,opt,name=faceURL" json:"faceURL,omitempty"` FaceURL string `protobuf:"bytes,3,opt,name=faceURL" json:"faceURL,omitempty"`
Gender int32 `protobuf:"varint,4,opt,name=gender" json:"gender,omitempty"` Gender int32 `protobuf:"varint,4,opt,name=gender" json:"gender,omitempty"`
AppMangerLevel int32 `protobuf:"varint,5,opt,name=appMangerLevel" json:"appMangerLevel,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:"-"`
@ -269,7 +268,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_36d5733e27207cb1, []int{2} return fileDescriptor_ws_c0d333d3b0a04e48, []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)
@ -317,13 +316,6 @@ func (m *PublicUserInfo) GetGender() int32 {
return 0 return 0
} }
func (m *PublicUserInfo) GetAppMangerLevel() int32 {
if m != nil {
return m.AppMangerLevel
}
return 0
}
type UserInfo struct { type UserInfo struct {
UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"`
Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"`
@ -344,7 +336,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_36d5733e27207cb1, []int{3} return fileDescriptor_ws_c0d333d3b0a04e48, []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)
@ -451,7 +443,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_36d5733e27207cb1, []int{4} return fileDescriptor_ws_c0d333d3b0a04e48, []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)
@ -536,7 +528,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_36d5733e27207cb1, []int{5} return fileDescriptor_ws_c0d333d3b0a04e48, []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)
@ -617,7 +609,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_36d5733e27207cb1, []int{6} return fileDescriptor_ws_c0d333d3b0a04e48, []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)
@ -725,7 +717,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_36d5733e27207cb1, []int{7} return fileDescriptor_ws_c0d333d3b0a04e48, []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)
@ -863,7 +855,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_36d5733e27207cb1, []int{8} return fileDescriptor_ws_c0d333d3b0a04e48, []int{8}
} }
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)
@ -917,7 +909,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_36d5733e27207cb1, []int{9} return fileDescriptor_ws_c0d333d3b0a04e48, []int{9}
} }
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)
@ -968,7 +960,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_36d5733e27207cb1, []int{10} return fileDescriptor_ws_c0d333d3b0a04e48, []int{10}
} }
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)
@ -1000,7 +992,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_36d5733e27207cb1, []int{11} return fileDescriptor_ws_c0d333d3b0a04e48, []int{11}
} }
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)
@ -1047,7 +1039,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_36d5733e27207cb1, []int{12} return fileDescriptor_ws_c0d333d3b0a04e48, []int{12}
} }
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)
@ -1116,7 +1108,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_36d5733e27207cb1, []int{13} return fileDescriptor_ws_c0d333d3b0a04e48, []int{13}
} }
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)
@ -1277,7 +1269,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_36d5733e27207cb1, []int{14} return fileDescriptor_ws_c0d333d3b0a04e48, []int{14}
} }
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)
@ -1345,7 +1337,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_36d5733e27207cb1, []int{15} return fileDescriptor_ws_c0d333d3b0a04e48, []int{15}
} }
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)
@ -1402,7 +1394,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_36d5733e27207cb1, []int{16} return fileDescriptor_ws_c0d333d3b0a04e48, []int{16}
} }
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)
@ -1471,7 +1463,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_36d5733e27207cb1, []int{17} return fileDescriptor_ws_c0d333d3b0a04e48, []int{17}
} }
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)
@ -1526,7 +1518,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_36d5733e27207cb1, []int{18} return fileDescriptor_ws_c0d333d3b0a04e48, []int{18}
} }
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)
@ -1582,7 +1574,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_36d5733e27207cb1, []int{19} return fileDescriptor_ws_c0d333d3b0a04e48, []int{19}
} }
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)
@ -1637,7 +1629,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_36d5733e27207cb1, []int{20} return fileDescriptor_ws_c0d333d3b0a04e48, []int{20}
} }
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)
@ -1692,7 +1684,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_36d5733e27207cb1, []int{21} return fileDescriptor_ws_c0d333d3b0a04e48, []int{21}
} }
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)
@ -1748,7 +1740,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_36d5733e27207cb1, []int{22} return fileDescriptor_ws_c0d333d3b0a04e48, []int{22}
} }
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)
@ -1811,7 +1803,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_36d5733e27207cb1, []int{23} return fileDescriptor_ws_c0d333d3b0a04e48, []int{23}
} }
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)
@ -1874,7 +1866,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_36d5733e27207cb1, []int{24} return fileDescriptor_ws_c0d333d3b0a04e48, []int{24}
} }
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)
@ -1936,7 +1928,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_36d5733e27207cb1, []int{25} return fileDescriptor_ws_c0d333d3b0a04e48, []int{25}
} }
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)
@ -1990,7 +1982,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_36d5733e27207cb1, []int{26} return fileDescriptor_ws_c0d333d3b0a04e48, []int{26}
} }
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)
@ -2043,7 +2035,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_36d5733e27207cb1, []int{27} return fileDescriptor_ws_c0d333d3b0a04e48, []int{27}
} }
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)
@ -2089,7 +2081,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_36d5733e27207cb1, []int{28} return fileDescriptor_ws_c0d333d3b0a04e48, []int{28}
} }
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)
@ -2129,7 +2121,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_36d5733e27207cb1, []int{29} return fileDescriptor_ws_c0d333d3b0a04e48, []int{29}
} }
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)
@ -2176,7 +2168,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_36d5733e27207cb1, []int{30} return fileDescriptor_ws_c0d333d3b0a04e48, []int{30}
} }
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)
@ -2224,7 +2216,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_36d5733e27207cb1, []int{31} return fileDescriptor_ws_c0d333d3b0a04e48, []int{31}
} }
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)
@ -2277,7 +2269,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_36d5733e27207cb1, []int{32} return fileDescriptor_ws_c0d333d3b0a04e48, []int{32}
} }
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)
@ -2315,7 +2307,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_36d5733e27207cb1, []int{33} return fileDescriptor_ws_c0d333d3b0a04e48, []int{33}
} }
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)
@ -2353,7 +2345,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_36d5733e27207cb1, []int{34} return fileDescriptor_ws_c0d333d3b0a04e48, []int{34}
} }
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)
@ -2391,7 +2383,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_36d5733e27207cb1, []int{35} return fileDescriptor_ws_c0d333d3b0a04e48, []int{35}
} }
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)
@ -2430,7 +2422,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_36d5733e27207cb1, []int{36} return fileDescriptor_ws_c0d333d3b0a04e48, []int{36}
} }
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)
@ -2498,128 +2490,127 @@ func init() {
proto.RegisterType((*UserInfoUpdatedTips)(nil), "server_api_params.UserInfoUpdatedTips") proto.RegisterType((*UserInfoUpdatedTips)(nil), "server_api_params.UserInfoUpdatedTips")
} }
func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_36d5733e27207cb1) } func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_c0d333d3b0a04e48) }
var fileDescriptor_ws_36d5733e27207cb1 = []byte{ var fileDescriptor_ws_c0d333d3b0a04e48 = []byte{
// 1911 bytes of a gzipped FileDescriptorProto // 1903 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x6f, 0x23, 0x4b, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x6f, 0x23, 0x49,
0x11, 0xd7, 0xd8, 0xb1, 0x63, 0x97, 0xe3, 0x38, 0x3b, 0xfb, 0x58, 0xcc, 0xb2, 0x6f, 0x09, 0xa3, 0x15, 0x57, 0xdb, 0xb1, 0x63, 0x3f, 0xc7, 0x71, 0xa6, 0x67, 0x19, 0xcc, 0x30, 0x3b, 0x84, 0xd6,
0xa7, 0xc7, 0x0a, 0x89, 0x20, 0x2d, 0x42, 0x82, 0x45, 0x80, 0xb2, 0xc9, 0x26, 0xec, 0x23, 0x4e, 0x6a, 0x19, 0x21, 0x11, 0xa4, 0x41, 0x48, 0x30, 0x08, 0x50, 0x26, 0x99, 0x84, 0x59, 0xe2, 0x24,
0xc2, 0x38, 0xab, 0xc7, 0x01, 0x69, 0x35, 0xf1, 0xb4, 0x9d, 0x79, 0x19, 0x77, 0x8f, 0xbb, 0x67, 0xb4, 0x33, 0x5a, 0x0e, 0x48, 0xa3, 0x8e, 0xbb, 0xec, 0xf4, 0xa6, 0x5d, 0xd5, 0xae, 0xea, 0xce,
0xb2, 0xbb, 0x12, 0x27, 0xf8, 0x0c, 0x70, 0xe4, 0xc0, 0x05, 0x71, 0x41, 0x5c, 0x10, 0x17, 0x8e, 0xcc, 0x48, 0x9c, 0xe0, 0x33, 0xc0, 0x07, 0xe0, 0x82, 0xb8, 0x20, 0x2e, 0x88, 0x0b, 0x47, 0xbe,
0x7c, 0x01, 0xce, 0x7c, 0x05, 0xae, 0x1c, 0x90, 0x90, 0x40, 0x5d, 0xdd, 0x33, 0xd3, 0x3d, 0x76, 0x00, 0x67, 0xbe, 0x02, 0x57, 0x0e, 0x48, 0x48, 0xa0, 0x7a, 0x55, 0xdd, 0x5d, 0xd5, 0xed, 0x64,
0xf2, 0x2c, 0x2b, 0xda, 0xbc, 0x9b, 0xab, 0xa6, 0xab, 0xba, 0xea, 0x57, 0x7f, 0xba, 0xba, 0x0d, 0xad, 0x28, 0xda, 0xe1, 0xe6, 0xf7, 0xeb, 0x7a, 0x7f, 0xea, 0xfd, 0xab, 0x57, 0x65, 0x18, 0x88,
0x3d, 0x11, 0x5e, 0xbe, 0x7e, 0x23, 0xbe, 0xfd, 0x46, 0xec, 0x24, 0x9c, 0xa5, 0xcc, 0xbd, 0x27, 0xf0, 0xf2, 0xf5, 0x1b, 0xf1, 0xed, 0x37, 0x62, 0x27, 0xe1, 0x2c, 0x65, 0xee, 0x3d, 0x41, 0xf8,
0x08, 0xbf, 0x22, 0xfc, 0x75, 0x90, 0x44, 0xaf, 0x93, 0x80, 0x07, 0x53, 0xe1, 0xfd, 0xbb, 0x06, 0x15, 0xe1, 0xaf, 0x83, 0x24, 0x7a, 0x9d, 0x04, 0x3c, 0x98, 0x0b, 0xef, 0x5f, 0x0d, 0xe8, 0x1e,
0xed, 0x43, 0xce, 0xb2, 0xe4, 0x25, 0x1d, 0x33, 0xb7, 0x0f, 0xeb, 0x13, 0x24, 0xf6, 0xfb, 0xce, 0x72, 0x96, 0x25, 0x2f, 0xe9, 0x94, 0xb9, 0x43, 0x58, 0x9f, 0x21, 0xb1, 0x3f, 0x74, 0xb6, 0x9d,
0xb6, 0xf3, 0xa4, 0xed, 0xe7, 0xa4, 0xfb, 0x08, 0xda, 0xf8, 0xf3, 0x38, 0x98, 0x92, 0x7e, 0x0d, 0x27, 0x5d, 0x3f, 0x27, 0xdd, 0x47, 0xd0, 0xc5, 0x9f, 0xc7, 0xc1, 0x9c, 0x0c, 0x1b, 0xf8, 0xad,
0xbf, 0x95, 0x0c, 0xd7, 0x83, 0x0d, 0xca, 0xd2, 0x68, 0x1c, 0x8d, 0x82, 0x34, 0x62, 0xb4, 0x5f, 0x04, 0x5c, 0x0f, 0x36, 0x28, 0x4b, 0xa3, 0x69, 0x34, 0x09, 0xd2, 0x88, 0xd1, 0x61, 0x13, 0x17,
0xc7, 0x05, 0x16, 0x4f, 0xae, 0x89, 0x68, 0xca, 0x59, 0x98, 0x8d, 0x70, 0xcd, 0x9a, 0x5a, 0x63, 0x58, 0x98, 0x5c, 0x13, 0xd1, 0x94, 0xb3, 0x30, 0x9b, 0xe0, 0x9a, 0x35, 0xb5, 0xc6, 0xc4, 0xa4,
0xf2, 0xe4, 0xfe, 0xe3, 0x60, 0x44, 0x5e, 0xf9, 0x47, 0xfd, 0x86, 0xda, 0x5f, 0x93, 0xee, 0x36, 0xfe, 0x69, 0x30, 0x21, 0xaf, 0xfc, 0xa3, 0x61, 0x4b, 0xe9, 0xd7, 0xa4, 0xbb, 0x0d, 0x3d, 0xf6,
0x74, 0xd8, 0x1b, 0x4a, 0xf8, 0x2b, 0x41, 0xf8, 0xcb, 0xfd, 0x7e, 0x13, 0xbf, 0x9a, 0x2c, 0xf7, 0x86, 0x12, 0xfe, 0x4a, 0x10, 0xfe, 0x72, 0x7f, 0xd8, 0xc6, 0xaf, 0x26, 0xe4, 0x3e, 0x06, 0x98,
0x31, 0xc0, 0x88, 0x93, 0x20, 0x25, 0x67, 0xd1, 0x94, 0xf4, 0xd7, 0xb7, 0x9d, 0x27, 0x5d, 0xdf, 0x70, 0x12, 0xa4, 0xe4, 0x2c, 0x9a, 0x93, 0xe1, 0xfa, 0xb6, 0xf3, 0xa4, 0xef, 0x1b, 0x88, 0x94,
0xe0, 0x48, 0x0d, 0x53, 0x32, 0x3d, 0x27, 0x7c, 0x8f, 0x65, 0x34, 0xed, 0xb7, 0x70, 0x81, 0xc9, 0x30, 0x27, 0xf3, 0x73, 0xc2, 0xf7, 0x58, 0x46, 0xd3, 0x61, 0x07, 0x17, 0x98, 0x90, 0xbb, 0x09,
0x72, 0x37, 0xa1, 0x46, 0xde, 0xf6, 0xdb, 0xa8, 0xba, 0x46, 0xde, 0xba, 0x0f, 0xa0, 0x29, 0xd2, 0x0d, 0xf2, 0x76, 0xd8, 0x45, 0xd1, 0x0d, 0xf2, 0xd6, 0x7d, 0x00, 0x6d, 0x91, 0x06, 0x69, 0x26,
0x20, 0xcd, 0x44, 0x1f, 0xb6, 0x9d, 0x27, 0x0d, 0x5f, 0x53, 0xee, 0x47, 0xd0, 0x45, 0xbd, 0x2c, 0x86, 0xb0, 0xed, 0x3c, 0x69, 0xf9, 0x9a, 0x72, 0x3f, 0x82, 0x3e, 0xca, 0x65, 0xb9, 0x35, 0x3d,
0xb7, 0xa6, 0x83, 0x22, 0x36, 0xb3, 0x40, 0xec, 0xec, 0x5d, 0x42, 0xfa, 0x1b, 0xa8, 0xa0, 0x64, 0x64, 0xb1, 0xc1, 0xc2, 0x63, 0x67, 0xef, 0x12, 0x32, 0xdc, 0x40, 0x01, 0x25, 0xe0, 0xfd, 0xa5,
0x78, 0x7f, 0xad, 0xc1, 0x7d, 0xc4, 0x7d, 0x80, 0x06, 0x1c, 0x64, 0x71, 0xfc, 0x39, 0x11, 0x78, 0x01, 0xf7, 0xd1, 0xef, 0x23, 0x34, 0xe0, 0x20, 0x8b, 0xe3, 0xcf, 0x89, 0xc0, 0x03, 0x68, 0x67,
0x00, 0xcd, 0x4c, 0x6d, 0xa7, 0xe0, 0xd7, 0x94, 0xdc, 0x87, 0xb3, 0x98, 0x1c, 0x91, 0x2b, 0x12, 0x4a, 0x9d, 0x72, 0xbf, 0xa6, 0xa4, 0x1e, 0xce, 0x62, 0x72, 0x44, 0xae, 0x48, 0x8c, 0x8e, 0x6f,
0x23, 0xf0, 0x0d, 0xbf, 0x64, 0xb8, 0x0f, 0xa1, 0xf5, 0x19, 0x8b, 0x28, 0x62, 0x22, 0x11, 0xaf, 0xf9, 0x25, 0xe0, 0x3e, 0x84, 0xce, 0x67, 0x2c, 0xa2, 0xe8, 0x13, 0xe9, 0xf1, 0xa6, 0x5f, 0xd0,
0xfb, 0x05, 0x2d, 0xbf, 0xd1, 0x68, 0x74, 0x49, 0x65, 0x48, 0x15, 0xdc, 0x05, 0x6d, 0x46, 0xa2, 0xf2, 0x1b, 0x8d, 0x26, 0x97, 0x54, 0x86, 0x54, 0xb9, 0xbb, 0xa0, 0xcd, 0x48, 0xb4, 0xed, 0x48,
0x69, 0x47, 0xe2, 0x63, 0xd8, 0x0c, 0x92, 0x64, 0x10, 0xd0, 0x09, 0xe1, 0x6a, 0xd3, 0x75, 0xdc, 0x7c, 0x0c, 0x9b, 0x41, 0x92, 0x8c, 0x02, 0x3a, 0x23, 0x5c, 0x29, 0x5d, 0x47, 0xa5, 0x15, 0x54,
0xb4, 0xc2, 0x95, 0xf1, 0x90, 0x3b, 0x0d, 0x59, 0xc6, 0x47, 0x04, 0xe1, 0x6e, 0xf8, 0x06, 0x47, 0xc6, 0x43, 0x6a, 0x1a, 0xb3, 0x8c, 0x4f, 0x08, 0xba, 0xbb, 0xe5, 0x1b, 0x88, 0x94, 0xc3, 0x12,
0xea, 0x61, 0x09, 0xe1, 0x06, 0x8c, 0x0a, 0xf9, 0x0a, 0x57, 0x47, 0x05, 0xf2, 0xa8, 0x78, 0xbf, 0xc2, 0x0d, 0x37, 0x2a, 0xcf, 0x57, 0x50, 0x1d, 0x15, 0xc8, 0xa3, 0xe2, 0x5d, 0xc1, 0xe6, 0x69,
0x73, 0x60, 0xf3, 0x34, 0x3b, 0x8f, 0xa3, 0x11, 0x2e, 0x90, 0xa0, 0x95, 0xd0, 0x38, 0x16, 0x34, 0x76, 0x1e, 0x47, 0x13, 0xfc, 0x2e, 0x7d, 0x56, 0x7a, 0xc6, 0xb1, 0x3c, 0x63, 0xee, 0xaf, 0x71,
0xa6, 0x83, 0xb5, 0xeb, 0x1d, 0xac, 0xdb, 0x0e, 0x3e, 0x80, 0xe6, 0x84, 0xd0, 0x90, 0x70, 0x04, 0xfd, 0xfe, 0x9a, 0xf6, 0xfe, 0x1e, 0x40, 0x7b, 0x46, 0x68, 0x48, 0x38, 0xfa, 0xab, 0xe5, 0x6b,
0xac, 0xe1, 0x6b, 0x6a, 0x81, 0xe3, 0x8d, 0x45, 0x8e, 0x7b, 0xbf, 0xad, 0x41, 0xeb, 0x3d, 0x9b, 0xca, 0xfb, 0x6d, 0x03, 0x3a, 0x5f, 0xac, 0x4a, 0x99, 0xb2, 0xc9, 0x05, 0xa3, 0xe4, 0x38, 0x93,
0xb6, 0x0d, 0x9d, 0xe4, 0x82, 0x51, 0x72, 0x9c, 0xc9, 0x64, 0xd2, 0xc1, 0x34, 0x59, 0xee, 0x07, 0x39, 0xa2, 0x63, 0x64, 0x42, 0xee, 0x07, 0xd0, 0x3a, 0x8f, 0x78, 0x7a, 0x81, 0x41, 0xea, 0xfb,
0xd0, 0x38, 0x8f, 0x78, 0x7a, 0x81, 0xd1, 0xec, 0xfa, 0x8a, 0x90, 0x5c, 0x32, 0x0d, 0x22, 0x15, 0x8a, 0x90, 0x28, 0x99, 0x07, 0x91, 0x8a, 0x4c, 0xd7, 0x57, 0x84, 0x76, 0x64, 0xa7, 0x48, 0x6f,
0xc2, 0xb6, 0xaf, 0x08, 0x8d, 0x78, 0xab, 0xa8, 0x03, 0xbb, 0xb2, 0xda, 0x73, 0x95, 0x35, 0x0f, 0xbb, 0x60, 0xba, 0xb5, 0x82, 0xa9, 0x07, 0x1a, 0x96, 0x05, 0xda, 0xfb, 0xb7, 0x03, 0x70, 0xc0,
0x0c, 0x2c, 0x04, 0xe6, 0x3f, 0x0e, 0xc0, 0x01, 0x8f, 0x08, 0x0d, 0x11, 0x9a, 0x4a, 0x49, 0x3b, 0x23, 0x42, 0x43, 0x74, 0x4d, 0xa5, 0x52, 0x9d, 0x7a, 0xa5, 0x3e, 0x80, 0x36, 0x27, 0xf3, 0x80,
0xf3, 0x25, 0xfd, 0x00, 0x9a, 0x9c, 0x4c, 0x03, 0x7e, 0x99, 0xa7, 0xbc, 0xa2, 0x2a, 0x06, 0xd5, 0x5f, 0xe6, 0x99, 0xac, 0xa8, 0x8a, 0x41, 0xcd, 0x9a, 0x41, 0x3f, 0x00, 0x98, 0xa2, 0x1e, 0x29,
0xe7, 0x0c, 0xfa, 0x01, 0xc0, 0x18, 0xf7, 0x91, 0x7a, 0x10, 0xaa, 0xce, 0xd3, 0xaf, 0xee, 0xcc, 0x07, 0x5d, 0xd5, 0x7b, 0xfa, 0xd5, 0x9d, 0x5a, 0x4f, 0xdb, 0xc9, 0xa3, 0xe4, 0x1b, 0xcb, 0x65,
0x35, 0xbf, 0x9d, 0x3c, 0x4a, 0xbe, 0xb1, 0x5c, 0xd6, 0x53, 0x10, 0x86, 0x3a, 0x6d, 0x55, 0x84, 0x99, 0x04, 0x61, 0xa8, 0xb3, 0xb1, 0xa5, 0xca, 0xa4, 0x00, 0x96, 0x24, 0x63, 0xfb, 0x86, 0x64,
0x4b, 0xc6, 0x82, 0xac, 0x6d, 0xde, 0x90, 0xb5, 0xeb, 0x45, 0xd6, 0xfe, 0xcb, 0x81, 0xf6, 0xf3, 0x5c, 0x2f, 0x92, 0xf1, 0x9f, 0x0e, 0x74, 0x9f, 0xc7, 0xc1, 0xe4, 0x72, 0xc5, 0xad, 0xdb, 0x5b,
0x38, 0x18, 0x5d, 0x2e, 0xe9, 0xba, 0xed, 0x62, 0x6d, 0xce, 0xc5, 0x43, 0xe8, 0x9e, 0x4b, 0x75, 0x6c, 0xd4, 0xb6, 0x78, 0x08, 0xfd, 0x73, 0x29, 0x2e, 0xdf, 0x02, 0x7a, 0xa1, 0xf7, 0xf4, 0xeb,
0xb9, 0x0b, 0x88, 0x42, 0xe7, 0xe9, 0xd7, 0x17, 0x78, 0x69, 0x17, 0x8b, 0x6f, 0xcb, 0xd9, 0xee, 0x4b, 0x76, 0x69, 0x17, 0x81, 0x6f, 0xf3, 0xd9, 0xdb, 0x5d, 0xfb, 0xfc, 0xed, 0xb6, 0x6e, 0xd8,
0xae, 0x7d, 0xbe, 0xbb, 0x8d, 0x1b, 0xdc, 0x6d, 0x16, 0xee, 0xfe, 0xa3, 0x06, 0x1b, 0xd8, 0xde, 0x6e, 0xbb, 0xd8, 0xee, 0xdf, 0x1b, 0xb0, 0x81, 0x5d, 0xcb, 0x27, 0x8b, 0x8c, 0x88, 0xd4, 0xfd,
0x7c, 0x32, 0xcb, 0x88, 0x48, 0xdd, 0x1f, 0x42, 0x2b, 0xcb, 0x4d, 0x75, 0x96, 0x35, 0xb5, 0x10, 0x21, 0x74, 0xb2, 0xdc, 0x54, 0x67, 0x55, 0x53, 0x0b, 0x16, 0xf7, 0x99, 0xee, 0x91, 0xc8, 0xdf,
0x71, 0x9f, 0xe9, 0x66, 0x8a, 0xf2, 0x35, 0x94, 0x7f, 0xb4, 0x40, 0xbe, 0x38, 0xc9, 0xfc, 0x72, 0x40, 0xfe, 0x47, 0x4b, 0xf8, 0x8b, 0x03, 0xca, 0x2f, 0x97, 0xcb, 0xf3, 0xe4, 0x22, 0xa0, 0x61,
0xb9, 0x3c, 0x78, 0x2e, 0x02, 0x1a, 0xc6, 0xc4, 0x27, 0x22, 0x8b, 0x53, 0xdd, 0x23, 0x2d, 0x9e, 0x4c, 0x7c, 0x22, 0xb2, 0x38, 0xd5, 0xad, 0xcf, 0xc2, 0x54, 0xa6, 0x2d, 0x46, 0x62, 0xa6, 0x4f,
0xca, 0xb4, 0xd9, 0x40, 0x4c, 0xf4, 0xb1, 0xa4, 0x29, 0x89, 0x8e, 0x5a, 0x27, 0x3f, 0x29, 0xd7, 0x1b, 0x4d, 0x49, 0xef, 0xa8, 0x75, 0xf2, 0x93, 0xda, 0x7a, 0x09, 0xc8, 0x42, 0xe5, 0x64, 0x81,
0x4b, 0x86, 0x2c, 0x54, 0x4e, 0x66, 0x18, 0x21, 0x55, 0x56, 0x39, 0x59, 0xee, 0xa9, 0x51, 0x53, 0x11, 0x52, 0x65, 0x95, 0x93, 0xa5, 0x4e, 0xed, 0x35, 0x95, 0x08, 0x16, 0x26, 0x43, 0xac, 0x68,
0x89, 0x60, 0xf1, 0x64, 0x88, 0x15, 0x8d, 0x0a, 0xd4, 0x79, 0x64, 0x70, 0xaa, 0xc7, 0x91, 0xf7, 0x14, 0xa0, 0x8e, 0x19, 0x03, 0xa9, 0x9e, 0x32, 0xde, 0x3f, 0x9a, 0xd0, 0x57, 0xe5, 0x93, 0x3b,
0xcf, 0x3a, 0x74, 0x55, 0xf9, 0xe4, 0xa0, 0x3e, 0x96, 0x79, 0xce, 0xa6, 0x56, 0x16, 0x19, 0x1c, 0xf5, 0xb1, 0xcc, 0x73, 0x36, 0xb7, 0xb2, 0xc8, 0x40, 0xa4, 0x15, 0x92, 0x3a, 0xb6, 0x1b, 0x8d,
0x69, 0x85, 0xa4, 0x8e, 0xed, 0x46, 0x63, 0xf1, 0x64, 0x2a, 0x4a, 0xfa, 0xc0, 0x6a, 0x38, 0x26, 0x85, 0xc9, 0x54, 0x94, 0xf4, 0x81, 0xd5, 0x70, 0x4c, 0x28, 0xd7, 0x72, 0x68, 0x36, 0x1e, 0x03,
0x2b, 0xdf, 0xe5, 0xd0, 0x6c, 0x3c, 0x06, 0x47, 0xb6, 0xb2, 0x94, 0x59, 0xd9, 0x51, 0xd0, 0x52, 0x91, 0xad, 0x2c, 0x65, 0x56, 0x76, 0x14, 0xb4, 0xe4, 0x4d, 0x59, 0xa1, 0x5f, 0xe5, 0x87, 0x81,
0x36, 0x65, 0xc5, 0xfe, 0x2a, 0x3f, 0x0c, 0x8e, 0xc4, 0x37, 0x65, 0xf9, 0xde, 0x0a, 0xa4, 0x92, 0x48, 0xff, 0xa6, 0x2c, 0xd7, 0xad, 0x9c, 0x54, 0x02, 0x4a, 0xb2, 0xd6, 0xab, 0xce, 0x85, 0x82,
0xa1, 0x34, 0xeb, 0x7d, 0xd5, 0x01, 0x52, 0xd0, 0x73, 0x51, 0x6d, 0xdf, 0x18, 0x55, 0xb0, 0xa2, 0xae, 0x45, 0xb5, 0x7b, 0x63, 0x54, 0xc1, 0x8a, 0xaa, 0x5d, 0x5c, 0xbd, 0x5a, 0x71, 0x7d, 0x04,
0x6a, 0x17, 0x57, 0x67, 0xae, 0xb8, 0x3e, 0x82, 0xae, 0xd2, 0x93, 0x27, 0xfd, 0x86, 0x3a, 0xe0, 0x7d, 0x25, 0x27, 0x4f, 0xfa, 0x0d, 0x75, 0x6e, 0x5b, 0xa0, 0x9d, 0x1b, 0xfd, 0x6a, 0x6e, 0xd8,
0x2d, 0xa6, 0x9d, 0x1b, 0xdd, 0x6a, 0x6e, 0xd8, 0xd1, 0xdd, 0xbc, 0x26, 0xba, 0xbd, 0x22, 0xba, 0xd1, 0xdd, 0xbc, 0x26, 0xba, 0x83, 0x22, 0xba, 0xbf, 0x84, 0xe1, 0x69, 0x16, 0xc7, 0x23, 0x22,
0xbf, 0x84, 0xfe, 0x69, 0x16, 0xc7, 0x03, 0x22, 0x44, 0x30, 0x21, 0xcf, 0xdf, 0x0d, 0xc9, 0xec, 0x44, 0x30, 0x23, 0xcf, 0xdf, 0x8d, 0xc9, 0xe2, 0x28, 0x12, 0xa9, 0x4f, 0x44, 0x22, 0xf3, 0x8c,
0x28, 0x12, 0xa9, 0x4f, 0x44, 0x22, 0xf3, 0x8c, 0x70, 0xbe, 0xc7, 0x42, 0x82, 0x41, 0x6e, 0xf8, 0x70, 0xbe, 0xc7, 0x42, 0x82, 0x41, 0x6e, 0xf9, 0x39, 0x29, 0x77, 0x48, 0x38, 0x97, 0x06, 0xe8,
0x39, 0x29, 0x3d, 0x24, 0x9c, 0x4b, 0x03, 0x74, 0x87, 0x54, 0x94, 0xbb, 0x03, 0x6b, 0x71, 0x24, 0x0e, 0xa9, 0x28, 0x77, 0x07, 0xd6, 0xe2, 0x48, 0xc8, 0x5c, 0x6f, 0x3e, 0xe9, 0x3d, 0x7d, 0xb8,
0x64, 0xae, 0xd7, 0x9f, 0x74, 0x9e, 0x3e, 0x5c, 0x50, 0x2a, 0x03, 0x31, 0xd9, 0x0f, 0xd2, 0xc0, 0xa4, 0x54, 0x46, 0x62, 0xb6, 0x1f, 0xa4, 0x81, 0x8f, 0xeb, 0xbc, 0x39, 0x7c, 0x79, 0xb9, 0xf6,
0xc7, 0x75, 0xde, 0x14, 0xbe, 0xbc, 0x78, 0xf7, 0xd9, 0xb5, 0x27, 0x98, 0xec, 0x61, 0xd8, 0x04, 0xc5, 0xb5, 0x27, 0x98, 0xec, 0x61, 0xd8, 0x04, 0x22, 0x46, 0x8b, 0x59, 0xc3, 0x84, 0xa4, 0xd9,
0x22, 0x46, 0x8b, 0xa1, 0xc4, 0x64, 0x49, 0xb3, 0x85, 0xd2, 0x83, 0x76, 0x74, 0xfd, 0x9c, 0xf4, 0x42, 0xc9, 0x41, 0x3b, 0xfa, 0x7e, 0x4e, 0x7a, 0x1f, 0x80, 0x7b, 0x48, 0xd2, 0x51, 0xf0, 0x76,
0x3e, 0x00, 0xf7, 0x90, 0xa4, 0x83, 0xe0, 0xed, 0x2e, 0x0d, 0x07, 0x11, 0x1d, 0x92, 0x99, 0x4f, 0x97, 0x86, 0xa3, 0x88, 0x8e, 0xc9, 0xc2, 0x27, 0x0b, 0xef, 0x05, 0xdc, 0xaf, 0xa1, 0x22, 0x91,
0x66, 0xde, 0x0b, 0xb8, 0x3f, 0xc7, 0x15, 0x89, 0x34, 0x60, 0x1a, 0xbc, 0x1d, 0x92, 0x19, 0x1a, 0x06, 0xcc, 0x83, 0xb7, 0x63, 0xb2, 0x40, 0x03, 0xfa, 0xbe, 0xa6, 0x10, 0xc7, 0x55, 0xba, 0x3d,
0xd0, 0xf5, 0x35, 0x85, 0x7c, 0x5c, 0xa5, 0xdb, 0xa3, 0xa6, 0xbc, 0x19, 0xf4, 0x64, 0x84, 0x86, 0x6a, 0xca, 0x5b, 0xc0, 0x40, 0x46, 0x68, 0x4c, 0x68, 0x38, 0x12, 0x33, 0x14, 0xb1, 0x0d, 0x3d,
0x84, 0x86, 0x03, 0x31, 0x41, 0x15, 0xdb, 0xd0, 0x51, 0x08, 0x0c, 0xc4, 0xa4, 0xec, 0xb7, 0x06, 0xe5, 0x81, 0x91, 0x98, 0x95, 0xfd, 0xd6, 0x80, 0xe4, 0x8a, 0x49, 0x1c, 0x11, 0x9a, 0xaa, 0x15,
0x4b, 0xae, 0x18, 0xc5, 0x11, 0xa1, 0xa9, 0x5a, 0xa1, 0xbd, 0x31, 0x58, 0x32, 0x19, 0x05, 0xa1, 0x7a, 0x37, 0x06, 0x24, 0x93, 0x51, 0x10, 0x1a, 0x16, 0x47, 0x4e, 0xd3, 0x2f, 0x68, 0xef, 0xaf,
0x61, 0x71, 0xe4, 0xd4, 0xfd, 0x82, 0xf6, 0xfe, 0xd6, 0x80, 0x75, 0x0d, 0x28, 0x4e, 0x8d, 0xf2, 0x2d, 0x58, 0xd7, 0x0e, 0xc5, 0x61, 0x50, 0x1e, 0x71, 0x85, 0xbf, 0x14, 0xa5, 0x92, 0x71, 0x72,
0x88, 0x2b, 0xf0, 0x52, 0x94, 0x4a, 0xc6, 0xd1, 0x55, 0x39, 0xbf, 0x29, 0xca, 0x9c, 0xf8, 0xea, 0x55, 0x8e, 0x65, 0x8a, 0x32, 0x07, 0xb9, 0xa6, 0x3d, 0xc8, 0x55, 0x6c, 0x5a, 0xab, 0xdb, 0x54,
0xf6, 0xc4, 0x57, 0xb1, 0x69, 0x6d, 0xde, 0xa6, 0x8a, 0x5f, 0x8d, 0x79, 0xbf, 0xbe, 0x09, 0x5b, 0xd9, 0x57, 0xab, 0xbe, 0xaf, 0x6f, 0xc2, 0x96, 0xc0, 0x82, 0x39, 0x8d, 0x83, 0x74, 0xca, 0xf8,
0x02, 0x0b, 0xe6, 0x34, 0x0e, 0xd2, 0x31, 0xe3, 0x53, 0x7d, 0x62, 0x35, 0xfc, 0x39, 0xbe, 0x6c, 0x5c, 0x9f, 0x58, 0x2d, 0xbf, 0x86, 0xcb, 0x66, 0xaf, 0xb0, 0xa2, 0x60, 0x55, 0x45, 0x56, 0x50,
0xf6, 0x8a, 0x57, 0x14, 0xac, 0xaa, 0xc8, 0x0a, 0x57, 0x96, 0x87, 0xe2, 0xe4, 0x85, 0xab, 0x46, 0x59, 0x1e, 0x0a, 0xc9, 0x0b, 0x57, 0x8d, 0x0a, 0x36, 0xa8, 0x6c, 0x13, 0x22, 0x62, 0x14, 0x07,
0x05, 0x9b, 0xa9, 0x6c, 0x13, 0x22, 0x62, 0x14, 0x27, 0x60, 0x55, 0x9f, 0x26, 0x4b, 0x7a, 0x3e, 0x5b, 0x55, 0x9f, 0x26, 0x24, 0x77, 0x3e, 0x17, 0xb3, 0x03, 0xce, 0xe6, 0x7a, 0x60, 0xc8, 0x49,
0x15, 0x93, 0x03, 0xce, 0xa6, 0x7a, 0x60, 0xc8, 0x49, 0xf4, 0x9c, 0xd1, 0x94, 0xd0, 0x14, 0x65, 0xdc, 0x39, 0xa3, 0x29, 0xa1, 0x29, 0xf2, 0xf6, 0x14, 0xaf, 0x01, 0x49, 0x5e, 0x4d, 0x62, 0x71,
0x3b, 0x4a, 0xd6, 0x60, 0x49, 0x59, 0x4d, 0x62, 0x71, 0x6e, 0xf8, 0x39, 0xe9, 0x6e, 0x41, 0x5d, 0x6e, 0xf8, 0x39, 0xe9, 0x6e, 0x41, 0x53, 0x90, 0x85, 0xae, 0x38, 0xf9, 0xd3, 0x8a, 0xdc, 0xc0,
0x90, 0x99, 0xae, 0x38, 0xf9, 0xd3, 0x8a, 0x5c, 0xcf, 0x8e, 0x5c, 0xa5, 0x15, 0x6c, 0xe1, 0x57, 0x8e, 0x5c, 0xa5, 0x15, 0x6c, 0xe1, 0x57, 0xb3, 0x15, 0x94, 0xa3, 0xfd, 0x3d, 0x6b, 0xb4, 0xdf,
0xb3, 0x15, 0x94, 0x77, 0x80, 0x7b, 0xd6, 0x1d, 0x60, 0x17, 0xd6, 0x59, 0x22, 0xf3, 0x5c, 0xf4, 0x85, 0x75, 0x96, 0xc8, 0x3c, 0x17, 0x43, 0x17, 0x6b, 0xec, 0x1b, 0xd7, 0xd7, 0xd8, 0xce, 0x89,
0x5d, 0xac, 0xb1, 0x6f, 0x5c, 0x5f, 0x63, 0x3b, 0x27, 0x6a, 0xe5, 0x0b, 0x9a, 0xf2, 0x77, 0x7e, 0x5a, 0xf9, 0x82, 0xa6, 0xfc, 0x9d, 0x9f, 0xf3, 0xb9, 0x47, 0x30, 0x60, 0xd3, 0x69, 0x1c, 0x51,
0x2e, 0xe7, 0x1e, 0x41, 0x8f, 0x8d, 0xc7, 0x71, 0x44, 0xc9, 0x69, 0x26, 0x2e, 0xf0, 0x64, 0xbb, 0x72, 0x9a, 0x89, 0x0b, 0x3c, 0xd9, 0xee, 0xe3, 0xc9, 0xe6, 0x2d, 0x11, 0x75, 0x62, 0xaf, 0xf4,
0x8f, 0x27, 0x9b, 0xb7, 0x40, 0xd5, 0x89, 0xbd, 0xd2, 0xaf, 0x8a, 0x3e, 0x7c, 0x06, 0x1b, 0xe6, 0xab, 0xac, 0x0f, 0x9f, 0xc1, 0x86, 0xa9, 0x46, 0xba, 0xe1, 0x92, 0xbc, 0xd3, 0x39, 0x28, 0x7f,
0x36, 0x12, 0x86, 0x4b, 0xf2, 0x4e, 0xe7, 0xa0, 0xfc, 0x29, 0x87, 0xbd, 0xab, 0x20, 0xce, 0xd4, 0xca, 0x61, 0xef, 0x2a, 0x88, 0x33, 0x75, 0x0c, 0x74, 0x7c, 0x45, 0x3c, 0x6b, 0x7c, 0xcf, 0xf1,
0x31, 0xd0, 0xf2, 0x15, 0xf1, 0xac, 0xf6, 0x3d, 0xc7, 0xfb, 0x8d, 0x03, 0xbd, 0xca, 0x06, 0x72, 0x7e, 0xe3, 0xc0, 0xa0, 0xa2, 0x40, 0xae, 0x4e, 0xa3, 0x34, 0x26, 0x5a, 0x82, 0x22, 0x5c, 0x17,
0x75, 0x1a, 0xa5, 0x31, 0xd1, 0x1a, 0x14, 0xe1, 0xba, 0xb0, 0x16, 0x12, 0x31, 0xd2, 0x29, 0x8c, 0xd6, 0x42, 0x22, 0x26, 0x3a, 0x85, 0xf1, 0xb7, 0xee, 0x64, 0xcd, 0x62, 0x5c, 0x94, 0xf7, 0xb7,
0xbf, 0x75, 0x27, 0xab, 0x17, 0xe3, 0xa2, 0xbc, 0xe8, 0x9d, 0x0c, 0xa5, 0xa2, 0x21, 0xcb, 0x68, 0x93, 0xb1, 0x14, 0x34, 0x66, 0x19, 0x0d, 0x8b, 0xfb, 0x9b, 0x81, 0xc9, 0x14, 0x8a, 0x4e, 0xc6,
0x58, 0x5c, 0xf4, 0x0c, 0x9e, 0x4c, 0xa1, 0xe8, 0x64, 0xf8, 0x3c, 0x08, 0x27, 0x44, 0x5d, 0xc7, 0xcf, 0x83, 0x70, 0x46, 0xd4, 0x2d, 0xab, 0x85, 0x36, 0xd9, 0xa0, 0x17, 0x42, 0xe7, 0x2c, 0x4a,
0x1a, 0x68, 0x93, 0xcd, 0xf4, 0x42, 0x68, 0x9d, 0x45, 0x89, 0xd8, 0x63, 0xd3, 0xa9, 0x0c, 0x44, 0xc4, 0x1e, 0x9b, 0xcf, 0x65, 0x20, 0x42, 0x92, 0xca, 0x59, 0xd5, 0xc1, 0x78, 0x6b, 0x4a, 0xa6,
0x48, 0x52, 0x39, 0xab, 0x3a, 0x18, 0x6f, 0x4d, 0xc9, 0x54, 0x09, 0xc9, 0x38, 0xc8, 0xe2, 0x54, 0x4a, 0x48, 0xa6, 0x41, 0x16, 0xa7, 0x72, 0x69, 0x5e, 0xb8, 0x06, 0x84, 0xf7, 0x0b, 0xc1, 0xe8,
0x2e, 0xcd, 0x0b, 0xd7, 0x60, 0xe1, 0x45, 0x44, 0x30, 0xba, 0xaf, 0xa4, 0x95, 0x9d, 0x06, 0xc7, 0xbe, 0xe2, 0x56, 0x76, 0x1a, 0x88, 0xf7, 0xb7, 0x06, 0x6c, 0xe1, 0xe0, 0xb0, 0x87, 0x61, 0x0f,
0xfb, 0x7b, 0x0d, 0xb6, 0x70, 0x70, 0xd8, 0xc3, 0xb0, 0x87, 0x28, 0xf4, 0x14, 0x1a, 0x58, 0x86, 0x91, 0xe9, 0x29, 0xb4, 0xb0, 0x0c, 0xf5, 0xb0, 0x72, 0xf3, 0xb0, 0xa1, 0x96, 0xba, 0x3f, 0x82,
0x7a, 0x58, 0xb9, 0x79, 0xd8, 0x50, 0x4b, 0xdd, 0x1f, 0x41, 0x93, 0x25, 0x38, 0x72, 0xaa, 0x09, 0x36, 0x4b, 0x70, 0xe4, 0x54, 0x13, 0xca, 0xc7, 0xd7, 0x31, 0xd9, 0x57, 0x39, 0x5f, 0x73, 0xb9,
0xe5, 0xe3, 0xeb, 0x84, 0xec, 0x3b, 0x9f, 0xaf, 0xa5, 0xdc, 0x03, 0x00, 0x75, 0x1d, 0x3d, 0x2a, 0x07, 0x00, 0xea, 0x96, 0x79, 0x54, 0xb6, 0xee, 0x55, 0x65, 0x18, 0x9c, 0xd2, 0xb9, 0x45, 0x1b,
0x5b, 0xf7, 0xb2, 0x3a, 0x0c, 0x49, 0x09, 0x6e, 0xd1, 0x86, 0x8d, 0x8b, 0x9f, 0xcd, 0x74, 0x8f, 0x36, 0xee, 0x73, 0x36, 0xe8, 0x1e, 0xc3, 0x26, 0x9a, 0x7d, 0x92, 0x4f, 0x9d, 0x18, 0x83, 0xd5,
0x61, 0x13, 0xcd, 0x3e, 0xc9, 0xa7, 0x4e, 0x8c, 0xc1, 0xf2, 0x3b, 0x56, 0xa4, 0xbd, 0xdf, 0x3b, 0x35, 0x56, 0xb8, 0xbd, 0xdf, 0x39, 0xda, 0x8d, 0xf2, 0xeb, 0x98, 0x28, 0xdf, 0x97, 0x2e, 0x71,
0x1a, 0x46, 0xf9, 0x75, 0x48, 0x14, 0xf6, 0x25, 0x24, 0xce, 0x4a, 0x90, 0x3c, 0x84, 0xd6, 0x34, 0x6e, 0xe5, 0x92, 0x87, 0xd0, 0x99, 0x67, 0xc6, 0x10, 0xdc, 0xf4, 0x0b, 0xba, 0x0c, 0x51, 0x73,
0x33, 0x86, 0xe0, 0xba, 0x5f, 0xd0, 0x65, 0x88, 0xea, 0x4b, 0x87, 0xc8, 0xfb, 0x83, 0x03, 0xfd, 0xe5, 0x10, 0x79, 0xbf, 0x77, 0x60, 0xf8, 0x09, 0x8b, 0x28, 0x7e, 0xd8, 0x4d, 0x92, 0x58, 0x3f,
0x4f, 0x58, 0x44, 0xf1, 0xc3, 0x6e, 0x92, 0xc4, 0xfa, 0x75, 0x62, 0xe5, 0x98, 0xff, 0x18, 0xda, 0x3a, 0xdc, 0x3a, 0xe6, 0x3f, 0x86, 0x6e, 0xa0, 0xc4, 0xd0, 0x54, 0x87, 0x7d, 0x85, 0xc1, 0xb6,
0x81, 0x52, 0x43, 0x53, 0x1d, 0xf6, 0x25, 0x06, 0xdb, 0x52, 0xc6, 0x98, 0x51, 0xea, 0xe6, 0x8c, 0xe4, 0x31, 0x66, 0x94, 0xa6, 0x39, 0xa3, 0x78, 0x7f, 0x74, 0x60, 0x53, 0x39, 0xe5, 0x67, 0x59,
0xe2, 0xfd, 0xc9, 0x81, 0x4d, 0x05, 0xca, 0xcf, 0xb2, 0x28, 0x5d, 0xd9, 0xbe, 0xe7, 0xd0, 0x9a, 0x94, 0xde, 0xda, 0xbe, 0xe7, 0xd0, 0x59, 0x64, 0x51, 0x7a, 0x8b, 0xac, 0x2c, 0xf8, 0xea, 0xf9,
0x65, 0x51, 0xba, 0x42, 0x56, 0x16, 0x72, 0xf3, 0xf9, 0x54, 0x5f, 0x90, 0x4f, 0xde, 0x9f, 0x1d, 0xd4, 0x5c, 0x92, 0x4f, 0xde, 0x9f, 0x1c, 0x78, 0x54, 0x75, 0xeb, 0xee, 0x64, 0x42, 0x92, 0xf7,
0x78, 0x54, 0x85, 0x75, 0x77, 0x34, 0x22, 0xc9, 0x5d, 0x96, 0x94, 0x35, 0xa3, 0xad, 0x55, 0x66, 0x59, 0x52, 0xd6, 0x8c, 0xb6, 0x56, 0x99, 0xd1, 0x96, 0x9a, 0xec, 0x93, 0xcf, 0xc8, 0xe4, 0xff,
0xb4, 0x85, 0x26, 0xfb, 0xe4, 0x33, 0x32, 0xfa, 0xe2, 0x9a, 0xfc, 0xeb, 0x1a, 0x7c, 0xe5, 0xb0, 0xd7, 0xe4, 0x5f, 0x37, 0xe0, 0x2b, 0x87, 0x45, 0xe1, 0x9d, 0xf1, 0x80, 0x8a, 0x29, 0xe1, 0xfc,
0x28, 0xbc, 0x33, 0x1e, 0x50, 0x31, 0x26, 0x9c, 0xdf, 0xa1, 0xbd, 0x47, 0xd0, 0xa5, 0xe4, 0x4d, 0x3d, 0xda, 0x7b, 0x04, 0x7d, 0x4a, 0xde, 0x94, 0x36, 0xe9, 0x72, 0x5c, 0x55, 0x8c, 0xcd, 0xbc,
0x69, 0x93, 0x2e, 0xc7, 0x65, 0xd5, 0xd8, 0xc2, 0xcb, 0xf5, 0x2e, 0xef, 0xbf, 0x0e, 0x6c, 0x29, 0x5a, 0xef, 0xf2, 0xfe, 0xe3, 0xc0, 0x96, 0x92, 0xf3, 0xd3, 0x68, 0x72, 0xf9, 0x1e, 0x37, 0x7f,
0x3d, 0x3f, 0x8d, 0x46, 0x97, 0x77, 0xe8, 0xfc, 0x31, 0x6c, 0x5e, 0xa2, 0x05, 0x92, 0x5a, 0xa1, 0x0c, 0x9b, 0x97, 0x68, 0x81, 0xa4, 0x6e, 0xd1, 0xb6, 0x2b, 0xdc, 0x2b, 0x6e, 0xff, 0xbf, 0x0e,
0x6d, 0x57, 0xa4, 0x97, 0x74, 0xff, 0x7f, 0x0e, 0xdc, 0x53, 0x8a, 0x5e, 0xd2, 0xab, 0xe8, 0x2e, 0xdc, 0x53, 0x82, 0x5e, 0xd2, 0xab, 0xe8, 0x7d, 0x26, 0xeb, 0x29, 0x0c, 0x22, 0x65, 0xc2, 0x2d,
0x93, 0xf5, 0x14, 0x7a, 0x91, 0x32, 0x61, 0x45, 0x00, 0xaa, 0xe2, 0x4b, 0x22, 0xf0, 0x17, 0x07, 0x1d, 0x50, 0x65, 0x5f, 0xd1, 0x03, 0x7f, 0x76, 0x60, 0xa0, 0x24, 0xbd, 0xa0, 0x29, 0xe1, 0xb7,
0x7a, 0x4a, 0xd3, 0x0b, 0x9a, 0x12, 0xbe, 0xb2, 0xff, 0x3f, 0x81, 0x0e, 0xa1, 0x29, 0x0f, 0xe8, 0xde, 0xff, 0x4f, 0xa0, 0x47, 0x68, 0xca, 0x03, 0x7a, 0x9b, 0x0e, 0x69, 0xb2, 0xae, 0xd8, 0x24,
0x2a, 0x1d, 0xd2, 0x14, 0x5d, 0xb2, 0x49, 0x5e, 0xc2, 0x3d, 0x75, 0x85, 0x37, 0x3a, 0x8e, 0x9c, 0x2f, 0xe1, 0x9e, 0xba, 0xc2, 0x1b, 0x1d, 0x47, 0xce, 0xb2, 0x41, 0xa8, 0xc6, 0x53, 0x07, 0x99,
0x65, 0x83, 0x50, 0x8d, 0xa7, 0x0e, 0x0a, 0xe5, 0xa4, 0xfd, 0x38, 0xa3, 0x5f, 0xdd, 0xcb, 0xc7, 0x72, 0xd2, 0x7e, 0x9c, 0xd1, 0x8f, 0xe9, 0xe5, 0xe3, 0xcc, 0x63, 0x80, 0x20, 0x0c, 0x3f, 0x65,
0x99, 0xc7, 0x00, 0x41, 0x18, 0x7e, 0xca, 0x78, 0x18, 0xd1, 0xfc, 0xf8, 0x30, 0x38, 0xde, 0x27, 0x3c, 0x8c, 0x68, 0x7e, 0x7c, 0x18, 0x88, 0xf7, 0x09, 0x6c, 0xc8, 0x69, 0xfa, 0xcc, 0xb8, 0x8c,
0xb0, 0x21, 0xa7, 0xe9, 0x33, 0xe3, 0x32, 0x7e, 0xe3, 0x73, 0x81, 0x79, 0x91, 0xaf, 0xd9, 0x17, 0xdf, 0xf8, 0x5c, 0x60, 0x5e, 0xe4, 0x1b, 0xf6, 0x45, 0xde, 0xfb, 0x05, 0x7c, 0xa9, 0x66, 0x38,
0x79, 0xef, 0x17, 0xf0, 0xa5, 0x39, 0xc3, 0x11, 0xf5, 0x3d, 0xf5, 0xc6, 0x90, 0x6f, 0xa2, 0xc1, 0x7a, 0x7d, 0x4f, 0xbd, 0x31, 0xe4, 0x4a, 0xb4, 0xf3, 0xbf, 0xb6, 0xc4, 0x85, 0xa6, 0x2d, 0xbe,
0xff, 0xda, 0x02, 0x08, 0x4d, 0x5b, 0x7c, 0x4b, 0xc8, 0xfb, 0x95, 0x03, 0x1f, 0xce, 0xa9, 0xdf, 0xc5, 0xe4, 0xfd, 0xca, 0x81, 0x0f, 0x6b, 0xe2, 0x77, 0x93, 0x84, 0xb3, 0x2b, 0x9d, 0xdc, 0x77,
0x4d, 0x12, 0xce, 0xae, 0x74, 0x72, 0xdf, 0xc6, 0x36, 0x76, 0x6b, 0xad, 0x55, 0x5b, 0xeb, 0x42, 0xa1, 0xc6, 0x6e, 0xad, 0x8d, 0x6a, 0x6b, 0x5d, 0x6a, 0x84, 0x75, 0x1c, 0x7c, 0x01, 0x46, 0xfc,
0x23, 0xac, 0xe3, 0xe0, 0x3d, 0x18, 0xf1, 0x47, 0x07, 0x7a, 0xda, 0x88, 0x30, 0xd4, 0xdb, 0x7e, 0xc1, 0x81, 0x81, 0x36, 0x22, 0x0c, 0xb5, 0xda, 0xef, 0x42, 0x5b, 0xbd, 0x4f, 0x6a, 0x85, 0x1f,
0x17, 0x9a, 0xea, 0x7d, 0x52, 0x6f, 0xf8, 0xe1, 0xc2, 0x0d, 0xf3, 0x77, 0x55, 0x5f, 0x2f, 0x9e, 0x2e, 0x55, 0x98, 0xbf, 0xab, 0xfa, 0x7a, 0x71, 0x3d, 0x23, 0x1b, 0xcb, 0xc6, 0xc0, 0xef, 0x17,
0xcf, 0xc8, 0xda, 0xa2, 0x31, 0xf0, 0xfb, 0x45, 0x07, 0x58, 0xfa, 0x05, 0x51, 0x0b, 0x78, 0x3f, 0x1d, 0x60, 0xe5, 0x17, 0x44, 0xcd, 0xe0, 0xfd, 0x3c, 0x4f, 0xe6, 0x7d, 0x12, 0x93, 0xbb, 0xf4,
0xcf, 0x93, 0x79, 0x9f, 0xc4, 0xe4, 0x36, 0x31, 0xf2, 0x5e, 0xc1, 0x26, 0x3e, 0x96, 0x96, 0x18, 0x91, 0xf7, 0x0a, 0x36, 0xf1, 0xb1, 0xb4, 0xf4, 0xc1, 0x9d, 0x88, 0xfd, 0x14, 0xb6, 0x50, 0xec,
0xdc, 0x8a, 0xda, 0x4f, 0x61, 0x0b, 0xd5, 0xde, 0xba, 0xbd, 0x45, 0x75, 0x48, 0x7c, 0xf6, 0x2e, 0x9d, 0xdb, 0x5b, 0x54, 0x87, 0xf4, 0xcf, 0xde, 0x45, 0x40, 0x67, 0x77, 0x29, 0xfd, 0x5b, 0x70,
0x02, 0x3a, 0xb9, 0x4d, 0xed, 0xdf, 0x82, 0xfb, 0x39, 0xf6, 0xaf, 0x92, 0xb0, 0xb8, 0xa2, 0x5c, 0x3f, 0xf7, 0xfd, 0xab, 0x24, 0x2c, 0xae, 0x28, 0xd7, 0x3c, 0xcc, 0x9c, 0xb7, 0xf1, 0x3f, 0xbc,
0xf3, 0x30, 0x73, 0xde, 0xc4, 0x3f, 0xfb, 0xbe, 0xf3, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe5, 0xef, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xbe, 0xeb, 0x20, 0x25, 0xd6, 0x1b, 0x00, 0x00,
0xdc, 0xac, 0x39, 0xff, 0x1b, 0x00, 0x00,
} }

@ -39,7 +39,6 @@ message PublicUserInfo{
string nickname = 2; string nickname = 2;
string faceURL = 3; string faceURL = 3;
int32 gender = 4; int32 gender = 4;
int32 appMangerLevel = 5; //if >0
} }
message UserInfo{ message UserInfo{

Loading…
Cancel
Save