From 7655b2c96feb7a47da6a02e8519a50500528f564 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 26 Nov 2024 17:17:14 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=A6=E6=A0=87=E8=B5=9B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ChampshipMgr.go | 472 +++- src/server/game/GameLogic.go | 51 +- src/server/game/Gm.go | 11 +- src/server/game/Player.go | 37 +- src/server/game/PlayerBaseMod.go | 97 +- src/server/game/PlayerChessMod.go | 4 +- src/server/game/PlayerFunc.go | 14 +- src/server/game/RankMgr.go | 24 +- src/server/game/RegisterNetworkFunc.go | 126 +- src/server/game/ServerMod.go | 12 +- src/server/game/mod/card/Card.go | 33 + src/server/game/mod/champship/Champship.go | 12 + src/server/game/mod/dailyTask/DailyFunc.go | 4 + src/server/game/mod/msg/Msg.go | 3 + src/server/msg/Gameapi.pb.go | 2982 ++++++++++++-------- 15 files changed, 2311 insertions(+), 1571 deletions(-) diff --git a/src/server/game/ChampshipMgr.go b/src/server/game/ChampshipMgr.go index a624b92b..cb9ca602 100644 --- a/src/server/game/ChampshipMgr.go +++ b/src/server/game/ChampshipMgr.go @@ -4,6 +4,7 @@ import ( "server/GoUtil" champshipCfg "server/conf/champship" "server/game/mod/msg" + proto "server/msg" "sort" "time" ) @@ -17,13 +18,15 @@ type ChampshipMgr struct { } type ChampshipData struct { - AutoId int - RobotId int - Rank map[int][]*ChampshipRank // 锦标赛排行榜 - Last map[int][]*ChampshipRank // 锦标赛排行榜 备份 - Pool map[int]*GroupInfo // 锦标赛未分配玩家 - GroupInfo map[int]int // 锦标赛分组信息 - Robot map[int]*ChampshipRobot // 机器人 + AutoId int + RobotId int + Rank map[int][]*ChampshipRank // 锦标赛排行榜 + PreRank map[int][]*ChampshipRank // 锦标赛排行榜 备份 + Pool map[int]*GroupInfo // 锦标赛未分配玩家 + GroupInfo map[int]int // 锦标赛分组信息 + PreGroupInfo map[int]int // 锦标赛分组信息 备份 + Robot map[int]*ChampshipRobot // 机器人 + PreRobot map[int]*ChampshipRobot // 机器人 备份 } type ChampshipRank struct { @@ -34,15 +37,16 @@ type ChampshipRank struct { } type ChampshipRobot struct { - Max float64 - Type int - Name string - Avatar int - Face int - Level int - GroupId int - Time int64 - Score float64 + Max float64 + Type int + Name string + Avatar int + Face int + Level int + GroupId int + Time int64 + Score float64 + PerScore float64 } type GroupInfo struct { @@ -63,39 +67,238 @@ type CRank struct { func (c *ChampshipMgr) Init() { c.key = CHAMPSHIP_MGR_KEY c.data = &ChampshipData{ - Rank: make(map[int][]*ChampshipRank, 0), - Last: make(map[int][]*ChampshipRank, 0), - Pool: make(map[int]*GroupInfo, 0), - Robot: make(map[int]*ChampshipRobot, 0), + Rank: make(map[int][]*ChampshipRank, 0), + PreRank: make(map[int][]*ChampshipRank, 0), + Pool: make(map[int]*GroupInfo, 0), + GroupInfo: make(map[int]int), + PreGroupInfo: make(map[int]int), + Robot: make(map[int]*ChampshipRobot, 0), + PreRobot: make(map[int]*ChampshipRobot, 0), } // 注册处理函数 c.init() c.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_GROUP, c.group) c.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_INRANK, c.inRank) + c.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_AI, c.ai) + c.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_ZERO, c.ZeroUpdate) + Now := GoUtil.Now() ZeroTime := GoUtil.ZeroTimestamp() - Remain := max(Now-ZeroTime, 3000) + Remain := Now - ZeroTime Remain1 := 1800 - Remain%1800 - c.mDispatr.AfterFunc(time.Duration(Remain1), func() { + c.mDispatr.AfterFunc(time.Duration(Remain1)*time.Second, func() { c.Send(&msg.Msg{ Type: msg.HANDLE_TYPE_CHAMPSHIP_GROUP, }) }) + c.mDispatr.AfterFunc(time.Duration(60)*time.Second, func() { + c.Send(&msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_AI, + }) + }) + c.mDispatr.AfterFunc(time.Duration(GoUtil.NextZeroTimestampDuration())*time.Second, func() { + c.Send(&msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_ZERO, + }) + }) } func (c *ChampshipMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) { - c.getData().Last = c.getData().Rank + c.getData().PreRank = c.getData().Rank + c.getData().PreRobot = c.getData().Robot + c.getData().PreGroupInfo = c.getData().GroupInfo + + c.getData().Robot = make(map[int]*ChampshipRobot, 0) c.getData().Rank = make(map[int][]*ChampshipRank, 0) + c.getData().GroupInfo = make(map[int]int, 0) c.update = true + c.mDispatr.AfterFunc(time.Duration(GoUtil.NextZeroTimestampDuration())*time.Second, func() { + c.Send(&msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_ZERO, + }) + }) return nil, nil } +func (c *ChampshipMgr) ai(m *msg.Msg) (interface{}, error) { + ChampshipData := c.getData() + Now := GoUtil.Now() + for k, v := range ChampshipData.Rank { + Notify := make(map[int]int) + for e, r := range v { + if r.Type == RANK_PLAYER_ROBOT { + AddScore := 0 + Robot := ChampshipData.Robot[r.Uid] + if Robot == nil { + continue + } + + if Robot.Type == 2 && Robot.Time+60 < Now { + AddScore = int(Robot.PerScore) + Robot.Time = Now + } + if Robot.Type == 3 && Robot.Time+1800 < Now { + AddScore = int(Robot.PerScore) + Robot.Time = Now + } + r.Score += float64(AddScore) + } else { + Notify[r.Uid] = e + } + } + sort.Slice(v, func(i, j int) bool { // 排序 从大到小 数值相等按时间排序 + if v[i].Score > v[j].Score { + return true + } else if v[i].Score == v[j].Score { + return v[i].Time < v[j].Time + } + return false + }) + for e, r := range v { + if r.Type == RANK_PLAYER_ROBOT { + continue + } + if Notify[r.Uid] != e { + NotifyPlayer(r.Uid, &msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, + }) + } + } + ChampshipData.Rank[k] = v + } + c.mDispatr.AfterFunc(time.Duration(60)*time.Second, func() { + c.Send(&msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_AI, + }) + }) + return nil, nil +} +func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank { + ChampshipData := c.getData() + GroupId := ChampshipData.GroupInfo[Uid] + if GroupId == 0 { + return &proto.ResChampshipPreRank{} + } + RankList, ok := ChampshipData.Rank[GroupId] + if !ok { + return &proto.ResChampshipPreRank{} + } + MyRank := 0 + MyScore := 0.0 + RL := make(map[int32]*proto.ResPlayerRank, 0) + for k, v := range RankList { + if v.Uid == Uid { + MyRank = k + 1 + MyScore = v.Score + } + if v.Type == RANK_PLAYER_ROBOT { + Robot := ChampshipData.Robot[v.Uid] + if Robot == nil { + continue + } + RL[int32(k+1)] = &proto.ResPlayerRank{ + Uid: int32(v.Uid), + Score: float32(v.Score), + Name: Robot.Name, + Avatar: int32(Robot.Avatar), + Face: int32(Robot.Face), + Level: int32(Robot.Level), + } + } else { + SimplePlayer := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if SimplePlayer == nil { + continue + } + RL[int32(k+1)] = &proto.ResPlayerRank{ + Uid: int32(v.Uid), + Score: float32(v.Score), + Name: SimplePlayer.Name, + Avatar: int32(SimplePlayer.Avatar), + Face: int32(SimplePlayer.Face), + Level: int32(SimplePlayer.Level), + } + } + } + + return &proto.ResChampshipPreRank{ + MyRank: int32(MyRank), + MyScore: float32(MyScore), + RankList: RL, + } +} +func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank { + ChampshipData := c.getData() + GroupId := ChampshipData.GroupInfo[Uid] + if GroupId == 0 { + return &proto.ResChampshipRank{} + } + RankList, ok := ChampshipData.Rank[GroupId] + if !ok { + return &proto.ResChampshipRank{} + } + MyRank := 0 + MyScore := 0.0 + RL := make(map[int32]*proto.ResPlayerRank, 0) + for k, v := range RankList { + if v.Uid == Uid { + MyRank = k + 1 + MyScore = v.Score + } + if v.Type == RANK_PLAYER_ROBOT { + Robot := ChampshipData.Robot[v.Uid] + if Robot == nil { + continue + } + RL[int32(k+1)] = &proto.ResPlayerRank{ + Uid: int32(v.Uid), + Score: float32(v.Score), + Name: Robot.Name, + Avatar: int32(Robot.Avatar), + Face: int32(Robot.Face), + Level: int32(Robot.Level), + } + } else { + SimplePlayer := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if SimplePlayer == nil { + continue + } + RL[int32(k+1)] = &proto.ResPlayerRank{ + Uid: int32(v.Uid), + Score: float32(v.Score), + Name: SimplePlayer.Name, + Avatar: int32(SimplePlayer.Avatar), + Face: int32(SimplePlayer.Face), + Level: int32(SimplePlayer.Level), + } + } + } + + return &proto.ResChampshipRank{ + MyRank: int32(MyRank), + MyScore: float32(MyScore), + RankList: RL, + } +} + // 分组 func (c *ChampshipMgr) group(m *msg.Msg) (interface{}, error) { + c.mDispatr.AfterFunc(time.Duration(1800)*time.Second, func() { // 30分钟后重新分组 + c.Send(&msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_GROUP, + }) + }) + Now := GoUtil.Now() + Zero := GoUtil.ZeroTimestamp() + if Now-Zero < 1800 { // 0点30分钟内不分组 + return nil, nil + } ChampshipData := c.getData() + if len(ChampshipData.Pool) == 0 { // 未分配玩家池为空 + return nil, nil + } g := make(map[int][]int, 0) - for k, v := range ChampshipData.Pool { + for k, v := range ChampshipData.Pool { // step 1:根据数值分配玩家 x := 0 n := champshipCfg.GetGroupId(v.N) h := champshipCfg.GetGroupId(v.H) @@ -136,26 +339,26 @@ func (c *ChampshipMgr) group(m *msg.Msg) (interface{}, error) { } return false }) - if (j+1)/10 == 0 { + if len(ChampshipData.Rank[ChampshipData.AutoId]) == 10 { ChampshipData.AutoId++ } } - for j := StartId; j <= ChampshipData.AutoId; j++ { + for j := StartId; j <= ChampshipData.AutoId; j++ { // 填充机器人 RobotNum := 30 - len(ChampshipData.Rank[j]) RobotList := CreateRobotList(i, RobotNum, j) for _, v := range RobotList { ChampshipData.Robot[ChampshipData.RobotId] = v - ChampshipData.Rank[ChampshipData.AutoId] = append(ChampshipData.Rank[ChampshipData.AutoId], &ChampshipRank{ + ChampshipData.Rank[j] = append(ChampshipData.Rank[j], &ChampshipRank{ Uid: ChampshipData.RobotId, Score: v.Score, Time: v.Time, Type: RANK_PLAYER_ROBOT, }) - sort.Slice(ChampshipData.Rank[ChampshipData.AutoId], func(i, j int) bool { // 排序 从大到小 数值相等按时间排序 - if ChampshipData.Rank[ChampshipData.AutoId][i].Score > ChampshipData.Rank[ChampshipData.AutoId][j].Score { + sort.Slice(ChampshipData.Rank[j], func(x, y int) bool { // 排序 从大到小 数值相等按时间排序 + if ChampshipData.Rank[j][x].Score > ChampshipData.Rank[j][y].Score { return true - } else if ChampshipData.Rank[ChampshipData.AutoId][i].Score == ChampshipData.Rank[ChampshipData.AutoId][j].Score { - return ChampshipData.Rank[ChampshipData.AutoId][i].Time < ChampshipData.Rank[ChampshipData.AutoId][j].Time + } else if ChampshipData.Rank[j][x].Score == ChampshipData.Rank[j][y].Score { + return ChampshipData.Rank[j][x].Time < ChampshipData.Rank[j][y].Time } return false }) @@ -163,18 +366,18 @@ func (c *ChampshipMgr) group(m *msg.Msg) (interface{}, error) { } } } - T := time.Now() - H := T.Hour() - if H != 0 { - c.mDispatr.AfterFunc(time.Duration(1800), func() { - c.Send(&msg.Msg{ - Type: msg.HANDLE_TYPE_CHAMPSHIP_GROUP, - }) + + for k := range ChampshipData.Pool { // 分组完成通知 + NotifyPlayer(k, &msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, }) } + c.getData().Pool = make(map[int]*GroupInfo) // 清空未分配池 return nil, nil } +// 获取分组ID + func (c *ChampshipMgr) getGroupId(Uid int) int { ChampshipData := c.getData() GroupId, ok := ChampshipData.GroupInfo[Uid] @@ -199,26 +402,87 @@ func (c *ChampshipMgr) inRank(m *msg.Msg) (interface{}, error) { } return nil, nil } - _, ok := ChampshipData.Rank[GroupId] + RankList, ok := ChampshipData.Rank[GroupId] if !ok { ChampshipData.Rank[GroupId] = make([]*ChampshipRank, 0) } - ChampshipData.Rank[GroupId] = append(ChampshipData.Rank[GroupId], &ChampshipRank{ - Uid: data.Uid, - Score: data.Score, - Time: GoUtil.Now(), - }) - sort.Slice(ChampshipData.Rank[GroupId], func(i, j int) bool { // 排序 从大到小 数值相等按时间排序 - if ChampshipData.Rank[GroupId][i].Score > ChampshipData.Rank[GroupId][j].Score { + inRank := false + Notify := make(map[int]int) + for k, v := range RankList { + if v.Uid == data.Uid { + if v.Score < data.Score { + v.Score = data.Score + v.Time = GoUtil.Now() + inRank = true + break + } + return nil, nil + } + Notify[v.Uid] = k + } + if !inRank { + RankList = append(RankList, &ChampshipRank{ + Uid: data.Uid, + Score: data.Score, + Time: GoUtil.Now(), + }) + } + sort.Slice(RankList, func(i, j int) bool { // 排序 从大到小 数值相等按时间排序 + if RankList[i].Score > RankList[j].Score { return true - } else if ChampshipData.Rank[GroupId][i].Score == ChampshipData.Rank[GroupId][j].Score { - return ChampshipData.Rank[GroupId][i].Time < ChampshipData.Rank[GroupId][j].Time + } else if RankList[i].Score == RankList[j].Score { + return RankList[i].Time < RankList[j].Time } return false }) + for k, v := range RankList { + if Notify[v.Uid] != k { + NotifyPlayer(v.Uid, &msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, + }) + } + } + + ChampshipData.Rank[GroupId] = RankList return nil, nil } +func (c *ChampshipMgr) getMyRank(Uid int) int { + ChampshipData := c.getData() + GroupId := ChampshipData.GroupInfo[Uid] + if GroupId == 0 { + return 0 + } + RankList, ok := ChampshipData.Rank[GroupId] + if !ok { + return 0 + } + for k, v := range RankList { + if v.Uid == Uid { + return k + 1 + } + } + return 0 +} + +func (c *ChampshipMgr) getLastMyRank(Uid int) int { + ChampshipData := c.getData() + GroupId := ChampshipData.PreGroupInfo[Uid] + if GroupId == 0 { + return 0 + } + RankList, ok := ChampshipData.PreRank[GroupId] + if !ok { + return 0 + } + for k, v := range RankList { + if v.Uid == Uid { + return k + 1 + } + } + return 0 +} + func (c *ChampshipMgr) getData() *ChampshipData { return c.data.(*ChampshipData) } @@ -231,13 +495,14 @@ func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot { r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId)) r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId)) r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId)) - for i := 0; i <= 6; i++ { + for i := 0; i < 6; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId)) } - for i := 0; i <= 5; i++ { + for i := 0; i < 5; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId)) } - for i := 0; i <= Num-15; i++ { + Last := Num - len(r) + for i := 0; i < Last; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId)) } case 2: @@ -245,15 +510,15 @@ func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot { r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId)) r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId)) r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId)) - for i := 0; i <= 6; i++ { + for i := 0; i < 6; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId)) } n := Num - 10 x := n / 2 - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId)) } - for i := 0; i <= n-x; i++ { + for i := 0; i < n-x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId)) } case 3: @@ -261,18 +526,19 @@ func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot { r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId)) r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId)) r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId)) - for i := 0; i <= 6; i++ { + for i := 0; i < 6; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId)) } n := Num - 10 x := n / 3 - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId)) } - for i := 0; i <= n-x*2; i++ { + Last := Num - len(r) + for i := 0; i < Last; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId)) } case 4: @@ -283,16 +549,17 @@ func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot { n := Num - 4 x := n / 4 - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId)) } - for i := 0; i <= n-x*3; i++ { + Last := Num - len(r) + for i := 0; i < Last; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId)) } case 5: @@ -302,19 +569,20 @@ func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot { n := Num - 3 x := n / 5 - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId)) } - for i := 0; i <= n-x*4; i++ { + Last := Num - len(r) + for i := 0; i < Last; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId)) } case 6: @@ -323,47 +591,49 @@ func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot { n := Num - 2 x := n / 6 - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId)) } - for i := 0; i <= Num-len(r); i++ { + Last := Num - len(r) + for i := 0; i < Last; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId)) } case 7: r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId)) n := Num - 1 x := n / 7 - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId)) } - for i := 0; i <= Num-len(r); i++ { + Last := Num - len(r) + for i := 0; i < Last; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId)) } case 8, 9, 10, 11: @@ -372,28 +642,29 @@ func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot { r = append(r, CreateRobot(float64(GoUtil.RandNum(35131, 64980)), GroupId)) } x := Num / 8 - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(12181, 21680)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(7531, 12180)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(4631, 7530)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(2781, 4630)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(1731, 2780)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(581, 1730)), GroupId)) } - for i := 0; i <= x; i++ { + for i := 0; i < x; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(241, 580)), GroupId)) } - for i := 0; i <= Num-len(r); i++ { + Last := Num - len(r) + for i := 0; i < Last; i++ { r = append(r, CreateRobot(float64(GoUtil.RandNum(20, 240)), GroupId)) } @@ -404,19 +675,26 @@ func CreateRobotList(G, Num, GroupId int) []*ChampshipRobot { func CreateRobot(M float64, GroupId int) *ChampshipRobot { Type := GoUtil.RandMap(map[int]int{1: 25, 2: 50, 3: 25}) Score := M / 10 + PerScore := 0.0 if Type == 2 { + PerScore = (M / 10 * 0.34) / float64(GoUtil.NextZeroTimestampDuration()) / 60 Score = M / 10 * 0.66 } + if Type == 3 { + PerScore = (M / 10 * 0.34) / float64(GoUtil.NextZeroTimestampDuration()) / 1800 + Score = 0 + } return &ChampshipRobot{ - Max: M, - Type: Type, - Name: "Lily", - Avatar: 1, - Face: 1, - Level: 1, - GroupId: GroupId, - Time: GoUtil.Now(), - Score: Score, + Max: M / 10, + Type: Type, + Name: "Lily", + Avatar: GoUtil.RandNum(1, 10), + Face: GoUtil.RandNum(1, 10), + Level: GoUtil.RandNum(1, 10), + GroupId: GroupId, + Time: GoUtil.Now(), + Score: Score, + PerScore: PerScore, } } diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 3102cbf5..fd8029e3 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -83,11 +83,13 @@ type GameLogic struct { MPlayerProfileManager *PlayerProfileManager MOldPlayerCompensateMgr *OldPlayerCompensateMgr MHttpManager *HttpManager - MLogManager *LogMgr - SeverInfo *ServerInfo - FriendMgr *FriendMgr - RankMgr *RankMgr - MailMgr *MailMgr + + MLogManager *LogMgr + SeverInfo *ServerInfo + FriendMgr *FriendMgr + RankMgr *RankMgr + MailMgr *MailMgr + ChampshipMgr *ChampshipMgr } type ServerInfo struct { @@ -356,6 +358,26 @@ func (ad *GameLogic) MailMgrCall(m *MsgMod.Msg) interface{} { return result } +// 锦标赛管理器 +func (ad *GameLogic) CreateChampshipMgr() { + ad.ChampshipMgr = &ChampshipMgr{ + ServerMod: new(ServerMod), + } + ad.ChampshipMgr.Init() +} + +func (ad *GameLogic) ChampshipMgrSend(m *MsgMod.Msg) { + ad.ChampshipMgr.Send(m) +} + +func (ad *GameLogic) ChampshipMgrCall(m *MsgMod.Msg) interface{} { + result, err := ad.ChampshipMgr.Call(m) + if err != nil { + return nil + } + return result +} + func (ad *GameLogic) GetSimplePlayerByUid(Id int) *PlayerSimpleData { Idstr := strconv.Itoa(Id) Value, _ := db.RedisGetKey(Idstr) @@ -363,7 +385,10 @@ func (ad *GameLogic) GetSimplePlayerByUid(Id int) *PlayerSimpleData { player.Uid = Id if Value == "" { p := new(Player) - p.GetSimpleData(Id, player) + err := p.GetSimpleData(Id, player) + if err != nil { + return nil + } value, _ := json.Marshal(player) db.RedisSetKey(Idstr, string(value), 300) } else { @@ -430,6 +455,7 @@ func G_getGameLogic() *GameLogic { G_GameLogicPtr.CreateFriendMgr() //创建好友管理器 G_GameLogicPtr.CreateRankMgr() //创建排行榜管理器 G_GameLogicPtr.CreateMailMgr() //创建邮件管理器 + G_GameLogicPtr.CreateChampshipMgr() // 创建竞标赛管理器 ClusterMgrInit() //初始化集群 // G_GameLogicPtr.CreateHttpManager() @@ -972,6 +998,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqFastProduceReward", ReqFastProduceReward) //场景转盘 RegisterMsgProcessFunc("ReqLimitSenceReward", ReqLimitSenceReward) + //领取限时事件进度奖励 // 好友 RegisterMsgProcessFunc("ReqFriendList", ReqFriendList) // 请求好友列表 @@ -984,7 +1011,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqApplyFriend", ReqApplyFriend) // 申请好友 RegisterMsgProcessFunc("ReqAgreeFriend", ReqAgreeFriend) // 同意申请 RegisterMsgProcessFunc("ReqRefuseFriend", ReqRefuseFriend) // 拒绝申请 - RegisterMsgProcessFunc("ReqDeleteFriend", ReqDeleteFriend) // 删除好友 + RegisterMsgProcessFunc("ReqDelFriend", ReqDelFriend) // 删除好友 // 榜单 RegisterMsgProcessFunc("ReqRank", ReqRank) // 请求榜单数据 @@ -1010,6 +1037,8 @@ func (ad *GameLogic) RegisterNetWorkFunc() { // 锦标赛 RegisterMsgProcessFunc("ReqChampshipReward", ReqChampshipReward) // 领取锦标赛奖励 RegisterMsgProcessFunc("ReqChampshipRankReward", ReqChampshipRankReward) // 领取锦标赛排行榜奖励 + RegisterMsgProcessFunc("ReqChampshipRank", ReqChampshipRank) // 请求锦标赛排行榜 + RegisterMsgProcessFunc("ReqChampshipPreRank", ReqChampshipPreRank) // 请求锦标赛昨日排行榜 } @@ -1175,6 +1204,14 @@ func (ad *GameLogic) NotifyAll(m *MsgMod.Msg) { } } +func NotifyPlayer(Uid int, m *MsgMod.Msg) { + p := G_GameLogicPtr.GetPlayerByUid(Uid) + if p == nil || p.stop { + return + } + p.SendMsg(m) +} + func setRedisLock(key, value string, Duration time.Duration) bool { return db.RedisLock(key, "", Duration) } diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index e5b8bcfb..cf50e8d5 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -3,6 +3,7 @@ package game import ( "server/game/mod/card" "server/game/mod/item" + MsgMod "server/game/mod/msg" "server/msg" "strconv" "strings" @@ -70,7 +71,15 @@ func ReqGmCommand(args []interface{}) error { CardMod.AddCard(3) FriendMod := player.PlayMod.getFriendMod() FriendMod.Card = make(map[string]*card.CardInfo) - + case "champshipGroup": + G_GameLogicPtr.ChampshipMgrSend(&MsgMod.Msg{ + Type: MsgMod.HANDLE_TYPE_CHAMPSHIP_GROUP, + }) + case "champshipZero": + G_GameLogicPtr.ChampshipMgrSend(&MsgMod.Msg{ + Type: MsgMod.HANDLE_TYPE_CHAMPSHIP_ZERO, + }) } + return nil } diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 1b8c01f4..dfd6af5d 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -4,6 +4,8 @@ import ( // "server/GoUtil" // "server/MergeConst" + "context" + "database/sql" "encoding/json" "errors" "fmt" @@ -416,10 +418,18 @@ func (p *Player) ClearData() { func (p *Player) AutoSaveData() { //保存数据 + ctx := context.Background() + txOptions := &sql.TxOptions{} + tx, err := db.SqlDb.BeginTx(ctx, txOptions) + if err != nil { + log.Debug("AutoSaveData BeginTx failed:", err) + return + } for _, v := range p.playerdata { v.SaveDataFromDB("") } p.PlayMod.ClearData(p) + tx.Commit() } // 重新连接 @@ -575,15 +585,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { Lable: Label, }) } - NotifyCard := &msg.ResNotifyCard{} - NotifyCard.Card = make(map[int32]int32) - for _, v := range ResCard { - for _, c := range v.Card { - NotifyCard.Card[c]++ - } - } - - p.PushClientRes(NotifyCard) + CardMod := p.PlayMod.getCardMod() + p.PushClientRes(CardMod.NotifyCard()) if is_update { p.PushClientRes(p.GetPlayerBaseMod().BackAsset()) @@ -609,7 +612,7 @@ func (p *Player) LoginBackData() { p.PushClientRes(p.PlayMod.mod_list.PiggyBank.BackData()) p.PushClientRes(p.GetPlayerBaseMod().BackAsset()) p.PushClientRes(p.GetPlayerBaseMod().BackKv()) - MyRank := G_GameLogicPtr.RankMgr.getMyRank(RANK_TYPE_CHAMPSHIP, int(p.M_DwUin)) + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) p.PushClientRes(p.PlayMod.mod_list.Champship.BackData(MyRank)) BackUserInfo(p) } @@ -662,6 +665,7 @@ func (p *Player) UpdateUserInfo() { Base := p.GetPlayerBaseMod() simple.Name = p.GetPlayerBaseMod().GetName() simple.Avatar = p.PlayMod.getAvatarMod().SetId + simple.Uid = int(p.M_DwUin) simple.Face = p.PlayMod.getFaceMod().SetId simple.Level = p.GetPlayerBaseMod().GetLevel() simple.Decorate = p.PlayMod.getDecorateMod().DecorateNum @@ -696,13 +700,14 @@ func (p *Player) HandleInChampshipRank() { Score := float64(ChampshipMod.GetScore()) // 更新排行榜 m := &MsgMod.Msg{ - Type: MsgMod.HANDLE_TYPE_RANK, + Type: MsgMod.HANDLE_TYPE_CHAMPSHIP_INRANK, SendT: GoUtil.Now(), - Extra: RankMsg{ - Uid: int(p.M_DwUin), - Score: Score, - RankType: RANK_TYPE_CHAMPSHIP, + Extra: CRank{ + Uid: int(p.M_DwUin), + Score: Score, + H: ChampshipMod.GetH(), + N: ChampshipMod.GetN(), }, } - G_GameLogicPtr.RankMgrSend(m) + G_GameLogicPtr.ChampshipMgrSend(m) } diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 37173f76..dbe66635 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/gob" "errors" + "fmt" "server/GoUtil" "server/MergeConst" userCfg "server/conf/user" @@ -204,7 +205,6 @@ func (p *PlayerBaseData) SetChampshipID(ChampshipsGroupID int32, isNotify bool) } - p.SaveDataFromDB("") } func (p *PlayerBaseData) Notify_Daily_Renew(param []interface{}) { @@ -217,7 +217,7 @@ func (p *PlayerBaseData) Notify_Daily_Renew(param []interface{}) { agent := p.GetPlayer().GetAgentByPlayer() data, _ := proto.Marshal(notify) G_getGameLogic().PackResInfo(agent, "NotifyRenewBuyEnergyCnt", data) - p.SaveDataFromDB("") + } func (p *PlayerBaseData) SaveDataFromDB(Key interface{}) bool { @@ -252,6 +252,7 @@ func (p *PlayerBaseData) SaveDataFromDB(Key interface{}) bool { var buf bytes.Buffer encode := gob.NewEncoder(&buf) encode.Encode(p.KeyValueData) + log.Debug("player :%d KeyValueData Save:%v ", p.Data.DwUin, p.KeyValueData) db.SavePlayerClientData(&db.SqlModStruct{ DwUin: p.Data.DwUin, ModData: buf.Bytes(), @@ -327,7 +328,7 @@ func (p *PlayerBaseData) UpdateBaseItemInfo(update *msg.UpdateBaseItemInfo) { p.Data.LastPlayTime = v } } - p.SaveDataFromDB("") + } func (p *PlayerBaseData) ReqRemoveAd(buf []byte) { @@ -337,7 +338,6 @@ func (p *PlayerBaseData) ReqRemoveAd(buf []byte) { p.Data.NoAd = 1 res.ResultCode = 0 - p.SaveDataFromDB("") agent := p.GetPlayer().GetAgentByPlayer() data, _ := proto.Marshal(res) @@ -387,7 +387,7 @@ func (p *PlayerBaseData) ReqBindFacebookAccount(buf []byte) { res.ResultCode = 0 p.Data.FaceBookId = req.BindAccountId res.BindAccountId = req.BindAccountId - p.SaveDataFromDB("") + } agent := p.GetPlayer().GetAgentByPlayer() @@ -403,7 +403,6 @@ func (p *PlayerBaseData) ReqUnBindFacebook(buf []byte) { res.ResultCode = 0 res.BindAccountId = req.BindAccountId p.Data.FaceBookId = "" - p.SaveDataFromDB("") agent := p.GetPlayer().GetAgentByPlayer() data, _ := proto.Marshal(res) @@ -432,13 +431,13 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(buf []byte) { res.ResultCode = 0 p.Data.FaceBookId = req.BindAccountId res.BindAccountId = req.BindAccountId - p.SaveDataFromDB("") + } } else { res.ResultCode = 0 p.Data.FaceBookId = req.BindAccountId res.BindAccountId = req.BindAccountId - p.SaveDataFromDB("") + } agent := p.GetPlayer().GetAgentByPlayer() @@ -447,91 +446,11 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(buf []byte) { } func (p *PlayerBaseData) ReqSynGameData(buf []byte) { - req := &msg.ReqSynGameData{} - res := &msg.ResSynGameData{} - proto.Unmarshal(buf, req) - sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?" - sqlStruck := db.ResPlayerBaseInfo{} - isHaveOther := false - - if err := db.SqlDb.Get(&sqlStruck, sqlStr, req.NewFBId); err != nil { - isHaveOther = false - } else { - isHaveOther = true - } - if sqlStruck.DwUin == p.M_Player.M_DwUin { - return - } - - if OldPlayer, ok := G_GameLogicPtr.M_Players[sqlStruck.DwUin]; ok { - agent := OldPlayer.GetAgentByPlayer() - // notify := &msg.ForceKickOut{} - notify := &msg.ResSynGameData{} - data, _ := proto.Marshal(notify) - if agent != nil { - G_getGameLogic().PackResInfo(agent, "ResSynGameData", data) - } - OldPlayer.ClearData() - delete(G_GameLogicPtr.M_Players, sqlStruck.DwUin) - } else { - player := G_GameLogicPtr.FindOfflinePlayer(sqlStruck.DwUin) - if player != nil { - timer1 := G_GameLogicPtr.MReadyToRemoveList[player] - timer1.Disabled() - G_GameLogicPtr.Mdispatr.ChanTimer <- timer1 - timer1.Stop() - delete(G_GameLogicPtr.MReadyToRemoveList, player) - } - } - - if isHaveOther { - if sqlStruck.DwUin == p.Data.DwUin { - res.ResultCode = MergeConst.Protocol_FaceBook_Binded - } else { - ReplaceName := sqlStruck.UserName - UserName := p.Data.UserName - res.ResultCode = 0 - - sqlStr1 := "SELECT * FROM t_account WHERE user_name = ?" - sqlAccStruck1 := db.Db_Account{} - if err2 := db.SqlDb.Get(&sqlAccStruck1, sqlStr1, UserName); err2 != nil { - - } else { - sqlAccStruck1.UserName = "" - db.FormatAllMemUpdateDb(&sqlAccStruck1, "t_account", "auto_id") - } - p.Data.UserName = "" - p.SaveDataFromDB("") - - sqlStruck.FaceBookId = req.NewFBId - sqlStruck.UserName = UserName - db.FormatAllMemUpdateDb(&sqlStruck, "t_player_baseinfo", "dwUin") - - sqlStr := "SELECT * FROM t_account WHERE user_name = ?" - sqlAccStruck := db.Db_Account{} - - if err2 := db.SqlDb.Get(&sqlAccStruck, sqlStr, ReplaceName); err2 != nil { - - } else { - sqlAccStruck.UserName = UserName - db.FormatAllMemUpdateDb(&sqlAccStruck, "t_account", "auto_id") - } - - } - } else { - res.ResultCode = 0 - - } - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(res) - G_getGameLogic().PackResInfo(agent, "ResSynGameData", data) } func (p *PlayerBaseData) ClearData() bool { p.Data.LogoutTime = int32(time.Now().Unix()) - p.SaveDataFromDB("") GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) p.McronSave.Remove(p.McronSaveID) p.McronSave.Stop() @@ -543,6 +462,8 @@ func (p *PlayerBaseData) ClearData() bool { p.MTicker.Stop() p.MTicker = nil } + fmt.Print("ClearData:", p.Data.DwUin) + p.SaveDataFromDB("") return true } diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 935d5131..1c72b560 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -178,7 +178,7 @@ func (p *PlayerChessData) UpdatePlayerChessData(buf []byte) error { p.M_Player.SendErrClienRes(res) return fmt.Errorf("棋子数据不一致") } - p.SaveDataFromDB("") + return nil } @@ -319,7 +319,6 @@ func (p *PlayerChessData) UpdateChessColorData(buf []byte) { } p.ColorData.MChessColorData = update.MChessColorData - p.SaveDataFromDB("") } func (p *PlayerChessData) GetChestKeyByValue(id int32) string { for k, v := range p.Data.MChessData { @@ -332,7 +331,6 @@ func (p *PlayerChessData) GetChestKeyByValue(id int32) string { func (p *PlayerChessData) ClearData() bool { p.SaveDataFromDB("") - return true } diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 7da53262..fbc7642a 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -119,9 +119,7 @@ func handle(p *Player, m *msg.Msg) error { CardMod.AddExTimes() CardMod.AddCard(CardInfo.CardId) CardMod.DelExCard(CardInfo) - p.PushClientRes(&proto.ResNotifyCard{ - Card: map[int32]int32{int32(CardInfo.CardId): 1}, - }) + p.PushClientRes(CardMod.NotifyCard()) p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_EX_CARD: // B收到A拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() @@ -130,9 +128,10 @@ func handle(p *Player, m *msg.Msg) error { FriendMod := p.PlayMod.getFriendMod() FriendMod.DelCardInfo(CardInfo.Id) p.PlayMod.save() - p.PushClientRes(&proto.ResNotifyCard{ - Card: map[int32]int32{int32(CardInfo.ExId): 1}, - }) + p.PushClientRes(CardMod.NotifyCard()) + case msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY: // 锦标赛排名变动通知 + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) + p.PushClientRes(p.PlayMod.getChampshipMod().BackData(MyRank)) case msg.HANDLE_TYPE_MAIL: // 邮件操作 MailMod := p.PlayMod.getMailMod() if m.Extra == nil { @@ -169,9 +168,6 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error { FriendMod.HandleMsg(m) PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) switch m.Type { - case msg.HANDLE_TYPE_RANK_NOTIFY: // 排行榜更新 - MyRank := G_GameLogicPtr.RankMgr.getMyRank(RANK_TYPE_CHAMPSHIP, int(p.M_DwUin)) - p.PushClientRes(p.PlayMod.getChampshipMod().BackData(MyRank)) case msg.HANDLE_TYPE_APPLY: // 好友申请 FriendMod.AddFriendApply(m.From) p.PushClientRes(&proto.ResFriendApplyNotify{ diff --git a/src/server/game/RankMgr.go b/src/server/game/RankMgr.go index 58708ffc..36634a2c 100644 --- a/src/server/game/RankMgr.go +++ b/src/server/game/RankMgr.go @@ -115,14 +115,13 @@ func (r *RankMgr) inRank(m *msg.Msg) (interface{}, error) { data := m.Extra.(RankMsg) rankList := r.getRank(data.RankType) inRank := false - MyRank := 0 - for k, v := range rankList { + for _, v := range rankList { if v.Uid == data.Uid { if v.Score < data.Score { v.Score = data.Score v.Time = m.SendT inRank = true - MyRank = k + 1 + break } return nil, nil } @@ -139,16 +138,7 @@ func (r *RankMgr) inRank(m *msg.Msg) (interface{}, error) { } return false }) - for k, v := range rankList { - if v.Uid == data.Uid { - if MyRank != k+1 { - Notify(data.Uid, &msg.Msg{ - Type: msg.HANDLE_TYPE_RANK_NOTIFY, - }) - } - break - } - } + // if len(rankList) >= 100 { // rankList = rankList[:100] // } @@ -160,11 +150,3 @@ func (r *RankMgr) inRank(m *msg.Msg) (interface{}, error) { r.update = true return nil, nil } - -func Notify(Uid int, m *msg.Msg) { - p := G_GameLogicPtr.GetPlayerByUid(Uid) - if p == nil || p.stop { - return - } - p.SendMsg(m) -} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 9fb7700b..1f09a741 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -2026,13 +2026,14 @@ func ReqRewardOrder(args []interface{}) error { // 限时事件增加进度 LimitedTimeEventMod.AddProgress(player.GetPlayerBaseMod().GetLevel()) - MyRank := G_GameLogicPtr.RankMgr.getMyRank(RANK_TYPE_CHAMPSHIP, int(player.M_DwUin)) + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(player.M_DwUin)) player.HandleInChampshipRank() player.PlayMod.save() player.PushClientRes(PiggyBankMod.BackData()) player.PushClientRes(OrderMod.BackData()) player.PushClientRes(ChampshipMod.BackData(MyRank)) player.PushClientRes(LimitedTimeEventMod.BackData()) + player.PushClientRes(LimitedTimeEventMod.ProgressBackData()) return nil } @@ -2738,41 +2739,31 @@ func ReqSearchPlayer(args []interface{}) error { req := &msg.ReqSearchPlayer{} proto.Unmarshal(buf, req) Uid, err := strconv.Atoi(req.Uid) - SearchPlayers := make([]*PlayerSimpleData, 0) + list := make([]*msg.ResPlayerSimple, 0) if err == nil { - SearchPlayer := G_GameLogicPtr.GetSimplePlayerByUid(Uid) + SearchPlayer := G_GameLogicPtr.GetResSimplePlayerByUid(Uid) if SearchPlayer != nil { - SearchPlayers = append(SearchPlayers, SearchPlayer) + list = append(list, SearchPlayer) } } data, err := db.SearchPlayer(req.Uid) - if err == nil { - for _, v := range data { - SearchPlayer := G_GameLogicPtr.GetSimplePlayerByUid(int(v.DwUin)) - SearchPlayers = append(SearchPlayers, SearchPlayer) - } - } - if len(SearchPlayers) == 0 { - player.PushClientRes(&msg.ResSearchPlayer{ - Code: MergeConst.Protocol_AddFriend_Is_NoExsit, + if err != nil { + player.SendErrClienRes(&msg.ResSearchPlayer{ + Code: 0, }) - return fmt.Errorf("player not found") } - list := make([]*msg.ResPlayerSimple, 0) - for _, v := range SearchPlayers { - if player.PlayMod.getFriendMod().CheckFriend(v.Uid) { + for _, v := range data { + if player.M_DwUin == v.DwUin { continue } - if player.PlayMod.getFriendMod().CheckApply(v.Uid) { + if player.PlayMod.getFriendMod().CheckFriend(int(v.DwUin)) { continue } - list = append(list, &msg.ResPlayerSimple{ - Uid: int32(v.Uid), - Name: v.Name, - Avatar: int32(v.Avatar), - Level: int32(v.Level), - Face: int32(v.Face), - }) + if player.PlayMod.getFriendMod().CheckApply(int(v.DwUin)) { + continue + } + SearchPlayer := G_GameLogicPtr.GetResSimplePlayerByUid(int(v.DwUin)) + list = append(list, SearchPlayer) } player.PushClientRes(&msg.ResSearchPlayer{ @@ -2824,15 +2815,17 @@ func ReqAgreeFriend(args []interface{}) error { G_GameLogicPtr.FriendMgrSend(m) FriendMod.AddFriend(Uid) player.PlayMod.save() - player.PushClientRes(&msg.ResApplyFriend{ - Code: msg.RES_CODE_SUCCESS, + player.PushClientRes(&msg.ResAgreeFriend{ + Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, + Player: G_GameLogicPtr.GetResSimplePlayerByUid(int(req.Uid)), }) FriendApplyBackData(player) return nil } // 删除好友 -func ReqDeleteFriend(args []interface{}) error { +func ReqDelFriend(args []interface{}) error { _, player, buf := ParseArgs(args) req := &msg.ReqDelFriend{} proto.Unmarshal(buf, req) @@ -2849,6 +2842,7 @@ func ReqDeleteFriend(args []interface{}) error { player.PlayMod.save() player.PushClientRes(&msg.ResDelFriend{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) FriendListBackData(player) return nil @@ -2865,6 +2859,7 @@ func ReqRefuseFriend(args []interface{}) error { player.PlayMod.save() player.PushClientRes(&msg.ResRefuseFriend{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_DEL, @@ -2998,9 +2993,7 @@ func ReqAgreeCardGive(args []interface{}) error { Extra: CardInfo, } FriendMgrSend(m) - player.PushClientRes(&msg.ResNotifyCard{ - Card: map[int32]int32{int32(CardInfo.CardId): -1}, - }) + player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(&msg.ResAgreeCardGive{ Code: msg.RES_CODE_SUCCESS, }) @@ -3065,9 +3058,7 @@ func ReqCardSend(args []interface{}) error { player.PushClientRes(&msg.ResCardSend{ Code: msg.RES_CODE_SUCCESS, }) - player.PushClientRes(&msg.ResNotifyCard{ - Card: map[int32]int32{int32(CardInfo.CardId): -1}, - }) + player.PushClientRes(CardMod.NotifyCard()) player.PlayMod.save() FriendMgrSend(m) return nil @@ -3101,9 +3092,7 @@ func ReqCardExchange(args []interface{}) error { player.PushClientRes(&msg.ResCardExchange{ Code: msg.RES_CODE_SUCCESS, }) - player.PushClientRes(&msg.ResNotifyCard{ - Card: map[int32]int32{int32(CardInfo.CardId): -1}, - }) + player.PushClientRes(CardMod.NotifyCard()) player.PlayMod.save() FriendMgrSend(m) return nil @@ -3148,9 +3137,7 @@ func ReqSelectCardExchange(args []interface{}) error { player.PushClientRes(&msg.ResSelectCardExchange{ Code: msg.RES_CODE_SUCCESS, }) - player.PushClientRes(&msg.ResNotifyCard{ - Card: map[int32]int32{int32(CardId): -1}, - }) + player.PushClientRes(CardMod.NotifyCard()) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_SELECT_EX_CARD, From: int(player.M_DwUin), @@ -3193,9 +3180,7 @@ func ReqAgreeCardExchange(args []interface{}) error { To: CardInfo.BUid, Extra: CardInfo, } - player.PushClientRes(&msg.ResNotifyCard{ - Card: map[int32]int32{int32(CardInfo.ExId): 1}, - }) + player.PushClientRes(CardMod.NotifyCard()) FriendMgrSend(m) return nil } @@ -3259,9 +3244,7 @@ func ReqRefuseCardExchange(args []interface{}) error { To: CardInfo.BUid, Extra: CardInfo, } - player.PushClientRes(&msg.ResNotifyCard{ - Card: map[int32]int32{int32(CardInfo.CardId): 1}, - }) + player.PushClientRes(CardMod.NotifyCard()) FriendMgrSend(m) return nil } @@ -3287,9 +3270,7 @@ func ReqGetFriendCard(args []interface{}) error { player.PushClientRes(&msg.ResGetFriendCard{ Code: msg.RES_CODE_SUCCESS, }) - player.PushClientRes(&msg.ResNotifyCard{ - Card: map[int32]int32{int32(CardInfo.CardId): 1}, - }) + player.PushClientRes(CardMod.NotifyCard()) return nil } @@ -3315,21 +3296,22 @@ func ReqRank(args []interface{}) error { return nil } -// 请求昨日竞标赛榜单 +// 请求竞标赛榜单 func ReqChampshipRank(args []interface{}) error { _, player, buf := ParseArgs(args) req := &msg.ReqRank{} proto.Unmarshal(buf, req) - rankList := G_GameLogicPtr.RankMgr.getLastChampshipRank() - res := make(map[int32]*msg.ResPlayerSimple) - for k, rank := range rankList { - res[int32(k+1)] = G_GameLogicPtr.GetResSimplePlayerByUid(rank.Uid) - } + m := G_GameLogicPtr.ChampshipMgr.GetRankMsg(int(player.M_DwUin)) + player.PushClientRes(m) + return nil +} - player.PushClientRes(&msg.ResRank{ - Type: req.Type, - RankList: res, - }) +func ReqChampshipPreRank(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqRank{} + proto.Unmarshal(buf, req) + m := G_GameLogicPtr.ChampshipMgr.GetPreRankMsg(int(player.M_DwUin)) + player.PushClientRes(m) return nil } @@ -3600,7 +3582,7 @@ func ReqChampshipReward(args []interface{}) error { }) return err } - MyRank := G_GameLogicPtr.RankMgr.getMyRank(RANK_TYPE_CHAMPSHIP, int(player.M_DwUin)) + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(player.M_DwUin)) player.PlayMod.save() player.PushClientRes(ChampshipMod.BackData(MyRank)) player.PushClientRes(&msg.ResChampshipReward{ @@ -3666,19 +3648,16 @@ func ReqFriendRecommend(args []interface{}) error { break } PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if v.Uid == int(player.M_DwUin) { + continue + } if FriendMod.CheckFriend(v.Uid) { continue } if FriendMod.CheckApply(v.Uid) { continue } - RecommendList = append(RecommendList, &msg.ResPlayerSimple{ - Uid: int32(PlayerSimpleData.Uid), - Name: PlayerSimpleData.Name, - Avatar: int32(PlayerSimpleData.Avatar), - Level: int32(PlayerSimpleData.Level), - Face: int32(PlayerSimpleData.Face), - }) + RecommendList = append(RecommendList, PlayerSimpleData) n++ } player.PushClientRes(&msg.ResFriendRecommend{ @@ -3714,9 +3693,9 @@ func ReqFriendTimeLine(args []interface{}) error { func ReqChampshipRankReward(args []interface{}) error { _, player, _ := ParseArgs(args) - MyRank := G_GameLogicPtr.RankMgr.getLastChampship(int(player.M_DwUin)) + MyLastRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(player.M_DwUin)) ChampshipMod := player.PlayMod.getChampshipMod() - itemList, err := ChampshipMod.GetRankReward(MyRank) + itemList, err := ChampshipMod.GetRankReward(MyLastRank) if err != nil { player.SendErrClienRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_FAIL, @@ -3733,6 +3712,7 @@ func ReqChampshipRankReward(args []interface{}) error { return err } player.PlayMod.save() + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(player.M_DwUin)) player.PushClientRes(ChampshipMod.BackData(MyRank)) player.PushClientRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_SUCCESS, @@ -3776,10 +3756,10 @@ func ReqMasterCard(args []interface{}) error { } player.PlayMod.save() player.PushClientRes(&msg.ResMasterCard{ - Code: msg.RES_CODE_SUCCESS, - }) - player.PushClientRes(&msg.ResNotifyCard{ - Card: map[int32]int32{int32(req.CardId): 1}, + Code: msg.RES_CODE_SUCCESS, + MasterId: req.Id, + CardId: req.CardId, }) + player.PushClientRes(CardMod.NotifyCard()) return nil } diff --git a/src/server/game/ServerMod.go b/src/server/game/ServerMod.go index 15c8a9e7..fe4c50b2 100644 --- a/src/server/game/ServerMod.go +++ b/src/server/game/ServerMod.go @@ -16,7 +16,7 @@ const ( RANK_MGR_KEY = "RANK_MGR" MAIL_MGR_KEY = "MAIL_MGR" CHAMPSHIP_MGR_KEY = "CHAMPSHIP_MGR" - PER_SAVE_TIME = 1 + PER_SAVE_TIME = 60 ) type ServerMod struct { @@ -38,7 +38,7 @@ func (s *ServerMod) init() { s.handler = make(map[int]interface{}) s.update = false s.LoadData() - s.mDispatr.AfterFunc(time.Duration(PER_SAVE_TIME), func() { + s.mDispatr.AfterFunc(time.Duration(PER_SAVE_TIME)*time.Second, func() { s.SaveData() }) go func() { @@ -48,6 +48,7 @@ func (s *ServerMod) init() { s.lock.Unlock() } }() + for { select { case msg := <-s.msgChan: @@ -61,6 +62,7 @@ func (s *ServerMod) init() { } } }() + } // 处理消息 @@ -122,12 +124,9 @@ func (s *ServerMod) Call(m *msg.Msg) (interface{}, error) { // mysql 保存消息 func (s *ServerMod) SaveData() { - s.mDispatr.AfterFunc(time.Duration(PER_SAVE_TIME+GoUtil.RandNum(5, 10)), func() { + s.mDispatr.AfterFunc(time.Duration(PER_SAVE_TIME+GoUtil.RandNum(5, 10))*time.Second, func() { s.SaveData() }) - if !s.update { - return - } DbData := db.SqlServerModStruct{} DbData.Key = s.key DbData.UpdataTime = GoUtil.Now() @@ -140,7 +139,6 @@ func (s *ServerMod) SaveData() { if err != nil { log.Debug("SaveData sql exec ,Mod Key: %s err:%v", s.key, err) } - } func (s *ServerMod) LoadData() { diff --git a/src/server/game/mod/card/Card.go b/src/server/game/mod/card/Card.go index 07c832be..927eeeb9 100644 --- a/src/server/game/mod/card/Card.go +++ b/src/server/game/mod/card/Card.go @@ -20,6 +20,13 @@ type CardMod struct { ReqTimes int //请求次数 ReqFriend map[int]*CardInfo //今日已请求好友 ExCard map[int]*CardInfo // 交换卡牌 + Cache Cache // 缓存卡牌 +} + +type Cache struct { + Card map[int]int + Master map[int]int + ExStar int } const ( @@ -73,6 +80,12 @@ func (c *CardMod) InitData() { if c.ExCard == nil { c.ExCard = make(map[int]*CardInfo) } + if c.Cache.Card == nil { + c.Cache.Card = make(map[int]int) + } + if c.Cache.Master == nil { + c.Cache.Master = make(map[int]int) + } } func (c *CardMod) Login(ServerOpenTime int64) { @@ -101,10 +114,12 @@ func (c *CardMod) AddCard(Id int) { if ok { star := cardCfg.GetStarById(Id) c.ExchangeStar += star + c.Cache.ExStar += star c.CardList[Id]++ } else { c.CardList[Id] = 1 } + c.Cache.Card[Id]++ } // 开启卡包 @@ -215,6 +230,7 @@ func (c *CardMod) ExStarReward(Id int) ([]*item.Item, error) { return nil, err } } + c.Cache.ExStar -= CostStar return itemList, nil } @@ -247,6 +263,7 @@ func (c *CardMod) SubCard(id int) error { count, ok := c.CardList[id] if ok && count > 0 { c.CardList[id]-- + c.Cache.Card[id]-- return nil } return fmt.Errorf("SubCard card not enough") @@ -346,6 +363,7 @@ func (c *CardMod) DelExCard(CardInfo *CardInfo) { } func (c *CardMod) AddMasterCard(Id int) { + c.Cache.Master[Id]++ c.AllCard[Id]++ } @@ -357,6 +375,21 @@ func (c *CardMod) MasterCardEx(Id, CardId int) error { return fmt.Errorf("MasterCardEx card type err") } c.AllCard[Id]-- + c.AllCard[Id]-- c.AddCard(CardId) return nil } + +func (c *CardMod) NotifyCard() *msg.ResNotifyCard { + m := &msg.ResNotifyCard{ + Card: GoUtil.MapIntToInt32(c.Cache.Card), + Master: GoUtil.MapIntToInt32(c.Cache.Master), + ExStar: int32(c.Cache.ExStar), + } + c.Cache = Cache{ + Card: make(map[int]int), + Master: make(map[int]int), + ExStar: 0, + } + return m +} diff --git a/src/server/game/mod/champship/Champship.go b/src/server/game/mod/champship/Champship.go index 1ef2fe18..2ea7af7e 100644 --- a/src/server/game/mod/champship/Champship.go +++ b/src/server/game/mod/champship/Champship.go @@ -13,11 +13,14 @@ type ChampshipMod struct { Score int Reward int RankReward bool + PreMax int // 昨日最高档 + Max int // 历史最高档 } func (c *ChampshipMod) InitData() {} func (c *ChampshipMod) ZeroUpdate() { + c.PreMax = c.Reward c.Score = 0 c.Reward = 0 c.RankReward = false @@ -48,6 +51,7 @@ func (c *ChampshipMod) AddScore(Chess []int) { func (c *ChampshipMod) GetReward() []*item.Item { Reward, Items := champshipCfg.GetReward(c.Reward, c.Score) c.Reward = Reward + c.Max = max(c.Max, c.Reward) return Items } @@ -60,3 +64,11 @@ func (c *ChampshipMod) BackData(MyRank int) *msg.ResChampship { Rank: int32(MyRank), } } + +func (c *ChampshipMod) GetH() int { + return c.PreMax +} + +func (c *ChampshipMod) GetN() int { + return c.Max +} diff --git a/src/server/game/mod/dailyTask/DailyFunc.go b/src/server/game/mod/dailyTask/DailyFunc.go index 0978dacf..9fca1124 100644 --- a/src/server/game/mod/dailyTask/DailyFunc.go +++ b/src/server/game/mod/dailyTask/DailyFunc.go @@ -24,6 +24,7 @@ func getTaskReward(Id, AreaId int) []*item.Item { func randJackpot(jackpot map[int]dailyTaskCfg.Jackpot, num int) map[int][]*item.Item { Ids := GoUtil.GetMapKey(jackpot) r := make(map[int][]*item.Item) + t := 0 for { Ids1 := GoUtil.RandSliceNum(Ids, num) sort.Ints(Ids1) @@ -44,6 +45,9 @@ func randJackpot(jackpot map[int]dailyTaskCfg.Jackpot, num int) map[int][]*item. } return r } + if t > 100 { + return r + } } } diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 4b05b7bd..16807204 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -43,6 +43,9 @@ const ( // 锦标赛 HANDLE_TYPE_CHAMPSHIP_GROUP = 301 //锦标赛分组操作 HANDLE_TYPE_CHAMPSHIP_INRANK = 302 //锦标赛入榜操作 + HANDLE_TYPE_CHAMPSHIP_AI = 303 //锦标赛入榜操作 + HANDLE_TYPE_CHAMPSHIP_NOTIFY = 304 //锦标赛排名变动通知 + HANDLE_TYPE_CHAMPSHIP_ZERO = 305 //锦标赛0点更新 //server mod handle SERVER_ZERO_UPDATE = 1000 //zero update ) diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 515d6b11..932be204 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -23631,9 +23631,6 @@ type ReqDecorateAll struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - AreaId int32 `protobuf:"varint,1,opt,name=AreaId,proto3" json:"AreaId,omitempty"` - DecorateId int32 `protobuf:"varint,2,opt,name=DecorateId,proto3" json:"DecorateId,omitempty"` } func (x *ReqDecorateAll) Reset() { @@ -23666,20 +23663,6 @@ func (*ReqDecorateAll) Descriptor() ([]byte, []int) { return file_Gameapi_proto_rawDescGZIP(), []int{401} } -func (x *ReqDecorateAll) GetAreaId() int32 { - if x != nil { - return x.AreaId - } - return 0 -} - -func (x *ReqDecorateAll) GetDecorateId() int32 { - if x != nil { - return x.DecorateId - } - return 0 -} - type ResDecorateAll struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -24017,8 +24000,10 @@ type ResMasterCard struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + MasterId int32 `protobuf:"varint,3,opt,name=MasterId,proto3" json:"MasterId,omitempty"` + CardId int32 `protobuf:"varint,4,opt,name=CardId,proto3" json:"CardId,omitempty"` } func (x *ResMasterCard) Reset() { @@ -24065,6 +24050,20 @@ func (x *ResMasterCard) GetMsg() string { return "" } +func (x *ResMasterCard) GetMasterId() int32 { + if x != nil { + return x.MasterId + } + return 0 +} + +func (x *ResMasterCard) GetCardId() int32 { + if x != nil { + return x.CardId + } + return 0 +} + // 领取卡牌系列收集奖励 type ReqCardCollectReward struct { state protoimpl.MessageState @@ -27195,6 +27194,104 @@ func (x *ResLimitEventProgress) GetProgressReward() map[int32]int32 { return nil } +type ReqLimitEventReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` +} + +func (x *ReqLimitEventReward) Reset() { + *x = ReqLimitEventReward{} + mi := &file_Gameapi_proto_msgTypes[467] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqLimitEventReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqLimitEventReward) ProtoMessage() {} + +func (x *ReqLimitEventReward) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[467] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqLimitEventReward.ProtoReflect.Descriptor instead. +func (*ReqLimitEventReward) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{467} +} + +func (x *ReqLimitEventReward) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +type ResLimitEventReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResLimitEventReward) Reset() { + *x = ResLimitEventReward{} + mi := &file_Gameapi_proto_msgTypes[468] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResLimitEventReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResLimitEventReward) ProtoMessage() {} + +func (x *ResLimitEventReward) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[468] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResLimitEventReward.ProtoReflect.Descriptor instead. +func (*ResLimitEventReward) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{468} +} + +func (x *ResLimitEventReward) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResLimitEventReward) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + type LimitEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -27206,7 +27303,7 @@ type LimitEvent struct { func (x *LimitEvent) Reset() { *x = LimitEvent{} - mi := &file_Gameapi_proto_msgTypes[467] + mi := &file_Gameapi_proto_msgTypes[469] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27218,7 +27315,7 @@ func (x *LimitEvent) String() string { func (*LimitEvent) ProtoMessage() {} func (x *LimitEvent) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[467] + mi := &file_Gameapi_proto_msgTypes[469] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27231,7 +27328,7 @@ func (x *LimitEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use LimitEvent.ProtoReflect.Descriptor instead. func (*LimitEvent) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{467} + return file_Gameapi_proto_rawDescGZIP(), []int{469} } func (x *LimitEvent) GetEndTime() int32 { @@ -27261,7 +27358,7 @@ type LimitEventNotify struct { func (x *LimitEventNotify) Reset() { *x = LimitEventNotify{} - mi := &file_Gameapi_proto_msgTypes[468] + mi := &file_Gameapi_proto_msgTypes[470] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27273,7 +27370,7 @@ func (x *LimitEventNotify) String() string { func (*LimitEventNotify) ProtoMessage() {} func (x *LimitEventNotify) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[468] + mi := &file_Gameapi_proto_msgTypes[470] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27286,7 +27383,7 @@ func (x *LimitEventNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use LimitEventNotify.ProtoReflect.Descriptor instead. func (*LimitEventNotify) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{468} + return file_Gameapi_proto_rawDescGZIP(), []int{470} } func (x *LimitEventNotify) GetId() int32 { @@ -27325,7 +27422,7 @@ type ReqLimitSenceReward struct { func (x *ReqLimitSenceReward) Reset() { *x = ReqLimitSenceReward{} - mi := &file_Gameapi_proto_msgTypes[469] + mi := &file_Gameapi_proto_msgTypes[471] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27337,7 +27434,7 @@ func (x *ReqLimitSenceReward) String() string { func (*ReqLimitSenceReward) ProtoMessage() {} func (x *ReqLimitSenceReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[469] + mi := &file_Gameapi_proto_msgTypes[471] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27350,7 +27447,7 @@ func (x *ReqLimitSenceReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqLimitSenceReward.ProtoReflect.Descriptor instead. func (*ReqLimitSenceReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{469} + return file_Gameapi_proto_rawDescGZIP(), []int{471} } type ResLimitSenceReward struct { @@ -27364,7 +27461,7 @@ type ResLimitSenceReward struct { func (x *ResLimitSenceReward) Reset() { *x = ResLimitSenceReward{} - mi := &file_Gameapi_proto_msgTypes[470] + mi := &file_Gameapi_proto_msgTypes[472] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27376,7 +27473,7 @@ func (x *ResLimitSenceReward) String() string { func (*ResLimitSenceReward) ProtoMessage() {} func (x *ResLimitSenceReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[470] + mi := &file_Gameapi_proto_msgTypes[472] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27389,7 +27486,7 @@ func (x *ResLimitSenceReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResLimitSenceReward.ProtoReflect.Descriptor instead. func (*ResLimitSenceReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{470} + return file_Gameapi_proto_rawDescGZIP(), []int{472} } func (x *ResLimitSenceReward) GetCode() RES_CODE { @@ -27416,7 +27513,7 @@ type ResChessRainReward struct { func (x *ResChessRainReward) Reset() { *x = ResChessRainReward{} - mi := &file_Gameapi_proto_msgTypes[471] + mi := &file_Gameapi_proto_msgTypes[473] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27428,7 +27525,7 @@ func (x *ResChessRainReward) String() string { func (*ResChessRainReward) ProtoMessage() {} func (x *ResChessRainReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[471] + mi := &file_Gameapi_proto_msgTypes[473] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27441,7 +27538,7 @@ func (x *ResChessRainReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChessRainReward.ProtoReflect.Descriptor instead. func (*ResChessRainReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{471} + return file_Gameapi_proto_rawDescGZIP(), []int{473} } func (x *ResChessRainReward) GetChest() int32 { @@ -27451,104 +27548,6 @@ func (x *ResChessRainReward) GetChest() int32 { return 0 } -type ReqLimitEventReward struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` -} - -func (x *ReqLimitEventReward) Reset() { - *x = ReqLimitEventReward{} - mi := &file_Gameapi_proto_msgTypes[472] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReqLimitEventReward) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReqLimitEventReward) ProtoMessage() {} - -func (x *ReqLimitEventReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[472] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReqLimitEventReward.ProtoReflect.Descriptor instead. -func (*ReqLimitEventReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{472} -} - -func (x *ReqLimitEventReward) GetId() int32 { - if x != nil { - return x.Id - } - return 0 -} - -type ResLimitEventReward struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` -} - -func (x *ResLimitEventReward) Reset() { - *x = ResLimitEventReward{} - mi := &file_Gameapi_proto_msgTypes[473] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResLimitEventReward) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResLimitEventReward) ProtoMessage() {} - -func (x *ResLimitEventReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[473] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResLimitEventReward.ProtoReflect.Descriptor instead. -func (*ResLimitEventReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{473} -} - -func (x *ResLimitEventReward) GetCode() RES_CODE { - if x != nil { - return x.Code - } - return RES_CODE_FAIL -} - -func (x *ResLimitEventReward) GetMsg() string { - if x != nil { - return x.Msg - } - return "" -} - // 连技快手奖励 type ReqFastProduceReward struct { state protoimpl.MessageState @@ -27760,6 +27759,7 @@ type ResPlayerSimple struct { Decorate int32 `protobuf:"varint,6,opt,name=Decorate,proto3" json:"Decorate,omitempty"` Login int32 `protobuf:"varint,7,opt,name=login,proto3" json:"login,omitempty"` Loginout int32 `protobuf:"varint,8,opt,name=loginout,proto3" json:"loginout,omitempty"` + Facebook string `protobuf:"bytes,9,opt,name=Facebook,proto3" json:"Facebook,omitempty"` } func (x *ResPlayerSimple) Reset() { @@ -27848,6 +27848,98 @@ func (x *ResPlayerSimple) GetLoginout() int32 { return 0 } +func (x *ResPlayerSimple) GetFacebook() string { + if x != nil { + return x.Facebook + } + return "" +} + +type ResPlayerRank struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` + Face int32 `protobuf:"varint,3,opt,name=Face,proto3" json:"Face,omitempty"` + Avatar int32 `protobuf:"varint,4,opt,name=Avatar,proto3" json:"Avatar,omitempty"` + Level int32 `protobuf:"varint,5,opt,name=Level,proto3" json:"Level,omitempty"` + Score float32 `protobuf:"fixed32,6,opt,name=score,proto3" json:"score,omitempty"` +} + +func (x *ResPlayerRank) Reset() { + *x = ResPlayerRank{} + mi := &file_Gameapi_proto_msgTypes[479] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayerRank) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayerRank) ProtoMessage() {} + +func (x *ResPlayerRank) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[479] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayerRank.ProtoReflect.Descriptor instead. +func (*ResPlayerRank) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{479} +} + +func (x *ResPlayerRank) GetUid() int32 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *ResPlayerRank) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResPlayerRank) GetFace() int32 { + if x != nil { + return x.Face + } + return 0 +} + +func (x *ResPlayerRank) GetAvatar() int32 { + if x != nil { + return x.Avatar + } + return 0 +} + +func (x *ResPlayerRank) GetLevel() int32 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *ResPlayerRank) GetScore() float32 { + if x != nil { + return x.Score + } + return 0 +} + type ResFriendLog struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -27864,7 +27956,7 @@ type ResFriendLog struct { func (x *ResFriendLog) Reset() { *x = ResFriendLog{} - mi := &file_Gameapi_proto_msgTypes[479] + mi := &file_Gameapi_proto_msgTypes[480] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27876,7 +27968,7 @@ func (x *ResFriendLog) String() string { func (*ResFriendLog) ProtoMessage() {} func (x *ResFriendLog) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[479] + mi := &file_Gameapi_proto_msgTypes[480] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27889,7 +27981,7 @@ func (x *ResFriendLog) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendLog.ProtoReflect.Descriptor instead. func (*ResFriendLog) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{479} + return file_Gameapi_proto_rawDescGZIP(), []int{480} } func (x *ResFriendLog) GetUid() int32 { @@ -27951,7 +28043,7 @@ type NotifyFriendCard struct { func (x *NotifyFriendCard) Reset() { *x = NotifyFriendCard{} - mi := &file_Gameapi_proto_msgTypes[480] + mi := &file_Gameapi_proto_msgTypes[481] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27963,7 +28055,7 @@ func (x *NotifyFriendCard) String() string { func (*NotifyFriendCard) ProtoMessage() {} func (x *NotifyFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[480] + mi := &file_Gameapi_proto_msgTypes[481] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27976,7 +28068,7 @@ func (x *NotifyFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyFriendCard.ProtoReflect.Descriptor instead. func (*NotifyFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{480} + return file_Gameapi_proto_rawDescGZIP(), []int{481} } func (x *NotifyFriendCard) GetInfo() *ResFriendCard { @@ -28006,7 +28098,7 @@ type ResFriendCard struct { func (x *ResFriendCard) Reset() { *x = ResFriendCard{} - mi := &file_Gameapi_proto_msgTypes[481] + mi := &file_Gameapi_proto_msgTypes[482] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28018,7 +28110,7 @@ func (x *ResFriendCard) String() string { func (*ResFriendCard) ProtoMessage() {} func (x *ResFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[481] + mi := &file_Gameapi_proto_msgTypes[482] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28031,7 +28123,7 @@ func (x *ResFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendCard.ProtoReflect.Descriptor instead. func (*ResFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{481} + return file_Gameapi_proto_rawDescGZIP(), []int{482} } func (x *ResFriendCard) GetUid() int32 { @@ -28122,7 +28214,7 @@ type ReqKv struct { func (x *ReqKv) Reset() { *x = ReqKv{} - mi := &file_Gameapi_proto_msgTypes[482] + mi := &file_Gameapi_proto_msgTypes[483] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28134,7 +28226,7 @@ func (x *ReqKv) String() string { func (*ReqKv) ProtoMessage() {} func (x *ReqKv) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[482] + mi := &file_Gameapi_proto_msgTypes[483] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28147,7 +28239,7 @@ func (x *ReqKv) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqKv.ProtoReflect.Descriptor instead. func (*ReqKv) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{482} + return file_Gameapi_proto_rawDescGZIP(), []int{483} } func (x *ReqKv) GetKey() int32 { @@ -28174,7 +28266,7 @@ type ResKv struct { func (x *ResKv) Reset() { *x = ResKv{} - mi := &file_Gameapi_proto_msgTypes[483] + mi := &file_Gameapi_proto_msgTypes[484] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28186,7 +28278,7 @@ func (x *ResKv) String() string { func (*ResKv) ProtoMessage() {} func (x *ResKv) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[483] + mi := &file_Gameapi_proto_msgTypes[484] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28199,7 +28291,7 @@ func (x *ResKv) ProtoReflect() protoreflect.Message { // Deprecated: Use ResKv.ProtoReflect.Descriptor instead. func (*ResKv) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{483} + return file_Gameapi_proto_rawDescGZIP(), []int{484} } func (x *ResKv) GetKv() map[int32]string { @@ -28210,6 +28302,42 @@ func (x *ResKv) GetKv() map[int32]string { } // 好友推荐 +type ReqFriendRecommend struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqFriendRecommend) Reset() { + *x = ReqFriendRecommend{} + mi := &file_Gameapi_proto_msgTypes[485] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqFriendRecommend) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqFriendRecommend) ProtoMessage() {} + +func (x *ReqFriendRecommend) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[485] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqFriendRecommend.ProtoReflect.Descriptor instead. +func (*ReqFriendRecommend) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{485} +} + type ResFriendRecommend struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -28220,7 +28348,7 @@ type ResFriendRecommend struct { func (x *ResFriendRecommend) Reset() { *x = ResFriendRecommend{} - mi := &file_Gameapi_proto_msgTypes[484] + mi := &file_Gameapi_proto_msgTypes[486] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28232,7 +28360,7 @@ func (x *ResFriendRecommend) String() string { func (*ResFriendRecommend) ProtoMessage() {} func (x *ResFriendRecommend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[484] + mi := &file_Gameapi_proto_msgTypes[486] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28245,7 +28373,7 @@ func (x *ResFriendRecommend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendRecommend.ProtoReflect.Descriptor instead. func (*ResFriendRecommend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{484} + return file_Gameapi_proto_rawDescGZIP(), []int{486} } func (x *ResFriendRecommend) GetList() []*ResPlayerSimple { @@ -28266,7 +28394,7 @@ type ReqFriendIgnore struct { func (x *ReqFriendIgnore) Reset() { *x = ReqFriendIgnore{} - mi := &file_Gameapi_proto_msgTypes[485] + mi := &file_Gameapi_proto_msgTypes[487] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28278,7 +28406,7 @@ func (x *ReqFriendIgnore) String() string { func (*ReqFriendIgnore) ProtoMessage() {} func (x *ReqFriendIgnore) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[485] + mi := &file_Gameapi_proto_msgTypes[487] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28291,7 +28419,7 @@ func (x *ReqFriendIgnore) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendIgnore.ProtoReflect.Descriptor instead. func (*ReqFriendIgnore) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{485} + return file_Gameapi_proto_rawDescGZIP(), []int{487} } func (x *ReqFriendIgnore) GetUid() int32 { @@ -28312,7 +28440,7 @@ type ResFriendIgnore struct { func (x *ResFriendIgnore) Reset() { *x = ResFriendIgnore{} - mi := &file_Gameapi_proto_msgTypes[486] + mi := &file_Gameapi_proto_msgTypes[488] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28324,7 +28452,7 @@ func (x *ResFriendIgnore) String() string { func (*ResFriendIgnore) ProtoMessage() {} func (x *ResFriendIgnore) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[486] + mi := &file_Gameapi_proto_msgTypes[488] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28337,7 +28465,7 @@ func (x *ResFriendIgnore) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendIgnore.ProtoReflect.Descriptor instead. func (*ResFriendIgnore) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{486} + return file_Gameapi_proto_rawDescGZIP(), []int{488} } func (x *ResFriendIgnore) GetCode() RES_CODE { @@ -28354,6 +28482,43 @@ func (x *ResFriendIgnore) GetMsg() string { return "" } +// 好友基础信息 +type ReqFriendList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqFriendList) Reset() { + *x = ReqFriendList{} + mi := &file_Gameapi_proto_msgTypes[489] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqFriendList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqFriendList) ProtoMessage() {} + +func (x *ReqFriendList) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[489] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqFriendList.ProtoReflect.Descriptor instead. +func (*ReqFriendList) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{489} +} + type ResFriendList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -28364,7 +28529,7 @@ type ResFriendList struct { func (x *ResFriendList) Reset() { *x = ResFriendList{} - mi := &file_Gameapi_proto_msgTypes[487] + mi := &file_Gameapi_proto_msgTypes[490] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28376,7 +28541,7 @@ func (x *ResFriendList) String() string { func (*ResFriendList) ProtoMessage() {} func (x *ResFriendList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[487] + mi := &file_Gameapi_proto_msgTypes[490] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28389,7 +28554,7 @@ func (x *ResFriendList) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendList.ProtoReflect.Descriptor instead. func (*ResFriendList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{487} + return file_Gameapi_proto_rawDescGZIP(), []int{490} } func (x *ResFriendList) GetFriendList() []*ResPlayerSimple { @@ -28407,7 +28572,7 @@ type ReqFriendApply struct { func (x *ReqFriendApply) Reset() { *x = ReqFriendApply{} - mi := &file_Gameapi_proto_msgTypes[488] + mi := &file_Gameapi_proto_msgTypes[491] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28419,7 +28584,7 @@ func (x *ReqFriendApply) String() string { func (*ReqFriendApply) ProtoMessage() {} func (x *ReqFriendApply) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[488] + mi := &file_Gameapi_proto_msgTypes[491] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28432,7 +28597,7 @@ func (x *ReqFriendApply) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendApply.ProtoReflect.Descriptor instead. func (*ReqFriendApply) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{488} + return file_Gameapi_proto_rawDescGZIP(), []int{491} } type ResFriendApply struct { @@ -28445,7 +28610,7 @@ type ResFriendApply struct { func (x *ResFriendApply) Reset() { *x = ResFriendApply{} - mi := &file_Gameapi_proto_msgTypes[489] + mi := &file_Gameapi_proto_msgTypes[492] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28457,7 +28622,7 @@ func (x *ResFriendApply) String() string { func (*ResFriendApply) ProtoMessage() {} func (x *ResFriendApply) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[489] + mi := &file_Gameapi_proto_msgTypes[492] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28470,7 +28635,7 @@ func (x *ResFriendApply) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendApply.ProtoReflect.Descriptor instead. func (*ResFriendApply) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{489} + return file_Gameapi_proto_rawDescGZIP(), []int{492} } func (x *ResFriendApply) GetApplyList() []*ResPlayerSimple { @@ -28488,7 +28653,7 @@ type ReqFriendCardMsg struct { func (x *ReqFriendCardMsg) Reset() { *x = ReqFriendCardMsg{} - mi := &file_Gameapi_proto_msgTypes[490] + mi := &file_Gameapi_proto_msgTypes[493] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28500,7 +28665,7 @@ func (x *ReqFriendCardMsg) String() string { func (*ReqFriendCardMsg) ProtoMessage() {} func (x *ReqFriendCardMsg) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[490] + mi := &file_Gameapi_proto_msgTypes[493] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28513,7 +28678,7 @@ func (x *ReqFriendCardMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendCardMsg.ProtoReflect.Descriptor instead. func (*ReqFriendCardMsg) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{490} + return file_Gameapi_proto_rawDescGZIP(), []int{493} } type ResFriendCardMsg struct { @@ -28526,7 +28691,7 @@ type ResFriendCardMsg struct { func (x *ResFriendCardMsg) Reset() { *x = ResFriendCardMsg{} - mi := &file_Gameapi_proto_msgTypes[491] + mi := &file_Gameapi_proto_msgTypes[494] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28538,7 +28703,7 @@ func (x *ResFriendCardMsg) String() string { func (*ResFriendCardMsg) ProtoMessage() {} func (x *ResFriendCardMsg) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[491] + mi := &file_Gameapi_proto_msgTypes[494] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28551,7 +28716,7 @@ func (x *ResFriendCardMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendCardMsg.ProtoReflect.Descriptor instead. func (*ResFriendCardMsg) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{491} + return file_Gameapi_proto_rawDescGZIP(), []int{494} } func (x *ResFriendCardMsg) GetMsgList() []*ResFriendCard { @@ -28569,7 +28734,7 @@ type ReqFriendTimeLine struct { func (x *ReqFriendTimeLine) Reset() { *x = ReqFriendTimeLine{} - mi := &file_Gameapi_proto_msgTypes[492] + mi := &file_Gameapi_proto_msgTypes[495] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28581,7 +28746,7 @@ func (x *ReqFriendTimeLine) String() string { func (*ReqFriendTimeLine) ProtoMessage() {} func (x *ReqFriendTimeLine) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[492] + mi := &file_Gameapi_proto_msgTypes[495] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28594,7 +28759,7 @@ func (x *ReqFriendTimeLine) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendTimeLine.ProtoReflect.Descriptor instead. func (*ReqFriendTimeLine) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{492} + return file_Gameapi_proto_rawDescGZIP(), []int{495} } type ResFriendTimeLine struct { @@ -28607,7 +28772,7 @@ type ResFriendTimeLine struct { func (x *ResFriendTimeLine) Reset() { *x = ResFriendTimeLine{} - mi := &file_Gameapi_proto_msgTypes[493] + mi := &file_Gameapi_proto_msgTypes[496] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28619,7 +28784,7 @@ func (x *ResFriendTimeLine) String() string { func (*ResFriendTimeLine) ProtoMessage() {} func (x *ResFriendTimeLine) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[493] + mi := &file_Gameapi_proto_msgTypes[496] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28632,7 +28797,7 @@ func (x *ResFriendTimeLine) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendTimeLine.ProtoReflect.Descriptor instead. func (*ResFriendTimeLine) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{493} + return file_Gameapi_proto_rawDescGZIP(), []int{496} } func (x *ResFriendTimeLine) GetLog() []*ResFriendLog { @@ -28653,7 +28818,7 @@ type ResFriendApplyNotify struct { func (x *ResFriendApplyNotify) Reset() { *x = ResFriendApplyNotify{} - mi := &file_Gameapi_proto_msgTypes[494] + mi := &file_Gameapi_proto_msgTypes[497] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28665,7 +28830,7 @@ func (x *ResFriendApplyNotify) String() string { func (*ResFriendApplyNotify) ProtoMessage() {} func (x *ResFriendApplyNotify) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[494] + mi := &file_Gameapi_proto_msgTypes[497] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28678,7 +28843,7 @@ func (x *ResFriendApplyNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendApplyNotify.ProtoReflect.Descriptor instead. func (*ResFriendApplyNotify) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{494} + return file_Gameapi_proto_rawDescGZIP(), []int{497} } func (x *ResFriendApplyNotify) GetPlayer() *ResPlayerSimple { @@ -28706,7 +28871,7 @@ type ReqApplyFriend struct { func (x *ReqApplyFriend) Reset() { *x = ReqApplyFriend{} - mi := &file_Gameapi_proto_msgTypes[495] + mi := &file_Gameapi_proto_msgTypes[498] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28718,7 +28883,7 @@ func (x *ReqApplyFriend) String() string { func (*ReqApplyFriend) ProtoMessage() {} func (x *ReqApplyFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[495] + mi := &file_Gameapi_proto_msgTypes[498] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28731,7 +28896,7 @@ func (x *ReqApplyFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqApplyFriend.ProtoReflect.Descriptor instead. func (*ReqApplyFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{495} + return file_Gameapi_proto_rawDescGZIP(), []int{498} } func (x *ReqApplyFriend) GetUid() int32 { @@ -28752,7 +28917,7 @@ type ResApplyFriend struct { func (x *ResApplyFriend) Reset() { *x = ResApplyFriend{} - mi := &file_Gameapi_proto_msgTypes[496] + mi := &file_Gameapi_proto_msgTypes[499] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28764,7 +28929,7 @@ func (x *ResApplyFriend) String() string { func (*ResApplyFriend) ProtoMessage() {} func (x *ResApplyFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[496] + mi := &file_Gameapi_proto_msgTypes[499] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28777,7 +28942,7 @@ func (x *ResApplyFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResApplyFriend.ProtoReflect.Descriptor instead. func (*ResApplyFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{496} + return file_Gameapi_proto_rawDescGZIP(), []int{499} } func (x *ResApplyFriend) GetCode() RES_CODE { @@ -28805,7 +28970,7 @@ type ReqAgreeFriend struct { func (x *ReqAgreeFriend) Reset() { *x = ReqAgreeFriend{} - mi := &file_Gameapi_proto_msgTypes[497] + mi := &file_Gameapi_proto_msgTypes[500] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28817,7 +28982,7 @@ func (x *ReqAgreeFriend) String() string { func (*ReqAgreeFriend) ProtoMessage() {} func (x *ReqAgreeFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[497] + mi := &file_Gameapi_proto_msgTypes[500] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28830,7 +28995,7 @@ func (x *ReqAgreeFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAgreeFriend.ProtoReflect.Descriptor instead. func (*ReqAgreeFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{497} + return file_Gameapi_proto_rawDescGZIP(), []int{500} } func (x *ReqAgreeFriend) GetUid() int32 { @@ -28845,13 +29010,15 @@ type ResAgreeFriend struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int32 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` + Player *ResPlayerSimple `protobuf:"bytes,4,opt,name=Player,proto3" json:"Player,omitempty"` } func (x *ResAgreeFriend) Reset() { *x = ResAgreeFriend{} - mi := &file_Gameapi_proto_msgTypes[498] + mi := &file_Gameapi_proto_msgTypes[501] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28863,7 +29030,7 @@ func (x *ResAgreeFriend) String() string { func (*ResAgreeFriend) ProtoMessage() {} func (x *ResAgreeFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[498] + mi := &file_Gameapi_proto_msgTypes[501] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28876,7 +29043,7 @@ func (x *ResAgreeFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAgreeFriend.ProtoReflect.Descriptor instead. func (*ResAgreeFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{498} + return file_Gameapi_proto_rawDescGZIP(), []int{501} } func (x *ResAgreeFriend) GetCode() RES_CODE { @@ -28893,6 +29060,20 @@ func (x *ResAgreeFriend) GetMsg() string { return "" } +func (x *ResAgreeFriend) GetUid() int32 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *ResAgreeFriend) GetPlayer() *ResPlayerSimple { + if x != nil { + return x.Player + } + return nil +} + // 拒绝申请 type ReqRefuseFriend struct { state protoimpl.MessageState @@ -28904,7 +29085,7 @@ type ReqRefuseFriend struct { func (x *ReqRefuseFriend) Reset() { *x = ReqRefuseFriend{} - mi := &file_Gameapi_proto_msgTypes[499] + mi := &file_Gameapi_proto_msgTypes[502] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28916,7 +29097,7 @@ func (x *ReqRefuseFriend) String() string { func (*ReqRefuseFriend) ProtoMessage() {} func (x *ReqRefuseFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[499] + mi := &file_Gameapi_proto_msgTypes[502] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28929,7 +29110,7 @@ func (x *ReqRefuseFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefuseFriend.ProtoReflect.Descriptor instead. func (*ReqRefuseFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{499} + return file_Gameapi_proto_rawDescGZIP(), []int{502} } func (x *ReqRefuseFriend) GetUid() int32 { @@ -28946,11 +29127,12 @@ type ResRefuseFriend struct { Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int32 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ResRefuseFriend) Reset() { *x = ResRefuseFriend{} - mi := &file_Gameapi_proto_msgTypes[500] + mi := &file_Gameapi_proto_msgTypes[503] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28962,7 +29144,7 @@ func (x *ResRefuseFriend) String() string { func (*ResRefuseFriend) ProtoMessage() {} func (x *ResRefuseFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[500] + mi := &file_Gameapi_proto_msgTypes[503] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28975,7 +29157,7 @@ func (x *ResRefuseFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefuseFriend.ProtoReflect.Descriptor instead. func (*ResRefuseFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{500} + return file_Gameapi_proto_rawDescGZIP(), []int{503} } func (x *ResRefuseFriend) GetCode() RES_CODE { @@ -28992,6 +29174,13 @@ func (x *ResRefuseFriend) GetMsg() string { return "" } +func (x *ResRefuseFriend) GetUid() int32 { + if x != nil { + return x.Uid + } + return 0 +} + // 删除好友 type ReqDelFriend struct { state protoimpl.MessageState @@ -29003,7 +29192,7 @@ type ReqDelFriend struct { func (x *ReqDelFriend) Reset() { *x = ReqDelFriend{} - mi := &file_Gameapi_proto_msgTypes[501] + mi := &file_Gameapi_proto_msgTypes[504] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29015,7 +29204,7 @@ func (x *ReqDelFriend) String() string { func (*ReqDelFriend) ProtoMessage() {} func (x *ReqDelFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[501] + mi := &file_Gameapi_proto_msgTypes[504] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29028,7 +29217,7 @@ func (x *ReqDelFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDelFriend.ProtoReflect.Descriptor instead. func (*ReqDelFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{501} + return file_Gameapi_proto_rawDescGZIP(), []int{504} } func (x *ReqDelFriend) GetUid() int32 { @@ -29045,11 +29234,12 @@ type ResDelFriend struct { Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int32 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ResDelFriend) Reset() { *x = ResDelFriend{} - mi := &file_Gameapi_proto_msgTypes[502] + mi := &file_Gameapi_proto_msgTypes[505] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29061,7 +29251,7 @@ func (x *ResDelFriend) String() string { func (*ResDelFriend) ProtoMessage() {} func (x *ResDelFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[502] + mi := &file_Gameapi_proto_msgTypes[505] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29074,7 +29264,7 @@ func (x *ResDelFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDelFriend.ProtoReflect.Descriptor instead. func (*ResDelFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{502} + return file_Gameapi_proto_rawDescGZIP(), []int{505} } func (x *ResDelFriend) GetCode() RES_CODE { @@ -29091,6 +29281,13 @@ func (x *ResDelFriend) GetMsg() string { return "" } +func (x *ResDelFriend) GetUid() int32 { + if x != nil { + return x.Uid + } + return 0 +} + // 玩家榜单 type ReqRank struct { state protoimpl.MessageState @@ -29102,7 +29299,7 @@ type ReqRank struct { func (x *ReqRank) Reset() { *x = ReqRank{} - mi := &file_Gameapi_proto_msgTypes[503] + mi := &file_Gameapi_proto_msgTypes[506] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29114,7 +29311,7 @@ func (x *ReqRank) String() string { func (*ReqRank) ProtoMessage() {} func (x *ReqRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[503] + mi := &file_Gameapi_proto_msgTypes[506] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29127,7 +29324,7 @@ func (x *ReqRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRank.ProtoReflect.Descriptor instead. func (*ReqRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{503} + return file_Gameapi_proto_rawDescGZIP(), []int{506} } func (x *ReqRank) GetType() int32 { @@ -29148,7 +29345,7 @@ type ResRank struct { func (x *ResRank) Reset() { *x = ResRank{} - mi := &file_Gameapi_proto_msgTypes[504] + mi := &file_Gameapi_proto_msgTypes[507] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29160,7 +29357,7 @@ func (x *ResRank) String() string { func (*ResRank) ProtoMessage() {} func (x *ResRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[504] + mi := &file_Gameapi_proto_msgTypes[507] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29173,7 +29370,7 @@ func (x *ResRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRank.ProtoReflect.Descriptor instead. func (*ResRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{504} + return file_Gameapi_proto_rawDescGZIP(), []int{507} } func (x *ResRank) GetType() int32 { @@ -29199,7 +29396,7 @@ type ReqMailList struct { func (x *ReqMailList) Reset() { *x = ReqMailList{} - mi := &file_Gameapi_proto_msgTypes[505] + mi := &file_Gameapi_proto_msgTypes[508] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29211,7 +29408,7 @@ func (x *ReqMailList) String() string { func (*ReqMailList) ProtoMessage() {} func (x *ReqMailList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[505] + mi := &file_Gameapi_proto_msgTypes[508] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29224,7 +29421,7 @@ func (x *ReqMailList) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqMailList.ProtoReflect.Descriptor instead. func (*ReqMailList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{505} + return file_Gameapi_proto_rawDescGZIP(), []int{508} } type ResMailList struct { @@ -29237,7 +29434,7 @@ type ResMailList struct { func (x *ResMailList) Reset() { *x = ResMailList{} - mi := &file_Gameapi_proto_msgTypes[506] + mi := &file_Gameapi_proto_msgTypes[509] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29249,7 +29446,7 @@ func (x *ResMailList) String() string { func (*ResMailList) ProtoMessage() {} func (x *ResMailList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[506] + mi := &file_Gameapi_proto_msgTypes[509] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29262,7 +29459,7 @@ func (x *ResMailList) ProtoReflect() protoreflect.Message { // Deprecated: Use ResMailList.ProtoReflect.Descriptor instead. func (*ResMailList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{506} + return file_Gameapi_proto_rawDescGZIP(), []int{509} } func (x *ResMailList) GetMailList() map[int32]*MailInfo { @@ -29286,7 +29483,7 @@ type MailInfo struct { func (x *MailInfo) Reset() { *x = MailInfo{} - mi := &file_Gameapi_proto_msgTypes[507] + mi := &file_Gameapi_proto_msgTypes[510] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29298,7 +29495,7 @@ func (x *MailInfo) String() string { func (*MailInfo) ProtoMessage() {} func (x *MailInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[507] + mi := &file_Gameapi_proto_msgTypes[510] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29311,7 +29508,7 @@ func (x *MailInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use MailInfo.ProtoReflect.Descriptor instead. func (*MailInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{507} + return file_Gameapi_proto_rawDescGZIP(), []int{510} } func (x *MailInfo) GetTitle() string { @@ -29360,7 +29557,7 @@ type ReqReadMail struct { func (x *ReqReadMail) Reset() { *x = ReqReadMail{} - mi := &file_Gameapi_proto_msgTypes[508] + mi := &file_Gameapi_proto_msgTypes[511] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29372,7 +29569,7 @@ func (x *ReqReadMail) String() string { func (*ReqReadMail) ProtoMessage() {} func (x *ReqReadMail) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[508] + mi := &file_Gameapi_proto_msgTypes[511] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29385,7 +29582,7 @@ func (x *ReqReadMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReadMail.ProtoReflect.Descriptor instead. func (*ReqReadMail) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{508} + return file_Gameapi_proto_rawDescGZIP(), []int{511} } func (x *ReqReadMail) GetId() int32 { @@ -29406,7 +29603,7 @@ type ResReadMail struct { func (x *ResReadMail) Reset() { *x = ResReadMail{} - mi := &file_Gameapi_proto_msgTypes[509] + mi := &file_Gameapi_proto_msgTypes[512] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29418,7 +29615,7 @@ func (x *ResReadMail) String() string { func (*ResReadMail) ProtoMessage() {} func (x *ResReadMail) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[509] + mi := &file_Gameapi_proto_msgTypes[512] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29431,7 +29628,7 @@ func (x *ResReadMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ResReadMail.ProtoReflect.Descriptor instead. func (*ResReadMail) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{509} + return file_Gameapi_proto_rawDescGZIP(), []int{512} } func (x *ResReadMail) GetCode() RES_CODE { @@ -29459,7 +29656,7 @@ type ReqGetMailReward struct { func (x *ReqGetMailReward) Reset() { *x = ReqGetMailReward{} - mi := &file_Gameapi_proto_msgTypes[510] + mi := &file_Gameapi_proto_msgTypes[513] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29471,7 +29668,7 @@ func (x *ReqGetMailReward) String() string { func (*ReqGetMailReward) ProtoMessage() {} func (x *ReqGetMailReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[510] + mi := &file_Gameapi_proto_msgTypes[513] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29484,7 +29681,7 @@ func (x *ReqGetMailReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetMailReward.ProtoReflect.Descriptor instead. func (*ReqGetMailReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{510} + return file_Gameapi_proto_rawDescGZIP(), []int{513} } func (x *ReqGetMailReward) GetId() int32 { @@ -29505,7 +29702,7 @@ type ResGetMailReward struct { func (x *ResGetMailReward) Reset() { *x = ResGetMailReward{} - mi := &file_Gameapi_proto_msgTypes[511] + mi := &file_Gameapi_proto_msgTypes[514] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29517,7 +29714,7 @@ func (x *ResGetMailReward) String() string { func (*ResGetMailReward) ProtoMessage() {} func (x *ResGetMailReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[511] + mi := &file_Gameapi_proto_msgTypes[514] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29530,7 +29727,7 @@ func (x *ResGetMailReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetMailReward.ProtoReflect.Descriptor instead. func (*ResGetMailReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{511} + return file_Gameapi_proto_rawDescGZIP(), []int{514} } func (x *ResGetMailReward) GetCode() RES_CODE { @@ -29558,7 +29755,7 @@ type ReqDeleteMail struct { func (x *ReqDeleteMail) Reset() { *x = ReqDeleteMail{} - mi := &file_Gameapi_proto_msgTypes[512] + mi := &file_Gameapi_proto_msgTypes[515] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29570,7 +29767,7 @@ func (x *ReqDeleteMail) String() string { func (*ReqDeleteMail) ProtoMessage() {} func (x *ReqDeleteMail) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[512] + mi := &file_Gameapi_proto_msgTypes[515] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29583,7 +29780,7 @@ func (x *ReqDeleteMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDeleteMail.ProtoReflect.Descriptor instead. func (*ReqDeleteMail) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{512} + return file_Gameapi_proto_rawDescGZIP(), []int{515} } func (x *ReqDeleteMail) GetId() int32 { @@ -29604,7 +29801,7 @@ type ResDeleteMail struct { func (x *ResDeleteMail) Reset() { *x = ResDeleteMail{} - mi := &file_Gameapi_proto_msgTypes[513] + mi := &file_Gameapi_proto_msgTypes[516] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29616,7 +29813,7 @@ func (x *ResDeleteMail) String() string { func (*ResDeleteMail) ProtoMessage() {} func (x *ResDeleteMail) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[513] + mi := &file_Gameapi_proto_msgTypes[516] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29629,7 +29826,7 @@ func (x *ResDeleteMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDeleteMail.ProtoReflect.Descriptor instead. func (*ResDeleteMail) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{513} + return file_Gameapi_proto_rawDescGZIP(), []int{516} } func (x *ResDeleteMail) GetCode() RES_CODE { @@ -29663,7 +29860,7 @@ type ResCharge struct { func (x *ResCharge) Reset() { *x = ResCharge{} - mi := &file_Gameapi_proto_msgTypes[514] + mi := &file_Gameapi_proto_msgTypes[517] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29675,7 +29872,7 @@ func (x *ResCharge) String() string { func (*ResCharge) ProtoMessage() {} func (x *ResCharge) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[514] + mi := &file_Gameapi_proto_msgTypes[517] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29688,7 +29885,7 @@ func (x *ResCharge) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCharge.ProtoReflect.Descriptor instead. func (*ResCharge) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{514} + return file_Gameapi_proto_rawDescGZIP(), []int{517} } func (x *ResCharge) GetCharge() float32 { @@ -29758,7 +29955,7 @@ type ResSpecialShop struct { func (x *ResSpecialShop) Reset() { *x = ResSpecialShop{} - mi := &file_Gameapi_proto_msgTypes[515] + mi := &file_Gameapi_proto_msgTypes[518] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29770,7 +29967,7 @@ func (x *ResSpecialShop) String() string { func (*ResSpecialShop) ProtoMessage() {} func (x *ResSpecialShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[515] + mi := &file_Gameapi_proto_msgTypes[518] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29783,7 +29980,7 @@ func (x *ResSpecialShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSpecialShop.ProtoReflect.Descriptor instead. func (*ResSpecialShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{515} + return file_Gameapi_proto_rawDescGZIP(), []int{518} } func (x *ResSpecialShop) GetGrade() int32 { @@ -29812,7 +30009,7 @@ type ResChessShop struct { func (x *ResChessShop) Reset() { *x = ResChessShop{} - mi := &file_Gameapi_proto_msgTypes[516] + mi := &file_Gameapi_proto_msgTypes[519] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29824,7 +30021,7 @@ func (x *ResChessShop) String() string { func (*ResChessShop) ProtoMessage() {} func (x *ResChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[516] + mi := &file_Gameapi_proto_msgTypes[519] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29837,7 +30034,7 @@ func (x *ResChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChessShop.ProtoReflect.Descriptor instead. func (*ResChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{516} + return file_Gameapi_proto_rawDescGZIP(), []int{519} } func (x *ResChessShop) GetDiamond() int32 { @@ -29869,7 +30066,7 @@ type ReqFreeShop struct { func (x *ReqFreeShop) Reset() { *x = ReqFreeShop{} - mi := &file_Gameapi_proto_msgTypes[517] + mi := &file_Gameapi_proto_msgTypes[520] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29881,7 +30078,7 @@ func (x *ReqFreeShop) String() string { func (*ReqFreeShop) ProtoMessage() {} func (x *ReqFreeShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[517] + mi := &file_Gameapi_proto_msgTypes[520] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29894,7 +30091,7 @@ func (x *ReqFreeShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFreeShop.ProtoReflect.Descriptor instead. func (*ReqFreeShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{517} + return file_Gameapi_proto_rawDescGZIP(), []int{520} } type ResFreeShop struct { @@ -29908,7 +30105,7 @@ type ResFreeShop struct { func (x *ResFreeShop) Reset() { *x = ResFreeShop{} - mi := &file_Gameapi_proto_msgTypes[518] + mi := &file_Gameapi_proto_msgTypes[521] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29920,7 +30117,7 @@ func (x *ResFreeShop) String() string { func (*ResFreeShop) ProtoMessage() {} func (x *ResFreeShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[518] + mi := &file_Gameapi_proto_msgTypes[521] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29933,7 +30130,7 @@ func (x *ResFreeShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFreeShop.ProtoReflect.Descriptor instead. func (*ResFreeShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{518} + return file_Gameapi_proto_rawDescGZIP(), []int{521} } func (x *ResFreeShop) GetCode() RES_CODE { @@ -29961,7 +30158,7 @@ type ReqBuyChessShop struct { func (x *ReqBuyChessShop) Reset() { *x = ReqBuyChessShop{} - mi := &file_Gameapi_proto_msgTypes[519] + mi := &file_Gameapi_proto_msgTypes[522] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29973,7 +30170,7 @@ func (x *ReqBuyChessShop) String() string { func (*ReqBuyChessShop) ProtoMessage() {} func (x *ReqBuyChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[519] + mi := &file_Gameapi_proto_msgTypes[522] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29986,7 +30183,7 @@ func (x *ReqBuyChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqBuyChessShop.ProtoReflect.Descriptor instead. func (*ReqBuyChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{519} + return file_Gameapi_proto_rawDescGZIP(), []int{522} } func (x *ReqBuyChessShop) GetId() int32 { @@ -30007,7 +30204,7 @@ type ResBuyChessShop struct { func (x *ResBuyChessShop) Reset() { *x = ResBuyChessShop{} - mi := &file_Gameapi_proto_msgTypes[520] + mi := &file_Gameapi_proto_msgTypes[523] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30019,7 +30216,7 @@ func (x *ResBuyChessShop) String() string { func (*ResBuyChessShop) ProtoMessage() {} func (x *ResBuyChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[520] + mi := &file_Gameapi_proto_msgTypes[523] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30032,7 +30229,7 @@ func (x *ResBuyChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResBuyChessShop.ProtoReflect.Descriptor instead. func (*ResBuyChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{520} + return file_Gameapi_proto_rawDescGZIP(), []int{523} } func (x *ResBuyChessShop) GetCode() RES_CODE { @@ -30058,7 +30255,7 @@ type ReqRefreshChessShop struct { func (x *ReqRefreshChessShop) Reset() { *x = ReqRefreshChessShop{} - mi := &file_Gameapi_proto_msgTypes[521] + mi := &file_Gameapi_proto_msgTypes[524] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30070,7 +30267,7 @@ func (x *ReqRefreshChessShop) String() string { func (*ReqRefreshChessShop) ProtoMessage() {} func (x *ReqRefreshChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[521] + mi := &file_Gameapi_proto_msgTypes[524] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30083,7 +30280,7 @@ func (x *ReqRefreshChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefreshChessShop.ProtoReflect.Descriptor instead. func (*ReqRefreshChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{521} + return file_Gameapi_proto_rawDescGZIP(), []int{524} } type ResRefreshChessShop struct { @@ -30097,7 +30294,7 @@ type ResRefreshChessShop struct { func (x *ResRefreshChessShop) Reset() { *x = ResRefreshChessShop{} - mi := &file_Gameapi_proto_msgTypes[522] + mi := &file_Gameapi_proto_msgTypes[525] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30109,7 +30306,7 @@ func (x *ResRefreshChessShop) String() string { func (*ResRefreshChessShop) ProtoMessage() {} func (x *ResRefreshChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[522] + mi := &file_Gameapi_proto_msgTypes[525] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30122,7 +30319,7 @@ func (x *ResRefreshChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefreshChessShop.ProtoReflect.Descriptor instead. func (*ResRefreshChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{522} + return file_Gameapi_proto_rawDescGZIP(), []int{525} } func (x *ResRefreshChessShop) GetCode() RES_CODE { @@ -30147,7 +30344,7 @@ type ReqEndless struct { func (x *ReqEndless) Reset() { *x = ReqEndless{} - mi := &file_Gameapi_proto_msgTypes[523] + mi := &file_Gameapi_proto_msgTypes[526] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30159,7 +30356,7 @@ func (x *ReqEndless) String() string { func (*ReqEndless) ProtoMessage() {} func (x *ReqEndless) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[523] + mi := &file_Gameapi_proto_msgTypes[526] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30172,7 +30369,7 @@ func (x *ReqEndless) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqEndless.ProtoReflect.Descriptor instead. func (*ReqEndless) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{523} + return file_Gameapi_proto_rawDescGZIP(), []int{526} } type ResEndless struct { @@ -30186,7 +30383,7 @@ type ResEndless struct { func (x *ResEndless) Reset() { *x = ResEndless{} - mi := &file_Gameapi_proto_msgTypes[524] + mi := &file_Gameapi_proto_msgTypes[527] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30198,7 +30395,7 @@ func (x *ResEndless) String() string { func (*ResEndless) ProtoMessage() {} func (x *ResEndless) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[524] + mi := &file_Gameapi_proto_msgTypes[527] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30211,7 +30408,7 @@ func (x *ResEndless) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndless.ProtoReflect.Descriptor instead. func (*ResEndless) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{524} + return file_Gameapi_proto_rawDescGZIP(), []int{527} } func (x *ResEndless) GetId() int32 { @@ -30240,7 +30437,7 @@ type ResEndlessInfo struct { func (x *ResEndlessInfo) Reset() { *x = ResEndlessInfo{} - mi := &file_Gameapi_proto_msgTypes[525] + mi := &file_Gameapi_proto_msgTypes[528] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30252,7 +30449,7 @@ func (x *ResEndlessInfo) String() string { func (*ResEndlessInfo) ProtoMessage() {} func (x *ResEndlessInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[525] + mi := &file_Gameapi_proto_msgTypes[528] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30265,7 +30462,7 @@ func (x *ResEndlessInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndlessInfo.ProtoReflect.Descriptor instead. func (*ResEndlessInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{525} + return file_Gameapi_proto_rawDescGZIP(), []int{528} } func (x *ResEndlessInfo) GetChargeId() int32 { @@ -30297,7 +30494,7 @@ type ReqEndlessReward struct { func (x *ReqEndlessReward) Reset() { *x = ReqEndlessReward{} - mi := &file_Gameapi_proto_msgTypes[526] + mi := &file_Gameapi_proto_msgTypes[529] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30309,7 +30506,7 @@ func (x *ReqEndlessReward) String() string { func (*ReqEndlessReward) ProtoMessage() {} func (x *ReqEndlessReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[526] + mi := &file_Gameapi_proto_msgTypes[529] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30322,7 +30519,7 @@ func (x *ReqEndlessReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqEndlessReward.ProtoReflect.Descriptor instead. func (*ReqEndlessReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{526} + return file_Gameapi_proto_rawDescGZIP(), []int{529} } type ResEndlessReward struct { @@ -30336,7 +30533,7 @@ type ResEndlessReward struct { func (x *ResEndlessReward) Reset() { *x = ResEndlessReward{} - mi := &file_Gameapi_proto_msgTypes[527] + mi := &file_Gameapi_proto_msgTypes[530] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30348,7 +30545,7 @@ func (x *ResEndlessReward) String() string { func (*ResEndlessReward) ProtoMessage() {} func (x *ResEndlessReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[527] + mi := &file_Gameapi_proto_msgTypes[530] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30361,7 +30558,7 @@ func (x *ResEndlessReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndlessReward.ProtoReflect.Descriptor instead. func (*ResEndlessReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{527} + return file_Gameapi_proto_rawDescGZIP(), []int{530} } func (x *ResEndlessReward) GetCode() RES_CODE { @@ -30391,7 +30588,7 @@ type ResPiggyBank struct { func (x *ResPiggyBank) Reset() { *x = ResPiggyBank{} - mi := &file_Gameapi_proto_msgTypes[528] + mi := &file_Gameapi_proto_msgTypes[531] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30403,7 +30600,7 @@ func (x *ResPiggyBank) String() string { func (*ResPiggyBank) ProtoMessage() {} func (x *ResPiggyBank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[528] + mi := &file_Gameapi_proto_msgTypes[531] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30416,7 +30613,7 @@ func (x *ResPiggyBank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPiggyBank.ProtoReflect.Descriptor instead. func (*ResPiggyBank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{528} + return file_Gameapi_proto_rawDescGZIP(), []int{531} } func (x *ResPiggyBank) GetType() int32 { @@ -30455,7 +30652,7 @@ type ReqPiggyBankReward struct { func (x *ReqPiggyBankReward) Reset() { *x = ReqPiggyBankReward{} - mi := &file_Gameapi_proto_msgTypes[529] + mi := &file_Gameapi_proto_msgTypes[532] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30467,7 +30664,7 @@ func (x *ReqPiggyBankReward) String() string { func (*ReqPiggyBankReward) ProtoMessage() {} func (x *ReqPiggyBankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[529] + mi := &file_Gameapi_proto_msgTypes[532] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30480,7 +30677,7 @@ func (x *ReqPiggyBankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqPiggyBankReward.ProtoReflect.Descriptor instead. func (*ReqPiggyBankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{529} + return file_Gameapi_proto_rawDescGZIP(), []int{532} } type ResPiggyBankReward struct { @@ -30494,7 +30691,7 @@ type ResPiggyBankReward struct { func (x *ResPiggyBankReward) Reset() { *x = ResPiggyBankReward{} - mi := &file_Gameapi_proto_msgTypes[530] + mi := &file_Gameapi_proto_msgTypes[533] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30506,7 +30703,7 @@ func (x *ResPiggyBankReward) String() string { func (*ResPiggyBankReward) ProtoMessage() {} func (x *ResPiggyBankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[530] + mi := &file_Gameapi_proto_msgTypes[533] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30519,7 +30716,7 @@ func (x *ResPiggyBankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPiggyBankReward.ProtoReflect.Descriptor instead. func (*ResPiggyBankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{530} + return file_Gameapi_proto_rawDescGZIP(), []int{533} } func (x *ResPiggyBankReward) GetCode() RES_CODE { @@ -30548,7 +30745,7 @@ type ReqCreateOrderSn struct { func (x *ReqCreateOrderSn) Reset() { *x = ReqCreateOrderSn{} - mi := &file_Gameapi_proto_msgTypes[531] + mi := &file_Gameapi_proto_msgTypes[534] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30560,7 +30757,7 @@ func (x *ReqCreateOrderSn) String() string { func (*ReqCreateOrderSn) ProtoMessage() {} func (x *ReqCreateOrderSn) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[531] + mi := &file_Gameapi_proto_msgTypes[534] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30573,7 +30770,7 @@ func (x *ReqCreateOrderSn) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCreateOrderSn.ProtoReflect.Descriptor instead. func (*ReqCreateOrderSn) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{531} + return file_Gameapi_proto_rawDescGZIP(), []int{534} } func (x *ReqCreateOrderSn) GetChargeId() int32 { @@ -30607,7 +30804,7 @@ type ResCreateOrderSn struct { func (x *ResCreateOrderSn) Reset() { *x = ResCreateOrderSn{} - mi := &file_Gameapi_proto_msgTypes[532] + mi := &file_Gameapi_proto_msgTypes[535] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30619,7 +30816,7 @@ func (x *ResCreateOrderSn) String() string { func (*ResCreateOrderSn) ProtoMessage() {} func (x *ResCreateOrderSn) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[532] + mi := &file_Gameapi_proto_msgTypes[535] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30632,7 +30829,7 @@ func (x *ResCreateOrderSn) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCreateOrderSn.ProtoReflect.Descriptor instead. func (*ResCreateOrderSn) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{532} + return file_Gameapi_proto_rawDescGZIP(), []int{535} } func (x *ResCreateOrderSn) GetOrderSn() string { @@ -30654,7 +30851,7 @@ type ReqShippingOrder struct { func (x *ReqShippingOrder) Reset() { *x = ReqShippingOrder{} - mi := &file_Gameapi_proto_msgTypes[533] + mi := &file_Gameapi_proto_msgTypes[536] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30666,7 +30863,7 @@ func (x *ReqShippingOrder) String() string { func (*ReqShippingOrder) ProtoMessage() {} func (x *ReqShippingOrder) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[533] + mi := &file_Gameapi_proto_msgTypes[536] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30679,7 +30876,7 @@ func (x *ReqShippingOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqShippingOrder.ProtoReflect.Descriptor instead. func (*ReqShippingOrder) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{533} + return file_Gameapi_proto_rawDescGZIP(), []int{536} } func (x *ReqShippingOrder) GetOrderSn() string { @@ -30714,7 +30911,7 @@ type ResShippingOrder struct { func (x *ResShippingOrder) Reset() { *x = ResShippingOrder{} - mi := &file_Gameapi_proto_msgTypes[534] + mi := &file_Gameapi_proto_msgTypes[537] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30726,7 +30923,7 @@ func (x *ResShippingOrder) String() string { func (*ResShippingOrder) ProtoMessage() {} func (x *ResShippingOrder) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[534] + mi := &file_Gameapi_proto_msgTypes[537] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30739,7 +30936,7 @@ func (x *ResShippingOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use ResShippingOrder.ProtoReflect.Descriptor instead. func (*ResShippingOrder) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{534} + return file_Gameapi_proto_rawDescGZIP(), []int{537} } func (x *ResShippingOrder) GetCode() RES_CODE { @@ -30764,7 +30961,7 @@ type ReqChampship struct { func (x *ReqChampship) Reset() { *x = ReqChampship{} - mi := &file_Gameapi_proto_msgTypes[535] + mi := &file_Gameapi_proto_msgTypes[538] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30776,7 +30973,7 @@ func (x *ReqChampship) String() string { func (*ReqChampship) ProtoMessage() {} func (x *ReqChampship) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[535] + mi := &file_Gameapi_proto_msgTypes[538] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30789,7 +30986,7 @@ func (x *ReqChampship) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampship.ProtoReflect.Descriptor instead. func (*ReqChampship) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{535} + return file_Gameapi_proto_rawDescGZIP(), []int{538} } type ResChampship struct { @@ -30807,7 +31004,7 @@ type ResChampship struct { func (x *ResChampship) Reset() { *x = ResChampship{} - mi := &file_Gameapi_proto_msgTypes[536] + mi := &file_Gameapi_proto_msgTypes[539] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30819,7 +31016,7 @@ func (x *ResChampship) String() string { func (*ResChampship) ProtoMessage() {} func (x *ResChampship) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[536] + mi := &file_Gameapi_proto_msgTypes[539] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30832,7 +31029,7 @@ func (x *ResChampship) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampship.ProtoReflect.Descriptor instead. func (*ResChampship) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{536} + return file_Gameapi_proto_rawDescGZIP(), []int{539} } func (x *ResChampship) GetScore() int32 { @@ -30885,7 +31082,7 @@ type ReqChampshipReward struct { func (x *ReqChampshipReward) Reset() { *x = ReqChampshipReward{} - mi := &file_Gameapi_proto_msgTypes[537] + mi := &file_Gameapi_proto_msgTypes[540] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30897,7 +31094,7 @@ func (x *ReqChampshipReward) String() string { func (*ReqChampshipReward) ProtoMessage() {} func (x *ReqChampshipReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[537] + mi := &file_Gameapi_proto_msgTypes[540] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30910,7 +31107,7 @@ func (x *ReqChampshipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipReward.ProtoReflect.Descriptor instead. func (*ReqChampshipReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{537} + return file_Gameapi_proto_rawDescGZIP(), []int{540} } type ResChampshipReward struct { @@ -30924,7 +31121,7 @@ type ResChampshipReward struct { func (x *ResChampshipReward) Reset() { *x = ResChampshipReward{} - mi := &file_Gameapi_proto_msgTypes[538] + mi := &file_Gameapi_proto_msgTypes[541] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30936,7 +31133,7 @@ func (x *ResChampshipReward) String() string { func (*ResChampshipReward) ProtoMessage() {} func (x *ResChampshipReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[538] + mi := &file_Gameapi_proto_msgTypes[541] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30949,7 +31146,7 @@ func (x *ResChampshipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipReward.ProtoReflect.Descriptor instead. func (*ResChampshipReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{538} + return file_Gameapi_proto_rawDescGZIP(), []int{541} } func (x *ResChampshipReward) GetCode() RES_CODE { @@ -30974,7 +31171,7 @@ type ReqChampshipRankReward struct { func (x *ReqChampshipRankReward) Reset() { *x = ReqChampshipRankReward{} - mi := &file_Gameapi_proto_msgTypes[539] + mi := &file_Gameapi_proto_msgTypes[542] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30986,7 +31183,7 @@ func (x *ReqChampshipRankReward) String() string { func (*ReqChampshipRankReward) ProtoMessage() {} func (x *ReqChampshipRankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[539] + mi := &file_Gameapi_proto_msgTypes[542] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30999,7 +31196,7 @@ func (x *ReqChampshipRankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipRankReward.ProtoReflect.Descriptor instead. func (*ReqChampshipRankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{539} + return file_Gameapi_proto_rawDescGZIP(), []int{542} } type ResChampshipRankReward struct { @@ -31013,7 +31210,7 @@ type ResChampshipRankReward struct { func (x *ResChampshipRankReward) Reset() { *x = ResChampshipRankReward{} - mi := &file_Gameapi_proto_msgTypes[540] + mi := &file_Gameapi_proto_msgTypes[543] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31025,7 +31222,7 @@ func (x *ResChampshipRankReward) String() string { func (*ResChampshipRankReward) ProtoMessage() {} func (x *ResChampshipRankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[540] + mi := &file_Gameapi_proto_msgTypes[543] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31038,7 +31235,7 @@ func (x *ResChampshipRankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipRankReward.ProtoReflect.Descriptor instead. func (*ResChampshipRankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{540} + return file_Gameapi_proto_rawDescGZIP(), []int{543} } func (x *ResChampshipRankReward) GetCode() RES_CODE { @@ -31055,17 +31252,213 @@ func (x *ResChampshipRankReward) GetMsg() string { return "" } +type ReqChampshipRank struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqChampshipRank) Reset() { + *x = ReqChampshipRank{} + mi := &file_Gameapi_proto_msgTypes[544] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqChampshipRank) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqChampshipRank) ProtoMessage() {} + +func (x *ReqChampshipRank) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[544] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqChampshipRank.ProtoReflect.Descriptor instead. +func (*ReqChampshipRank) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{544} +} + +type ResChampshipRank struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RankList map[int32]*ResPlayerRank `protobuf:"bytes,1,rep,name=RankList,proto3" json:"RankList,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 榜单数据 + MyRank int32 `protobuf:"varint,2,opt,name=MyRank,proto3" json:"MyRank,omitempty"` // 我的排行 + MyScore float32 `protobuf:"fixed32,3,opt,name=MyScore,proto3" json:"MyScore,omitempty"` //我的积分 +} + +func (x *ResChampshipRank) Reset() { + *x = ResChampshipRank{} + mi := &file_Gameapi_proto_msgTypes[545] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResChampshipRank) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResChampshipRank) ProtoMessage() {} + +func (x *ResChampshipRank) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[545] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResChampshipRank.ProtoReflect.Descriptor instead. +func (*ResChampshipRank) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{545} +} + +func (x *ResChampshipRank) GetRankList() map[int32]*ResPlayerRank { + if x != nil { + return x.RankList + } + return nil +} + +func (x *ResChampshipRank) GetMyRank() int32 { + if x != nil { + return x.MyRank + } + return 0 +} + +func (x *ResChampshipRank) GetMyScore() float32 { + if x != nil { + return x.MyScore + } + return 0 +} + +type ReqChampshipPreRank struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqChampshipPreRank) Reset() { + *x = ReqChampshipPreRank{} + mi := &file_Gameapi_proto_msgTypes[546] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqChampshipPreRank) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqChampshipPreRank) ProtoMessage() {} + +func (x *ReqChampshipPreRank) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[546] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqChampshipPreRank.ProtoReflect.Descriptor instead. +func (*ReqChampshipPreRank) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{546} +} + +type ResChampshipPreRank struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RankList map[int32]*ResPlayerRank `protobuf:"bytes,1,rep,name=RankList,proto3" json:"RankList,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 榜单数据 + MyRank int32 `protobuf:"varint,2,opt,name=MyRank,proto3" json:"MyRank,omitempty"` // 我的排行 + MyScore float32 `protobuf:"fixed32,3,opt,name=MyScore,proto3" json:"MyScore,omitempty"` //我的积分 +} + +func (x *ResChampshipPreRank) Reset() { + *x = ResChampshipPreRank{} + mi := &file_Gameapi_proto_msgTypes[547] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResChampshipPreRank) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResChampshipPreRank) ProtoMessage() {} + +func (x *ResChampshipPreRank) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[547] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResChampshipPreRank.ProtoReflect.Descriptor instead. +func (*ResChampshipPreRank) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{547} +} + +func (x *ResChampshipPreRank) GetRankList() map[int32]*ResPlayerRank { + if x != nil { + return x.RankList + } + return nil +} + +func (x *ResChampshipPreRank) GetMyRank() int32 { + if x != nil { + return x.MyRank + } + return 0 +} + +func (x *ResChampshipPreRank) GetMyScore() float32 { + if x != nil { + return x.MyScore + } + return 0 +} + type ResNotifyCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Card map[int32]int32 `protobuf:"bytes,1,rep,name=Card,proto3" json:"Card,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 卡牌 + Card map[int32]int32 `protobuf:"bytes,1,rep,name=Card,proto3" json:"Card,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 卡牌 + Master map[int32]int32 `protobuf:"bytes,2,rep,name=Master,proto3" json:"Master,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 万能卡牌 + ExStar int32 `protobuf:"varint,3,opt,name=ExStar,proto3" json:"ExStar,omitempty"` // 额外星星 } func (x *ResNotifyCard) Reset() { *x = ResNotifyCard{} - mi := &file_Gameapi_proto_msgTypes[541] + mi := &file_Gameapi_proto_msgTypes[548] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31077,7 +31470,7 @@ func (x *ResNotifyCard) String() string { func (*ResNotifyCard) ProtoMessage() {} func (x *ResNotifyCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[541] + mi := &file_Gameapi_proto_msgTypes[548] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31090,7 +31483,7 @@ func (x *ResNotifyCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResNotifyCard.ProtoReflect.Descriptor instead. func (*ResNotifyCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{541} + return file_Gameapi_proto_rawDescGZIP(), []int{548} } func (x *ResNotifyCard) GetCard() map[int32]int32 { @@ -31100,6 +31493,20 @@ func (x *ResNotifyCard) GetCard() map[int32]int32 { return nil } +func (x *ResNotifyCard) GetMaster() map[int32]int32 { + if x != nil { + return x.Master + } + return nil +} + +func (x *ResNotifyCard) GetExStar() int32 { + if x != nil { + return x.ExStar + } + return 0 +} + var File_Gameapi_proto protoreflect.FileDescriptor var file_Gameapi_proto_rawDesc = []byte{ @@ -34095,742 +34502,803 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x48, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x44, 0x65, 0x63, 0x6f, 0x72, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x49, 0x64, 0x22, 0x4a, - 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, - 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3c, 0x0a, 0x0c, 0x52, 0x65, - 0x71, 0x47, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0x2c, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xff, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, - 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x45, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, - 0x71, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x65, - 0x71, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, - 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, - 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x41, 0x6c, 0x6c, - 0x43, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x52, 0x65, 0x71, 0x55, 0x69, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, - 0x52, 0x65, 0x71, 0x55, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x78, 0x55, 0x69, 0x64, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x45, 0x78, 0x55, 0x69, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, - 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x4d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, - 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, - 0x64, 0x22, 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2c, 0x0a, 0x14, - 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, - 0x73, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21, 0x0a, 0x0f, - 0x52, 0x65, 0x71, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, - 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, - 0x52, 0x65, 0x71, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x44, 0x65, 0x63, 0x6f, 0x72, + 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x63, + 0x6f, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, + 0x73, 0x67, 0x22, 0x3c, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x47, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, + 0x22, 0x2c, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xff, + 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, + 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x43, 0x61, 0x72, 0x64, + 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x78, + 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, 0x53, 0x74, + 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x71, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x65, 0x71, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3c, + 0x0a, 0x07, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x07, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x71, 0x55, 0x69, 0x64, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x71, 0x55, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x45, 0x78, 0x55, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x45, + 0x78, 0x55, 0x69, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x72, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x7d, 0x0a, 0x0d, 0x52, 0x65, 0x73, + 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x37, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x47, - 0x69, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, - 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x41, 0x67, 0x72, - 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, - 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, + 0x03, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x2c, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x43, + 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, + 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x52, - 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4d, 0x0a, - 0x11, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, - 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x37, 0x0a, 0x0b, - 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, - 0x53, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, - 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3b, - 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, - 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x45, + 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, + 0x65, 0x73, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3f, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x41, + 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, + 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, + 0x22, 0x37, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x26, 0x0a, 0x14, - 0x52, 0x65, 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, + 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, + 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, + 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, + 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x11, 0x52, 0x65, 0x73, + 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, + 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x37, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x43, + 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3b, 0x0a, 0x0f, 0x52, 0x65, + 0x71, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x43, 0x61, + 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3f, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, + 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x26, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x41, + 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, + 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, + 0x73, 0x67, 0x22, 0x25, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, + 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, + 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, + 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, - 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4f, 0x0a, - 0x13, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, - 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x27, - 0x0a, 0x15, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x52, 0x65, - 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, - 0x71, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, - 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x20, 0x0a, 0x0e, - 0x52, 0x65, 0x71, 0x47, 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4a, - 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x47, 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x85, 0x01, 0x0a, 0x0c, 0x52, - 0x65, 0x73, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x06, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, - 0x6e, 0x66, 0x6f, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x8e, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x6f, - 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x09, 0x43, - 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, - 0x63, 0x6b, 0x52, 0x09, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x4c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, - 0x6d, 0x22, 0x2e, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, - 0x64, 0x22, 0x8c, 0x03, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x46, 0x0a, 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x57, - 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, - 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x44, 0x61, - 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, - 0x79, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x61, 0x79, 0x45, 0x6e, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x45, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x45, 0x6e, 0x64, 0x1a, 0x52, 0x0a, 0x0f, 0x57, 0x65, 0x65, - 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, - 0x65, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, - 0x0e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x44, 0x61, 0x69, 0x6c, - 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x6d, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x28, 0x0a, - 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, + 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, + 0x73, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x26, + 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x20, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x47, + 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, + 0x73, 0x47, 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x85, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x2e, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, + 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x70, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, + 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, - 0x9a, 0x01, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x33, 0x0a, - 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x7d, 0x0a, 0x0d, - 0x51, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x27, 0x0a, 0x15, 0x52, - 0x65, 0x71, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x44, 0x61, - 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, - 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, - 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x47, 0x65, - 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x09, 0x43, 0x61, 0x72, 0x64, 0x50, + 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x09, + 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x6c, 0x65, 0x22, + 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x2e, 0x0a, + 0x08, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x22, 0x8c, 0x03, + 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x46, + 0x0a, 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, + 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x57, 0x65, 0x65, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x57, 0x65, 0x65, 0x6b, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, + 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, + 0x6b, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, + 0x65, 0x65, 0x6b, 0x45, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x65, + 0x65, 0x6b, 0x45, 0x6e, 0x64, 0x1a, 0x52, 0x0a, 0x0f, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, 0x0e, 0x44, 0x61, 0x69, + 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6d, 0x0a, 0x09, + 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, + 0x65, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x09, + 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x33, 0x0a, 0x08, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x28, + 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x7d, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, + 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x47, 0x65, + 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, - 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, + 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x4d, 0x73, 0x67, 0x22, 0x53, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x20, - 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x46, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, - 0x22, 0x46, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x5b, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x41, - 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x41, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x26, 0x0a, - 0x0c, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, - 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, - 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x41, - 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x4d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, + 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, + 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, - 0xb9, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x12, 0x3a, 0x0a, 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x52, 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, - 0x0b, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x65, - 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0b, - 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x22, 0xb8, 0x01, 0x0a, 0x10, - 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x31, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x31, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, - 0x65, 0x6d, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, - 0x74, 0x65, 0x6d, 0x32, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x33, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x33, 0x12, 0x16, - 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x28, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, - 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x53, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, + 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x61, 0x63, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, + 0x65, 0x74, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x65, + 0x71, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x22, 0x46, 0x0a, 0x0a, + 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x28, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x4d, 0x6f, - 0x6e, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x52, - 0x0a, 0x16, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x22, 0x42, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x41, 0x63, 0x69, 0x74, 0x69, 0x76, 0x65, - 0x12, 0x34, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x22, - 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x22, 0xbd, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x57, 0x0a, 0x13, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xd3, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5b, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, - 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x36, 0x0a, 0x0a, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x43, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x43, 0x64, 0x22, 0x60, - 0x0a, 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x43, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x43, 0x64, - 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x43, - 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x43, 0x68, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, - 0x68, 0x65, 0x73, 0x74, 0x22, 0x25, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, - 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2e, 0x0a, 0x14, - 0x52, 0x65, 0x71, 0x46, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x22, 0x50, 0x0a, 0x14, - 0x52, 0x65, 0x73, 0x46, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x5b, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x41, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x65, 0x74, 0x49, + 0x64, 0x22, 0x36, 0x0a, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0c, 0x52, 0x65, 0x71, + 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, + 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x0d, + 0x52, 0x65, 0x73, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x3a, 0x0a, + 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x76, + 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x57, + 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x4d, 0x6f, 0x6e, + 0x74, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x4d, 0x6f, 0x6e, 0x74, + 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x49, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x76, 0x65, + 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x05, + 0x49, 0x74, 0x65, 0x6d, 0x31, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x05, 0x49, 0x74, 0x65, 0x6d, 0x31, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x32, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x32, + 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x33, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x33, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x22, 0x28, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x53, 0x65, 0x76, 0x65, + 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x16, + 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, + 0x22, 0x28, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, + 0x73, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, - 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x55, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x52, 0x65, - 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x10, 0x0a, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x42, + 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x41, 0x63, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x52, + 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0xbd, 0x01, 0x0a, + 0x0d, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x53, + 0x0a, 0x0e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x1a, 0x57, 0x0a, 0x13, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd3, 0x01, 0x0a, + 0x15, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x5b, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, + 0x41, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x25, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x36, 0x0a, 0x0a, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x43, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x43, 0x64, 0x22, 0x60, 0x0a, 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x43, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x43, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, + 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x12, + 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x68, 0x65, 0x73, 0x74, 0x22, 0x2e, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x46, + 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x46, + 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, + 0x71, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x10, 0x0a, + 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, + 0x54, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xe3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, + 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x6f, + 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x8d, 0x01, 0x0a, 0x0d, + 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, - 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, - 0x6f, 0x75, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x10, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, - 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x45, 0x78, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x45, 0x78, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x05, 0x52, 0x65, 0x71, 0x4b, 0x76, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x67, 0x0a, 0x05, 0x52, 0x65, 0x73, 0x4b, 0x76, 0x12, 0x27, 0x0a, - 0x02, 0x6b, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4b, 0x76, 0x2e, 0x4b, 0x76, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x02, 0x6b, 0x76, 0x1a, 0x35, 0x0a, 0x07, 0x4b, 0x76, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x43, 0x0a, - 0x12, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0c, + 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x10, 0x0a, 0x03, + 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x10, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, + 0x12, 0x2b, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, + 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x78, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x45, 0x78, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x05, 0x52, + 0x65, 0x71, 0x4b, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x67, 0x0a, 0x05, + 0x52, 0x65, 0x73, 0x4b, 0x76, 0x12, 0x27, 0x0a, 0x02, 0x6b, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, + 0x4b, 0x76, 0x2e, 0x4b, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, 0x6b, 0x76, 0x1a, 0x35, + 0x0a, 0x07, 0x4b, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x22, 0x43, 0x0a, 0x12, 0x52, + 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, + 0x73, 0x67, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0x4a, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x52, 0x0a, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, + 0x79, 0x22, 0x49, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x52, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x12, 0x0a, 0x10, + 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x73, 0x67, + 0x22, 0x45, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, + 0x64, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, 0x07, + 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x22, 0x3d, 0x0a, 0x11, + 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6e, + 0x65, 0x12, 0x28, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x03, 0x4c, 0x6f, 0x67, 0x22, 0x5d, 0x0a, 0x14, 0x52, + 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x12, 0x31, 0x0a, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, + 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x06, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x22, 0x0a, 0x0e, 0x52, 0x65, + 0x71, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4a, + 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x0e, 0x52, 0x65, + 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x8f, + 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, + 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x31, 0x0a, + 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x5d, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, + 0x73, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, + 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x55, 0x69, 0x64, 0x22, 0x20, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x44, 0x65, 0x6c, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, + 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, + 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, + 0x65, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x56, + 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x4d, 0x61, 0x69, + 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x69, + 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x4d, + 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x4d, 0x61, + 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, 0x01, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x1d, 0x0a, 0x0b, 0x52, 0x65, + 0x71, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, + 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, + 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6c, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, + 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x4a, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x0a, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, - 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, - 0x6c, 0x79, 0x22, 0x49, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, - 0x70, 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x12, 0x0a, - 0x10, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x73, - 0x67, 0x22, 0x45, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, - 0x72, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, - 0x07, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x22, 0x3d, 0x0a, - 0x11, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, - 0x6e, 0x65, 0x12, 0x28, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x03, 0x4c, 0x6f, 0x67, 0x22, 0x5d, 0x0a, 0x14, - 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x12, 0x31, 0x0a, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, - 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x22, 0x0a, 0x0e, 0x52, - 0x65, 0x71, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, - 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x0e, 0x52, - 0x65, 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, - 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, 0x0a, 0x0f, 0x52, - 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, - 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, - 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x20, 0x0a, - 0x0c, 0x52, 0x65, 0x71, 0x44, 0x65, 0x6c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, - 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, - 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x1d, 0x0a, 0x07, 0x52, 0x65, 0x71, - 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x73, - 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, 0x61, - 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, 0x6e, - 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x56, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x1f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, + 0x22, 0xa1, 0x04, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, + 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x46, 0x69, 0x72, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x46, 0x69, 0x72, + 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, + 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x53, 0x70, 0x65, + 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x53, + 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x40, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, + 0x68, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x43, + 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x43, + 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x31, 0x0a, 0x04, 0x47, 0x69, 0x66, 0x74, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x47, 0x69, 0x66, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x69, 0x66, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x41, 0x64, 0x1a, 0x58, 0x0a, 0x10, 0x53, + 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x53, + 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, + 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, + 0x69, 0x66, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, + 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x58, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, + 0x6f, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x22, 0x0d, 0x0a, 0x0b, + 0x52, 0x65, 0x71, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x47, 0x0a, 0x0b, 0x52, + 0x65, 0x73, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x42, 0x75, 0x79, 0x43, 0x68, + 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x42, 0x75, + 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x4f, 0x0a, 0x13, 0x52, + 0x65, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, + 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0c, 0x0a, 0x0a, + 0x52, 0x65, 0x71, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x0a, 0x52, + 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x45, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x1a, 0x58, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x0d, 0x0a, - 0x0b, 0x52, 0x65, 0x71, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9f, 0x01, 0x0a, - 0x0b, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x08, - 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x69, - 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x08, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x4f, 0x0a, - 0x0d, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, - 0x01, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x54, - 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x22, 0x1d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x69, 0x6c, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x69, 0x6c, 0x12, - 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, - 0x10, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x1f, 0x0a, 0x0d, 0x52, - 0x65, 0x71, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x0d, - 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x26, 0x0a, - 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, - 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0xa1, 0x04, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x43, - 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x46, 0x69, 0x72, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x05, 0x46, 0x69, 0x72, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x53, 0x70, 0x65, - 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, - 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x40, 0x0a, - 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, - 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, - 0x31, 0x0a, 0x04, 0x47, 0x69, 0x66, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, - 0x67, 0x65, 0x2e, 0x47, 0x69, 0x66, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x69, - 0x66, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, - 0x41, 0x64, 0x1a, 0x58, 0x0a, 0x10, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, - 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0e, - 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, - 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x69, 0x66, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x0e, 0x52, - 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x14, 0x0a, - 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, - 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x58, 0x0a, 0x0c, 0x52, 0x65, 0x73, - 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, - 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x65, - 0x73, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x68, 0x65, 0x73, - 0x73, 0x49, 0x64, 0x22, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, - 0x6f, 0x70, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, - 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21, 0x0a, 0x0f, 0x52, - 0x65, 0x71, 0x42, 0x75, 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4b, - 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x42, 0x75, 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, - 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, - 0x65, 0x71, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, - 0x6f, 0x70, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x4d, 0x73, 0x67, 0x22, 0x0c, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, - 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x47, 0x0a, 0x0b, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x45, 0x6e, 0x64, 0x6c, - 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x45, 0x6e, - 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x58, 0x0a, 0x10, 0x45, 0x6e, 0x64, - 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, - 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, - 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, - 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, - 0x67, 0x22, 0x6c, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, - 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, - 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x50, 0x69, 0x67, 0x67, - 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, - 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x2c, 0x0a, 0x10, 0x52, - 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x71, - 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, - 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x61, 0x79, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, - 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0e, 0x0a, - 0x0c, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x22, 0xa2, 0x01, - 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, - 0x6e, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, - 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x43, - 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x43, - 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, - 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x0e, + 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, + 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, + 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x45, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4c, 0x0a, 0x10, + 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x6c, 0x0a, 0x0c, 0x52, 0x65, + 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x50, + 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, + 0x0a, 0x12, 0x52, 0x65, 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x64, + 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x53, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x2c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x53, 0x6e, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, + 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x53, + 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x7f, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x43, - 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x1a, 0x37, - 0x0a, 0x09, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x42, 0x0a, 0x0b, 0x48, 0x41, 0x4e, 0x44, 0x4c, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, - 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, - 0x42, 0x55, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x03, 0x12, - 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x08, 0x52, - 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x2e, - 0x0a, 0x09, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0a, 0x0a, 0x06, 0x45, - 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x41, 0x52, 0x10, - 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x08, - 0x5a, 0x06, 0x2e, 0x2e, 0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, + 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x43, 0x68, + 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x52, + 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x52, + 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, + 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, + 0x67, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, + 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, + 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, + 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, + 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, + 0x61, 0x6e, 0x6b, 0x22, 0xe0, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, + 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x44, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, + 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, + 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xe6, 0x01, + 0x0a, 0x13, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, + 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x47, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, + 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, + 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f, 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x2e, + 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x3b, 0x0a, 0x06, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, + 0x53, 0x74, 0x61, 0x72, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, + 0x0b, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x42, 0x0a, 0x0b, 0x48, 0x41, 0x4e, 0x44, + 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, + 0x03, 0x42, 0x55, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x03, + 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x08, + 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, + 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0a, 0x0a, 0x06, + 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x41, 0x52, + 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x42, + 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -34846,7 +35314,7 @@ func file_Gameapi_proto_rawDescGZIP() []byte { } var file_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 606) +var file_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 616) var file_Gameapi_proto_goTypes = []any{ (HANDLE_TYPE)(0), // 0: tutorial.HANDLE_TYPE (RES_CODE)(0), // 1: tutorial.RES_CODE @@ -35319,212 +35787,222 @@ var file_Gameapi_proto_goTypes = []any{ (*ReqLimitEvent)(nil), // 468: tutorial.ReqLimitEvent (*ResLimitEvent)(nil), // 469: tutorial.ResLimitEvent (*ResLimitEventProgress)(nil), // 470: tutorial.ResLimitEventProgress - (*LimitEvent)(nil), // 471: tutorial.LimitEvent - (*LimitEventNotify)(nil), // 472: tutorial.LimitEventNotify - (*ReqLimitSenceReward)(nil), // 473: tutorial.ReqLimitSenceReward - (*ResLimitSenceReward)(nil), // 474: tutorial.ResLimitSenceReward - (*ResChessRainReward)(nil), // 475: tutorial.ResChessRainReward - (*ReqLimitEventReward)(nil), // 476: tutorial.ReqLimitEventReward - (*ResLimitEventReward)(nil), // 477: tutorial.ResLimitEventReward + (*ReqLimitEventReward)(nil), // 471: tutorial.ReqLimitEventReward + (*ResLimitEventReward)(nil), // 472: tutorial.ResLimitEventReward + (*LimitEvent)(nil), // 473: tutorial.LimitEvent + (*LimitEventNotify)(nil), // 474: tutorial.LimitEventNotify + (*ReqLimitSenceReward)(nil), // 475: tutorial.ReqLimitSenceReward + (*ResLimitSenceReward)(nil), // 476: tutorial.ResLimitSenceReward + (*ResChessRainReward)(nil), // 477: tutorial.ResChessRainReward (*ReqFastProduceReward)(nil), // 478: tutorial.ReqFastProduceReward (*ResFastProduceReward)(nil), // 479: tutorial.ResFastProduceReward (*ReqSearchPlayer)(nil), // 480: tutorial.ReqSearchPlayer (*ResSearchPlayer)(nil), // 481: tutorial.ResSearchPlayer (*ResPlayerSimple)(nil), // 482: tutorial.ResPlayerSimple - (*ResFriendLog)(nil), // 483: tutorial.ResFriendLog - (*NotifyFriendCard)(nil), // 484: tutorial.NotifyFriendCard - (*ResFriendCard)(nil), // 485: tutorial.ResFriendCard - (*ReqKv)(nil), // 486: tutorial.ReqKv - (*ResKv)(nil), // 487: tutorial.ResKv - (*ResFriendRecommend)(nil), // 488: tutorial.ResFriendRecommend - (*ReqFriendIgnore)(nil), // 489: tutorial.ReqFriendIgnore - (*ResFriendIgnore)(nil), // 490: tutorial.ResFriendIgnore - (*ResFriendList)(nil), // 491: tutorial.ResFriendList - (*ReqFriendApply)(nil), // 492: tutorial.ReqFriendApply - (*ResFriendApply)(nil), // 493: tutorial.ResFriendApply - (*ReqFriendCardMsg)(nil), // 494: tutorial.ReqFriendCardMsg - (*ResFriendCardMsg)(nil), // 495: tutorial.ResFriendCardMsg - (*ReqFriendTimeLine)(nil), // 496: tutorial.ReqFriendTimeLine - (*ResFriendTimeLine)(nil), // 497: tutorial.ResFriendTimeLine - (*ResFriendApplyNotify)(nil), // 498: tutorial.ResFriendApplyNotify - (*ReqApplyFriend)(nil), // 499: tutorial.ReqApplyFriend - (*ResApplyFriend)(nil), // 500: tutorial.ResApplyFriend - (*ReqAgreeFriend)(nil), // 501: tutorial.ReqAgreeFriend - (*ResAgreeFriend)(nil), // 502: tutorial.ResAgreeFriend - (*ReqRefuseFriend)(nil), // 503: tutorial.ReqRefuseFriend - (*ResRefuseFriend)(nil), // 504: tutorial.ResRefuseFriend - (*ReqDelFriend)(nil), // 505: tutorial.ReqDelFriend - (*ResDelFriend)(nil), // 506: tutorial.ResDelFriend - (*ReqRank)(nil), // 507: tutorial.ReqRank - (*ResRank)(nil), // 508: tutorial.ResRank - (*ReqMailList)(nil), // 509: tutorial.ReqMailList - (*ResMailList)(nil), // 510: tutorial.ResMailList - (*MailInfo)(nil), // 511: tutorial.MailInfo - (*ReqReadMail)(nil), // 512: tutorial.ReqReadMail - (*ResReadMail)(nil), // 513: tutorial.ResReadMail - (*ReqGetMailReward)(nil), // 514: tutorial.ReqGetMailReward - (*ResGetMailReward)(nil), // 515: tutorial.ResGetMailReward - (*ReqDeleteMail)(nil), // 516: tutorial.ReqDeleteMail - (*ResDeleteMail)(nil), // 517: tutorial.ResDeleteMail - (*ResCharge)(nil), // 518: tutorial.ResCharge - (*ResSpecialShop)(nil), // 519: tutorial.ResSpecialShop - (*ResChessShop)(nil), // 520: tutorial.ResChessShop - (*ReqFreeShop)(nil), // 521: tutorial.ReqFreeShop - (*ResFreeShop)(nil), // 522: tutorial.ResFreeShop - (*ReqBuyChessShop)(nil), // 523: tutorial.ReqBuyChessShop - (*ResBuyChessShop)(nil), // 524: tutorial.ResBuyChessShop - (*ReqRefreshChessShop)(nil), // 525: tutorial.ReqRefreshChessShop - (*ResRefreshChessShop)(nil), // 526: tutorial.ResRefreshChessShop - (*ReqEndless)(nil), // 527: tutorial.ReqEndless - (*ResEndless)(nil), // 528: tutorial.ResEndless - (*ResEndlessInfo)(nil), // 529: tutorial.ResEndlessInfo - (*ReqEndlessReward)(nil), // 530: tutorial.ReqEndlessReward - (*ResEndlessReward)(nil), // 531: tutorial.ResEndlessReward - (*ResPiggyBank)(nil), // 532: tutorial.ResPiggyBank - (*ReqPiggyBankReward)(nil), // 533: tutorial.ReqPiggyBankReward - (*ResPiggyBankReward)(nil), // 534: tutorial.ResPiggyBankReward - (*ReqCreateOrderSn)(nil), // 535: tutorial.ReqCreateOrderSn - (*ResCreateOrderSn)(nil), // 536: tutorial.ResCreateOrderSn - (*ReqShippingOrder)(nil), // 537: tutorial.ReqShippingOrder - (*ResShippingOrder)(nil), // 538: tutorial.ResShippingOrder - (*ReqChampship)(nil), // 539: tutorial.ReqChampship - (*ResChampship)(nil), // 540: tutorial.ResChampship - (*ReqChampshipReward)(nil), // 541: tutorial.ReqChampshipReward - (*ResChampshipReward)(nil), // 542: tutorial.ResChampshipReward - (*ReqChampshipRankReward)(nil), // 543: tutorial.ReqChampshipRankReward - (*ResChampshipRankReward)(nil), // 544: tutorial.ResChampshipRankReward - (*ResNotifyCard)(nil), // 545: tutorial.ResNotifyCard - nil, // 546: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 547: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry - nil, // 548: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry - nil, // 549: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry - nil, // 550: tutorial.ResPlayerPackData.MPackDataEntry - nil, // 551: tutorial.UpdatePlayerPackData.MPackDataEntry - nil, // 552: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 553: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 554: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 555: tutorial.ReqChessEx.MChessDataEntry - nil, // 556: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 557: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 558: tutorial.ResPlayerGiftData.MGiftDataEntry - nil, // 559: tutorial.UpdatePlayerGiftData.MGiftDataEntry - nil, // 560: tutorial.ResPlayerOrderData.MOrderDataEntry - nil, // 561: tutorial.UpdatePlayerOrderData.MOrderDataEntry - nil, // 562: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 563: tutorial.UpdateChessColorData.MChessColorDataEntry - nil, // 564: tutorial.ResEmitMergeMap.MEmitMergeDataEntry - nil, // 565: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry - nil, // 566: tutorial.ResEmitCountMap.MEmitCountDataEntry - nil, // 567: tutorial.UpdateEmitCountMap.MEmitCountDataEntry - nil, // 568: tutorial.ResEmitCDStartData.MEmitCDDataEntry - nil, // 569: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry - nil, // 570: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry - nil, // 571: tutorial.ResDecorateData.MDecorateDataEntry - nil, // 572: tutorial.UpdateDecorateData.MDecorateDataEntry - nil, // 573: tutorial.ResShopData.MShopTimeBuyDataEntry - nil, // 574: tutorial.ResShopData.MShopSaleBuyDataEntry - nil, // 575: tutorial.ResShopData.MPackBuyDataEntry - nil, // 576: tutorial.ResShopData.MSpecialOfferBuyDataEntry - nil, // 577: tutorial.ResShopData.MUISpecialOfferBuyDataEntry - nil, // 578: tutorial.ResShopData.MFreePackBuyDataEntry - nil, // 579: tutorial.ResShopData.MDiamondFirstBuyDataEntry - nil, // 580: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry - nil, // 581: tutorial.ResShopBuy.MShopTimeBuyDataEntry - nil, // 582: tutorial.ReqRenewItemBuyCnt.MShopDataEntry - nil, // 583: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry - nil, // 584: tutorial.ResKeyValueData.KeyValuesEntry - nil, // 585: tutorial.UpdateKeyValueData.KeyValuesEntry - nil, // 586: tutorial.ResAdPackData.PackDataEntry - nil, // 587: tutorial.NotifyAdPackData.PackDataEntry - nil, // 588: tutorial.ResWatchAdPack.PackDataEntry - nil, // 589: tutorial.ResPetHomeData.SelectDecorateMapEntry - nil, // 590: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry - nil, // 591: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry - nil, // 592: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry - nil, // 593: tutorial.ResShiftVisitPet.SelectDecorateMapEntry - nil, // 594: tutorial.UseItemRequest.AttrsEntry - nil, // 595: tutorial.UseItemResponse.AttrsEntry - nil, // 596: tutorial.ResCardInfo.AllCardEntry - nil, // 597: tutorial.ResGuildInfo.RewardEntry - nil, // 598: tutorial.ResDailyTask.WeekRewardEntry - nil, // 599: tutorial.ResDailyTask.DailyTaskEntry - nil, // 600: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 601: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 602: tutorial.ResKv.KvEntry - nil, // 603: tutorial.ResRank.RankListEntry - nil, // 604: tutorial.ResMailList.MailListEntry - nil, // 605: tutorial.ResCharge.SpecialShopEntry - nil, // 606: tutorial.ResCharge.ChessShopEntry - nil, // 607: tutorial.ResCharge.GiftEntry - nil, // 608: tutorial.ResEndless.EndlessListEntry - nil, // 609: tutorial.ResNotifyCard.CardEntry + (*ResPlayerRank)(nil), // 483: tutorial.ResPlayerRank + (*ResFriendLog)(nil), // 484: tutorial.ResFriendLog + (*NotifyFriendCard)(nil), // 485: tutorial.NotifyFriendCard + (*ResFriendCard)(nil), // 486: tutorial.ResFriendCard + (*ReqKv)(nil), // 487: tutorial.ReqKv + (*ResKv)(nil), // 488: tutorial.ResKv + (*ReqFriendRecommend)(nil), // 489: tutorial.ReqFriendRecommend + (*ResFriendRecommend)(nil), // 490: tutorial.ResFriendRecommend + (*ReqFriendIgnore)(nil), // 491: tutorial.ReqFriendIgnore + (*ResFriendIgnore)(nil), // 492: tutorial.ResFriendIgnore + (*ReqFriendList)(nil), // 493: tutorial.ReqFriendList + (*ResFriendList)(nil), // 494: tutorial.ResFriendList + (*ReqFriendApply)(nil), // 495: tutorial.ReqFriendApply + (*ResFriendApply)(nil), // 496: tutorial.ResFriendApply + (*ReqFriendCardMsg)(nil), // 497: tutorial.ReqFriendCardMsg + (*ResFriendCardMsg)(nil), // 498: tutorial.ResFriendCardMsg + (*ReqFriendTimeLine)(nil), // 499: tutorial.ReqFriendTimeLine + (*ResFriendTimeLine)(nil), // 500: tutorial.ResFriendTimeLine + (*ResFriendApplyNotify)(nil), // 501: tutorial.ResFriendApplyNotify + (*ReqApplyFriend)(nil), // 502: tutorial.ReqApplyFriend + (*ResApplyFriend)(nil), // 503: tutorial.ResApplyFriend + (*ReqAgreeFriend)(nil), // 504: tutorial.ReqAgreeFriend + (*ResAgreeFriend)(nil), // 505: tutorial.ResAgreeFriend + (*ReqRefuseFriend)(nil), // 506: tutorial.ReqRefuseFriend + (*ResRefuseFriend)(nil), // 507: tutorial.ResRefuseFriend + (*ReqDelFriend)(nil), // 508: tutorial.ReqDelFriend + (*ResDelFriend)(nil), // 509: tutorial.ResDelFriend + (*ReqRank)(nil), // 510: tutorial.ReqRank + (*ResRank)(nil), // 511: tutorial.ResRank + (*ReqMailList)(nil), // 512: tutorial.ReqMailList + (*ResMailList)(nil), // 513: tutorial.ResMailList + (*MailInfo)(nil), // 514: tutorial.MailInfo + (*ReqReadMail)(nil), // 515: tutorial.ReqReadMail + (*ResReadMail)(nil), // 516: tutorial.ResReadMail + (*ReqGetMailReward)(nil), // 517: tutorial.ReqGetMailReward + (*ResGetMailReward)(nil), // 518: tutorial.ResGetMailReward + (*ReqDeleteMail)(nil), // 519: tutorial.ReqDeleteMail + (*ResDeleteMail)(nil), // 520: tutorial.ResDeleteMail + (*ResCharge)(nil), // 521: tutorial.ResCharge + (*ResSpecialShop)(nil), // 522: tutorial.ResSpecialShop + (*ResChessShop)(nil), // 523: tutorial.ResChessShop + (*ReqFreeShop)(nil), // 524: tutorial.ReqFreeShop + (*ResFreeShop)(nil), // 525: tutorial.ResFreeShop + (*ReqBuyChessShop)(nil), // 526: tutorial.ReqBuyChessShop + (*ResBuyChessShop)(nil), // 527: tutorial.ResBuyChessShop + (*ReqRefreshChessShop)(nil), // 528: tutorial.ReqRefreshChessShop + (*ResRefreshChessShop)(nil), // 529: tutorial.ResRefreshChessShop + (*ReqEndless)(nil), // 530: tutorial.ReqEndless + (*ResEndless)(nil), // 531: tutorial.ResEndless + (*ResEndlessInfo)(nil), // 532: tutorial.ResEndlessInfo + (*ReqEndlessReward)(nil), // 533: tutorial.ReqEndlessReward + (*ResEndlessReward)(nil), // 534: tutorial.ResEndlessReward + (*ResPiggyBank)(nil), // 535: tutorial.ResPiggyBank + (*ReqPiggyBankReward)(nil), // 536: tutorial.ReqPiggyBankReward + (*ResPiggyBankReward)(nil), // 537: tutorial.ResPiggyBankReward + (*ReqCreateOrderSn)(nil), // 538: tutorial.ReqCreateOrderSn + (*ResCreateOrderSn)(nil), // 539: tutorial.ResCreateOrderSn + (*ReqShippingOrder)(nil), // 540: tutorial.ReqShippingOrder + (*ResShippingOrder)(nil), // 541: tutorial.ResShippingOrder + (*ReqChampship)(nil), // 542: tutorial.ReqChampship + (*ResChampship)(nil), // 543: tutorial.ResChampship + (*ReqChampshipReward)(nil), // 544: tutorial.ReqChampshipReward + (*ResChampshipReward)(nil), // 545: tutorial.ResChampshipReward + (*ReqChampshipRankReward)(nil), // 546: tutorial.ReqChampshipRankReward + (*ResChampshipRankReward)(nil), // 547: tutorial.ResChampshipRankReward + (*ReqChampshipRank)(nil), // 548: tutorial.ReqChampshipRank + (*ResChampshipRank)(nil), // 549: tutorial.ResChampshipRank + (*ReqChampshipPreRank)(nil), // 550: tutorial.ReqChampshipPreRank + (*ResChampshipPreRank)(nil), // 551: tutorial.ResChampshipPreRank + (*ResNotifyCard)(nil), // 552: tutorial.ResNotifyCard + nil, // 553: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 554: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry + nil, // 555: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry + nil, // 556: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry + nil, // 557: tutorial.ResPlayerPackData.MPackDataEntry + nil, // 558: tutorial.UpdatePlayerPackData.MPackDataEntry + nil, // 559: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 560: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 561: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 562: tutorial.ReqChessEx.MChessDataEntry + nil, // 563: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 564: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 565: tutorial.ResPlayerGiftData.MGiftDataEntry + nil, // 566: tutorial.UpdatePlayerGiftData.MGiftDataEntry + nil, // 567: tutorial.ResPlayerOrderData.MOrderDataEntry + nil, // 568: tutorial.UpdatePlayerOrderData.MOrderDataEntry + nil, // 569: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 570: tutorial.UpdateChessColorData.MChessColorDataEntry + nil, // 571: tutorial.ResEmitMergeMap.MEmitMergeDataEntry + nil, // 572: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry + nil, // 573: tutorial.ResEmitCountMap.MEmitCountDataEntry + nil, // 574: tutorial.UpdateEmitCountMap.MEmitCountDataEntry + nil, // 575: tutorial.ResEmitCDStartData.MEmitCDDataEntry + nil, // 576: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry + nil, // 577: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry + nil, // 578: tutorial.ResDecorateData.MDecorateDataEntry + nil, // 579: tutorial.UpdateDecorateData.MDecorateDataEntry + nil, // 580: tutorial.ResShopData.MShopTimeBuyDataEntry + nil, // 581: tutorial.ResShopData.MShopSaleBuyDataEntry + nil, // 582: tutorial.ResShopData.MPackBuyDataEntry + nil, // 583: tutorial.ResShopData.MSpecialOfferBuyDataEntry + nil, // 584: tutorial.ResShopData.MUISpecialOfferBuyDataEntry + nil, // 585: tutorial.ResShopData.MFreePackBuyDataEntry + nil, // 586: tutorial.ResShopData.MDiamondFirstBuyDataEntry + nil, // 587: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry + nil, // 588: tutorial.ResShopBuy.MShopTimeBuyDataEntry + nil, // 589: tutorial.ReqRenewItemBuyCnt.MShopDataEntry + nil, // 590: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry + nil, // 591: tutorial.ResKeyValueData.KeyValuesEntry + nil, // 592: tutorial.UpdateKeyValueData.KeyValuesEntry + nil, // 593: tutorial.ResAdPackData.PackDataEntry + nil, // 594: tutorial.NotifyAdPackData.PackDataEntry + nil, // 595: tutorial.ResWatchAdPack.PackDataEntry + nil, // 596: tutorial.ResPetHomeData.SelectDecorateMapEntry + nil, // 597: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry + nil, // 598: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry + nil, // 599: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry + nil, // 600: tutorial.ResShiftVisitPet.SelectDecorateMapEntry + nil, // 601: tutorial.UseItemRequest.AttrsEntry + nil, // 602: tutorial.UseItemResponse.AttrsEntry + nil, // 603: tutorial.ResCardInfo.AllCardEntry + nil, // 604: tutorial.ResGuildInfo.RewardEntry + nil, // 605: tutorial.ResDailyTask.WeekRewardEntry + nil, // 606: tutorial.ResDailyTask.DailyTaskEntry + nil, // 607: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 608: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 609: tutorial.ResKv.KvEntry + nil, // 610: tutorial.ResRank.RankListEntry + nil, // 611: tutorial.ResMailList.MailListEntry + nil, // 612: tutorial.ResCharge.SpecialShopEntry + nil, // 613: tutorial.ResCharge.ChessShopEntry + nil, // 614: tutorial.ResCharge.GiftEntry + nil, // 615: tutorial.ResEndless.EndlessListEntry + nil, // 616: tutorial.ResChampshipRank.RankListEntry + nil, // 617: tutorial.ResChampshipPreRank.RankListEntry + nil, // 618: tutorial.ResNotifyCard.CardEntry + nil, // 619: tutorial.ResNotifyCard.MasterEntry } var file_Gameapi_proto_depIdxs = []int32{ - 546, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 547, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry - 548, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry - 549, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry - 550, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry - 551, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry - 552, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 553, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 554, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry + 555, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry + 556, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry + 557, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry + 558, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry + 559, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 37, // 7: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 0, // 8: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 553, // 9: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 560, // 9: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 30, // 10: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 1, // 11: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 554, // 12: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 561, // 12: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 1, // 13: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE - 555, // 14: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 562, // 14: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 1, // 15: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE 38, // 16: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 556, // 17: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 563, // 17: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 1, // 18: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 557, // 19: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 564, // 19: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 1, // 20: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 1, // 21: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 558, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry - 559, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry - 560, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry - 561, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry - 562, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry - 563, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry - 564, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry - 565, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry - 566, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry - 567, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry - 568, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry - 569, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry - 570, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry - 571, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry - 572, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry - 573, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry - 574, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry - 575, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry - 576, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry - 577, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry - 578, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry - 579, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry - 580, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry - 581, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry - 582, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry - 583, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry + 565, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry + 566, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry + 567, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry + 568, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry + 569, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 570, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry + 571, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry + 572, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry + 573, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry + 574, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry + 575, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry + 576, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry + 577, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry + 578, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry + 579, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry + 580, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry + 581, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry + 582, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry + 583, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry + 584, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry + 585, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry + 586, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry + 587, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry + 588, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry + 589, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry + 590, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry 89, // 48: tutorial.ResBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 89, // 49: tutorial.NotifyNewBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 99, // 50: tutorial.NotifyLimitedTimeActiveData.mActiveList:type_name -> tutorial.LimitedTimeActiveStruct 100, // 51: tutorial.NotifyLimitedTimeActiveEnd.mActiveList:type_name -> tutorial.LimitedTimeEndStruct 154, // 52: tutorial.CategoryIllustratedData.Items:type_name -> tutorial.SingleIllustratedItem 155, // 53: tutorial.ResIllustratedInfo.Datas:type_name -> tutorial.CategoryIllustratedData - 584, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry - 585, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry + 591, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry + 592, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry 203, // 56: tutorial.ResChampshipData.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 57: tutorial.NotifyNewChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 58: tutorial.NotifyUpdateChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 59: tutorial.ResChampshipAddScore.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 60: tutorial.ResChampshipAddTime.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 217, // 61: tutorial.ResPlayerPayData.PlayerPayData:type_name -> tutorial.PlayerPayItem - 586, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry - 587, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry - 588, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry + 593, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry + 594, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry + 595, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry 262, // 65: tutorial.ResFriendData.FriendInfos:type_name -> tutorial.FriendInfo 262, // 66: tutorial.AddFriendData.Finfo:type_name -> tutorial.FriendInfo 262, // 67: tutorial.ResWillPlayerDetail.PlayerInfos:type_name -> tutorial.FriendInfo @@ -35572,21 +36050,21 @@ var file_Gameapi_proto_depIdxs = []int32{ 350, // 109: tutorial.ResFriendEventData.MFriendEventData:type_name -> tutorial.FriendEventData 350, // 110: tutorial.NotifyNewFriendEvent.NewEvent:type_name -> tutorial.FriendEventData 257, // 111: tutorial.PetHomeInterActST.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 589, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry - 590, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry - 591, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry + 596, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry + 597, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry + 598, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry 257, // 115: tutorial.ResOpenOtherPetHome.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 592, // 116: tutorial.ResOpenOtherPetHome.SelectDecorateMap:type_name -> tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry + 599, // 116: tutorial.ResOpenOtherPetHome.SelectDecorateMap:type_name -> tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry 358, // 117: tutorial.ResPetHomeInterActST.mPetHomeInterActSTs:type_name -> tutorial.PetHomeInterActST 257, // 118: tutorial.ResShiftVisitPet.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 593, // 119: tutorial.ResShiftVisitPet.SelectDecorateMap:type_name -> tutorial.ResShiftVisitPet.SelectDecorateMapEntry + 600, // 119: tutorial.ResShiftVisitPet.SelectDecorateMap:type_name -> tutorial.ResShiftVisitPet.SelectDecorateMapEntry 381, // 120: tutorial.UseItemRequest.items:type_name -> tutorial.Item 380, // 121: tutorial.UseItemRequest.price:type_name -> tutorial.IntPack - 594, // 122: tutorial.UseItemRequest.attrs:type_name -> tutorial.UseItemRequest.AttrsEntry + 601, // 122: tutorial.UseItemRequest.attrs:type_name -> tutorial.UseItemRequest.AttrsEntry 3, // 123: tutorial.UseItemResponse.code:type_name -> tutorial.UseItemResponse.CODE 381, // 124: tutorial.UseItemResponse.items:type_name -> tutorial.Item 380, // 125: tutorial.UseItemResponse.price:type_name -> tutorial.IntPack - 595, // 126: tutorial.UseItemResponse.attrs:type_name -> tutorial.UseItemResponse.AttrsEntry + 602, // 126: tutorial.UseItemResponse.attrs:type_name -> tutorial.UseItemResponse.AttrsEntry 1, // 127: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 457, // 128: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 453, // 129: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo @@ -35599,7 +36077,7 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 136: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 1, // 137: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 408, // 138: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 596, // 139: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 603, // 139: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry 1, // 140: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE 1, // 141: tutorial.ResCardCollectReward.Code:type_name -> tutorial.RES_CODE 1, // 142: tutorial.ResExStarReward.Code:type_name -> tutorial.RES_CODE @@ -35615,11 +36093,11 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 152: tutorial.ResRefuseCardExchange.Code:type_name -> tutorial.RES_CODE 1, // 153: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 1, // 154: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE - 597, // 155: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 604, // 155: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry 442, // 156: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo 443, // 157: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 598, // 158: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 599, // 159: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 605, // 158: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 606, // 159: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 442, // 160: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 447, // 161: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 442, // 162: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo @@ -35637,58 +36115,64 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 174: tutorial.ResGetSevenLoginReward.Code:type_name -> tutorial.RES_CODE 1, // 175: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE 467, // 176: tutorial.ResAcitive.ActiveList:type_name -> tutorial.ActiveInfo - 600, // 177: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 601, // 178: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry - 1, // 179: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE - 1, // 180: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE + 607, // 177: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 608, // 178: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 1, // 179: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE + 1, // 180: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE 1, // 181: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE 482, // 182: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 485, // 183: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 602, // 184: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 486, // 183: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard + 609, // 184: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 482, // 185: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple 1, // 186: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE 482, // 187: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple 482, // 188: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResPlayerSimple - 485, // 189: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard - 483, // 190: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog + 486, // 189: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard + 484, // 190: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog 482, // 191: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple 1, // 192: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE 1, // 193: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE - 1, // 194: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE - 1, // 195: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 603, // 196: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 604, // 197: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry - 442, // 198: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo - 1, // 199: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE - 1, // 200: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE - 1, // 201: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 605, // 202: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 606, // 203: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 607, // 204: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry - 1, // 205: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE - 1, // 206: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 1, // 207: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 608, // 208: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry - 442, // 209: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo - 1, // 210: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE - 1, // 211: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE - 1, // 212: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE - 1, // 213: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE - 1, // 214: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 609, // 215: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 445, // 216: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 446, // 217: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 471, // 218: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 482, // 219: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 511, // 220: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 519, // 221: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 520, // 222: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 529, // 223: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 224, // [224:224] is the sub-list for method output_type - 224, // [224:224] is the sub-list for method input_type - 224, // [224:224] is the sub-list for extension type_name - 224, // [224:224] is the sub-list for extension extendee - 0, // [0:224] is the sub-list for field type_name + 482, // 194: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple + 1, // 195: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE + 1, // 196: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE + 610, // 197: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 611, // 198: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 442, // 199: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo + 1, // 200: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE + 1, // 201: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE + 1, // 202: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE + 612, // 203: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 613, // 204: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 614, // 205: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 1, // 206: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE + 1, // 207: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE + 1, // 208: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE + 615, // 209: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 442, // 210: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo + 1, // 211: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE + 1, // 212: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE + 1, // 213: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE + 1, // 214: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE + 1, // 215: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE + 616, // 216: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 617, // 217: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 618, // 218: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 619, // 219: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 445, // 220: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 446, // 221: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 473, // 222: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 482, // 223: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 514, // 224: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 522, // 225: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 523, // 226: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 532, // 227: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 483, // 228: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 483, // 229: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 230, // [230:230] is the sub-list for method output_type + 230, // [230:230] is the sub-list for method input_type + 230, // [230:230] is the sub-list for extension type_name + 230, // [230:230] is the sub-list for extension extendee + 0, // [0:230] is the sub-list for field type_name } func init() { file_Gameapi_proto_init() } @@ -35702,7 +36186,7 @@ func file_Gameapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_Gameapi_proto_rawDesc, NumEnums: 4, - NumMessages: 606, + NumMessages: 616, NumExtensions: 0, NumServices: 0, },