diff --git a/common/constant.go b/common/constant.go index 8293072..7da0e49 100644 --- a/common/constant.go +++ b/common/constant.go @@ -617,6 +617,7 @@ const ( ItemIDCoffee = 100008 // 咖啡 ItemIDBucket = 100009 // 水桶 ItemIDSlippers = 100010 // 拖鞋 + ItemTienlenRecord = 60001 // tienlen记牌器 ) func ToItemId(id int32) int32 { @@ -643,6 +644,7 @@ const ( ItemTypeVipExp = 10 //VIP经验 ItemTypeShopScore = 11 //积分 ItemTypeInteract = 12 // 互动表情 + ItemTypeExpireTime = 15 // 时效类道具 ) func GetKeyNoviceGameId(gameId int) string { diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index a4a78db..4467a9d 100644 Binary files a/data/DB_GameItem.dat and b/data/DB_GameItem.dat differ diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 55de895..ea7d802 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -737,6 +737,34 @@ "Location": "0", "Describe": "tienlen游戏记录打出过的牌" }, + { + "Id": 60001, + "Name": "tienlen记牌器", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 15, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "CompositionMax": 1, + "Time": 12, + "Location": "0", + "Describe": "tienlen游戏记录打出过的牌" + }, { "Id": 100001, "Name": "金币", diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat new file mode 100644 index 0000000..75bdd9f --- /dev/null +++ b/data/DB_PigBank_Diamond.dat @@ -0,0 +1,4 @@ + +  + ( + / 2 \ No newline at end of file diff --git a/data/DB_PigBank_Diamond.json b/data/DB_PigBank_Diamond.json new file mode 100644 index 0000000..ab24207 --- /dev/null +++ b/data/DB_PigBank_Diamond.json @@ -0,0 +1,22 @@ +{ + "Arr": [ + { + "Id": 1, + "BuyCountMin": 1, + "BuyCountMax": 1, + "CostDiamond": 30 + }, + { + "Id": 2, + "BuyCountMin": 2, + "BuyCountMax": 2, + "CostDiamond": 40 + }, + { + "Id": 3, + "BuyCountMin": 3, + "BuyCountMax": 99999999, + "CostDiamond": 50 + } + ] +} \ No newline at end of file diff --git a/data/DB_Pigbank_Prop.dat b/data/DB_Pigbank_Prop.dat new file mode 100644 index 0000000..49848a8 Binary files /dev/null and b/data/DB_Pigbank_Prop.dat differ diff --git a/data/DB_Pigbank_Prop.json b/data/DB_Pigbank_Prop.json new file mode 100644 index 0000000..3f155af --- /dev/null +++ b/data/DB_Pigbank_Prop.json @@ -0,0 +1,579 @@ +{ + "Arr": [ + { + "Name": "不是VIP", + "Privilege1": [ + 100000, + 2 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 0, + 0 + ], + "Privilege4": 2, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 1 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 1, + "Name": "VIP1", + "Count": 1000, + "VipExp": 1000, + "Privilege1": [ + 100000, + 100 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 1, + 2 + ], + "Privilege4": 5, + "Privilege6": 2, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 2 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 2, + "Name": "VIP2", + "Count": 2000, + "VipExp": 2000, + "Privilege1": [ + 150000, + 150 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 1, + 2 + ], + "Privilege4": 9, + "Privilege6": 3, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 2 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 3, + "Name": "VIP3", + "Count": 5000, + "VipExp": 5000, + "Privilege1": [ + 200000, + 200 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 2, + 2 + ], + "Privilege4": 13, + "Privilege6": 4, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 3 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 4, + "Name": "VIP4", + "Count": 10000, + "VipExp": 10000, + "Privilege1": [ + 300000, + 250 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 2, + 2 + ], + "Privilege4": 17, + "Privilege6": 5, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 3 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 5, + "Name": "VIP5", + "Count": 20000, + "VipExp": 20000, + "Privilege1": [ + 400000, + 300 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 2, + 2 + ], + "Privilege4": 22, + "Privilege6": 6, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 4 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 6, + "Name": "VIP6", + "Count": 50000, + "VipExp": 50000, + "Privilege1": [ + 500000, + 350 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 2, + 3 + ], + "Privilege4": 27, + "Privilege6": 7, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 4 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 7, + "Name": "VIP7", + "Count": 100000, + "VipExp": 100000, + "Privilege1": [ + 600000, + 400 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 2, + 3 + ], + "Privilege4": 32, + "Privilege6": 8, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 3 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 8, + "Name": "VIP8", + "Count": 200000, + "VipExp": 200000, + "Privilege1": [ + 700000, + 450 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 3, + 3 + ], + "Privilege4": 37, + "Privilege6": 9, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 3 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 9, + "Name": "VIP9", + "Count": 500000, + "VipExp": 500000, + "Privilege1": [ + 800000, + 500 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 3, + 3 + ], + "Privilege4": 42, + "Privilege6": 10, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 4 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 10, + "Name": "VIP10", + "Count": 1000000, + "VipExp": 1000000, + "Privilege1": [ + 900000, + 550 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 3, + 3 + ], + "Privilege4": 47, + "Privilege6": 11, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 4 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 11, + "Name": "VIP11", + "Count": 2000000, + "VipExp": 2000000, + "Privilege1": [ + 1000000, + 600 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 3, + 4 + ], + "Privilege4": 50, + "Privilege6": 12, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 0 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 12, + "Name": "VIP12", + "Count": 5000000, + "VipExp": 5000000, + "Privilege1": [ + 2000000, + 650 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 3, + 4 + ], + "Privilege4": 60, + "Privilege6": 13, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 0 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 13, + "Name": "VIP13", + "Count": 10000000, + "VipExp": 10000000, + "Privilege1": [ + 3000000, + 700 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 4, + 4 + ], + "Privilege4": 70, + "Privilege6": 14, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 0 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 14, + "Name": "VIP14", + "Count": 20000000, + "VipExp": 20000000, + "Privilege1": [ + 4000000, + 750 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 4, + 4 + ], + "Privilege4": 80, + "Privilege6": 15, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 0 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 15, + "Name": "VIP15", + "Count": 50000000, + "VipExp": 50000000, + "Privilege1": [ + 5000000, + 800 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 4, + 4 + ], + "Privilege4": 90, + "Privilege6": 16, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 0 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + { + "Id": 16, + "Name": "VIP16", + "Count": 100000000, + "VipExp": 100000000, + "Privilege1": [ + 6000000, + 850 + ], + "Privilege2": [ + 0, + 0 + ], + "Privilege3": [ + 4, + 4 + ], + "Privilege4": 100, + "Privilege6": 20, + "Privilege8": 1, + "Param": [ + 1, + 1, + 1 + ], + "RewardOutlineID": [ + 0 + ], + "ParamName": [ + "获得专属头像框", + "获得专属炮台", + "更多VIP功能正待开发" + ] + }, + {} + ] +} \ No newline at end of file diff --git a/gamesrv/action/action_server.go b/gamesrv/action/action_server.go index 40f0893..34d8d68 100644 --- a/gamesrv/action/action_server.go +++ b/gamesrv/action/action_server.go @@ -147,8 +147,11 @@ func init() { p.Coin = msg.GetTakeCoin() p.Pos = int(msg.GetPos()) p.MatchParams = msg.GetMatchParams() - for id, num := range msg.Items { - p.Items[id] = num + for id, item := range msg.Items { + p.Items[id] = &base.Item{ + ItemNum: item.ItemNum, + ExpireTime: item.ExpireTime, + } } for k, v := range msg.RankScore { p.RankScore[k] = v diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go index a766a95..02752a2 100644 --- a/gamesrv/base/player.go +++ b/gamesrv/base/player.go @@ -117,7 +117,7 @@ type Player struct { BlackLevel int32 //todo 使用WBLevel SingleAdjust *model.PlayerSingleAdjust IsLocal bool //是否本地player - Items map[int32]int64 //背包数据 + Items map[int32]*Item //背包数据 MatchParams []int32 //比赛参数 排名、段位、假snid、假角色 MatchRobotGrades []MatchRobotGrade TestLog []string // 调试日志 @@ -129,6 +129,12 @@ type MatchRobotGrade struct { Grade int32 } +type Item struct { + ItemNum int64 // 物品数量 + ObtainTime int64 // 获取的时间 + ExpireTime int64 // 有效期截止时间 +} + func NewPlayer(sid int64, data []byte, ws, gs *netlib.Session) *Player { p := &Player{ sid: sid, @@ -141,7 +147,7 @@ func NewPlayer(sid int64, data []byte, ws, gs *netlib.Session) *Player { cparams: make(map[string]string), //平台登陆数据 Iparams: make(map[int]int64), //整形参数 sparams: make(map[int]string), //字符参数 - Items: make(map[int32]int64), + Items: make(map[int32]*Item), RankScore: make(map[int32]int64), } @@ -448,7 +454,7 @@ func (this *Player) AddCoin(num int64, gainWay int32, syncFlag int, oper, remark return } this.Coin += num - this.Items[common.ItemIDCoin] = this.Coin + this.Items[common.ItemIDCoin].ItemNum = this.Coin if this.scene != nil { if !this.IsRob && !this.scene.Testing { //机器人log排除掉 log := model.NewCoinLogEx(&model.CoinLogParam{ @@ -532,7 +538,7 @@ func (this *Player) AddCoinAsync(num int64, gainWay int32, notifyC, broadcast bo return } this.Coin += num - this.Items[common.ItemIDCoin] = this.Coin + this.Items[common.ItemIDCoin].ItemNum = this.Coin if this.scene != nil { if !this.IsRob && !this.scene.Testing && writeLog { //机器人log排除掉 log := model.NewCoinLogEx(&model.CoinLogParam{ diff --git a/gamesrv/base/scene.go b/gamesrv/base/scene.go index e72a4a3..81deb0c 100644 --- a/gamesrv/base/scene.go +++ b/gamesrv/base/scene.go @@ -637,9 +637,12 @@ func (this *Scene) PlayerLeave(p *Player, reason int, isBill bool) { } } - pack.Items = make(map[int32]int64) - for id, num := range p.Items { - pack.Items[id] = num + pack.Items = make(map[int32]*server.ItemParam) + for id, item := range p.Items { + p.Items[id] = &Item{ + ItemNum: item.ItemNum, + ExpireTime: item.ExpireTime, + } } pack.RankScore = make(map[int32]int64) for k, v := range p.RankScore { @@ -2133,7 +2136,7 @@ func (this *Scene) TryBillExGameDrop(p *Player) { num = rand.Int31n(drop.MaxAmount-drop.MinAmount+1) + drop.MinAmount } - p.Items[drop.ItemId] += int64(num) + p.Items[drop.ItemId].ItemNum += int64(num) realDrop[drop.ItemId] = num } } else { @@ -2181,7 +2184,7 @@ func (this *Scene) DropCollectBox(p *Player) { pack.Items = make(map[int32]int32) itemData := srvdata.PBDB_GameItemMgr.GetData(common.ItemIDCollectBox) if itemData != nil { - p.Items[itemData.Id] = p.Items[itemData.Id] + 1 + p.Items[itemData.Id].ItemNum = p.Items[itemData.Id].ItemNum + 1 pack.Items = map[int32]int32{itemData.Id: 1} remark := fmt.Sprintf("游戏掉落%v", itemData.Id) //logType 0获得 1消耗 diff --git a/gamesrv/chess/scenepolicy.go b/gamesrv/chess/scenepolicy.go index 9b6e6ee..c70f869 100644 --- a/gamesrv/chess/scenepolicy.go +++ b/gamesrv/chess/scenepolicy.go @@ -460,8 +460,8 @@ func CreatePlayerData(p *base.Player) *chesstitians.ChesstitiansPlayerData { } if p.Items != nil { pd.Items = make(map[int32]int32) - for id, num := range p.Items { - pd.Items[id] = int32(num) + for id, item := range p.Items { + pd.Items[id] = int32(item.ItemNum) } } if len(p.MatchParams) > 0 { diff --git a/gamesrv/fishing/action_fish.go b/gamesrv/fishing/action_fish.go index 051c7c8..a8c7f07 100644 --- a/gamesrv/fishing/action_fish.go +++ b/gamesrv/fishing/action_fish.go @@ -352,9 +352,9 @@ func (this *CSFishSkillUseReqHandler) Process(s *netlib.Session, packetid int, d itemId := item[0] itemNum := item[1] //获取背包道具数量 - num, ok := player.Items[item[0]] - if !ok || num < int64(item[1]) { - fishlogger.Errorf("道具数量不在 itemId = %v,itemNum = %v,背包数量 = %v", item[0], item[1], num) + playerItem, ok := player.Items[item[0]] + if !ok || playerItem.ItemNum < int64(item[1]) { + fishlogger.Errorf("道具数量不在 itemId = %v,itemNum = %v,背包数量 = %v", item[0], item[1], playerItem.ItemNum) //判断其他消耗其他物品 otherItem := skillTemp.OtherConsumer otherItemId := otherItem[0] @@ -378,18 +378,18 @@ func (this *CSFishSkillUseReqHandler) Process(s *netlib.Session, packetid int, d } player.Diamond -= int64(otherItemNum) } else { - if player.Items[otherItemId] < int64(otherItemNum) { + if player.Items[otherItemId].ItemNum < int64(otherItemNum) { fishlogger.Tracef("转换物品是其他物品时,物品数量不足!") pack.Result = 1 pack.Status = fishing_proto.SCFishSkillUseResp_TOOL_LIMIT player.SendToClient(int(fishing_proto.FIPacketID_FISHING_SC_SKILLUSERESP), pack) return nil } - player.Items[otherItemId] = player.Items[otherItemId] - int64(otherItemNum) + player.Items[otherItemId].ItemNum = player.Items[otherItemId].ItemNum - int64(otherItemNum) } fishlogger.Tracef("玩家使用技能当前道具不足 转化物品消耗 skillid = %v,snid = %v,otherItemId = %v,otherItemNum = %v", skillId, player.SnId, otherItemId, otherItemNum) } else { - player.Items[itemId] = player.Items[itemId] - int64(itemNum) + player.Items[itemId].ItemNum = player.Items[itemId].ItemNum - int64(itemNum) //记录道具消耗日志 fishlogger.Tracef("玩家使用技能,消耗道具!snod = %v, skill = %v,itemId =%v,itemNum = %v", player.SnId, skillId, itemId, itemNum) } diff --git a/gamesrv/tienlen/playerdata_tienlen.go b/gamesrv/tienlen/playerdata_tienlen.go index d5243be..f9f75b9 100644 --- a/gamesrv/tienlen/playerdata_tienlen.go +++ b/gamesrv/tienlen/playerdata_tienlen.go @@ -2,6 +2,7 @@ package tienlen import ( "math/rand" + "mongo.games.com/game/common" "strconv" "time" @@ -9,6 +10,7 @@ import ( "mongo.games.com/game/gamesrv/base" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/tienlen" + "mongo.games.com/game/srvdata" ) // 玩家身上的额外数据 @@ -209,3 +211,17 @@ func (this *TienLenPlayerData) LeaveAutoState(s *base.Scene) { //logger.Logger.Trace("(this *TienLenPlayerData) LeaveAutoState", " player:", this.SnId, " Flag=", this.GetFlag()) } } + +// 能否用记牌器 +func (this *TienLenPlayerData) CanUseRecordItem() bool { + itemData := srvdata.PBDB_GameItemMgr.GetData(common.ItemTienlenRecord) + if itemData != nil { + if item, ok := this.Items[common.ItemTienlenRecord]; ok { + if item.ItemNum >= 1 && item.ExpireTime >= time.Now().Unix() { + return true + } + } + } + + return false +} diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index 6cf5dcb..8558c9f 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -611,6 +611,8 @@ func (this *TienLenSceneData) SendHandCard_Match() { for j := int32(0); j < rule.HandCardNum; j++ { pack.Cards = append(pack.Cards, seat.cards[j]) } + pack.IsOutRecord = seat.CanUseRecordItem() + proto.SetDefaults(pack) seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards) @@ -643,6 +645,7 @@ func (this *TienLenSceneData) SendHandCard_Match() { for j := int32(0); j < rule.HandCardNum; j++ { pack.Cards = append(pack.Cards, seat.cards[j]) } + pack.IsOutRecord = seat.CanUseRecordItem() proto.SetDefaults(pack) seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards) @@ -1093,6 +1096,7 @@ func (this *TienLenSceneData) SendHandCardOdds() { for j := int32(0); j < rule.HandCardNum; j++ { pack.Cards = append(pack.Cards, p.cards[j]) } + pack.IsOutRecord = p.CanUseRecordItem() proto.SetDefaults(pack) p.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) logger.Logger.Trace("SnId: ", p.SnId, ";SCTienLenCard: ", pack) @@ -1717,6 +1721,8 @@ func (this *TienLenSceneData) SendHandCardTest() { for j := int32(0); j < rule.HandCardNum; j++ { pack.Cards = append(pack.Cards, int32(seatPlayerEx.cards[j])) } + pack.IsOutRecord = seatPlayerEx.CanUseRecordItem() + proto.SetDefaults(pack) seatPlayerEx.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) logger.Logger.Trace("player_id", seatPlayerEx.SnId, ";SCTienLenCard", pack.Cards) diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index 66baeca..7cb8648 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -374,8 +374,8 @@ func TienLenCreatePlayerData(p *base.Player, rankScore int64) *tienlen.TienLenPl } if p.Items != nil { pd.Items = make(map[int32]int32) - for id, num := range p.Items { - pd.Items[id] = int32(num) + for id, item := range p.Items { + pd.Items[id] = int32(item.ItemNum) } } if len(p.MatchParams) > 0 { @@ -512,6 +512,7 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen } } } + pack.IsOutRecord = playerEx.CanUseRecordItem() proto.SetDefaults(pack) return pack diff --git a/model/baginfo.go b/model/baginfo.go index 84e994b..468e774 100644 --- a/model/baginfo.go +++ b/model/baginfo.go @@ -18,7 +18,8 @@ type BagInfo struct { type Item struct { ItemId int32 // 物品ID ItemNum int64 // 物品数量 - ObtainTime int64 //获取的时间 + ObtainTime int64 // 获取的时间 + ExpireTime int64 // 截止时间 } type GetBagInfoArgs struct { Plt string diff --git a/protocol/bag/bag.pb.go b/protocol/bag/bag.pb.go index 42b924d..f6b1dff 100644 --- a/protocol/bag/bag.pb.go +++ b/protocol/bag/bag.pb.go @@ -20,7 +20,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -//操作结果 +// 操作结果 type OpResultCode int32 const ( @@ -145,7 +145,7 @@ func (SPacketID) EnumDescriptor() ([]byte, []int) { return file_bag_proto_rawDescGZIP(), []int{1} } -//物品信息 后续精简 +// 物品信息 后续精简 type ItemInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -168,6 +168,7 @@ type ItemInfo struct { // string Location = 14; // 跳转页面 // string Describe = 15; // 道具描述 ObtainTime int64 `protobuf:"varint,3,opt,name=ObtainTime,proto3" json:"ObtainTime,omitempty"` //获取的时间 + ExpireTime int64 `protobuf:"varint,4,opt,name=ExpireTime,proto3" json:"ExpireTime,omitempty"` //有效期截止时间 } func (x *ItemInfo) Reset() { @@ -223,7 +224,14 @@ func (x *ItemInfo) GetObtainTime() int64 { return 0 } -//PACKET_ALL_BAG_INFO +func (x *ItemInfo) GetExpireTime() int64 { + if x != nil { + return x.ExpireTime + } + return 0 +} + +// PACKET_ALL_BAG_INFO type CSBagInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -279,7 +287,7 @@ func (x *CSBagInfo) GetTp() int32 { return 0 } -//PACKET_ALL_BAG_INFO +// PACKET_ALL_BAG_INFO type SCBagInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -343,7 +351,7 @@ func (x *SCBagInfo) GetBagNumMax() int32 { return 0 } -//PACKET_ALL_BAG_USE +// PACKET_ALL_BAG_USE type CSUpBagInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -431,7 +439,7 @@ func (x *CSUpBagInfo) GetShowId() int64 { return 0 } -//PACKET_ALL_BAG_USE +// PACKET_ALL_BAG_USE type SCUpBagInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -521,7 +529,7 @@ func (x *SCUpBagInfo) GetInfos() []*ItemInfo { return nil } -//PACKET_SC_SYNCBAGDATA +// PACKET_SC_SYNCBAGDATA type SCSyncBagData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -905,12 +913,14 @@ var File_bag_proto protoreflect.FileDescriptor var file_bag_proto_rawDesc = []byte{ 0x0a, 0x09, 0x62, 0x61, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x62, 0x61, 0x67, - 0x22, 0x5c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, + 0x22, 0x7c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x4f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3d, + 0x28, 0x03, 0x52, 0x0a, 0x4f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x09, 0x43, 0x53, 0x42, 0x61, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4e, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, diff --git a/protocol/bag/bag.proto b/protocol/bag/bag.proto index e3678bf..9207fbc 100644 --- a/protocol/bag/bag.proto +++ b/protocol/bag/bag.proto @@ -41,6 +41,7 @@ message ItemInfo{ // string Location = 14; // 跳转页面 // string Describe = 15; // 道具描述 int64 ObtainTime = 3; //获取的时间 + int64 ExpireTime = 4; //有效期截止时间 } //PACKET_ALL_BAG_INFO diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index cf49d9f..daf3589 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -6221,148 +6221,6 @@ func (x *DB_GiftBoxArray) GetArr() []*DB_GiftBox { return nil } -type DB_GiftCard struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - ShopID int32 `protobuf:"varint,2,opt,name=ShopID,proto3" json:"ShopID,omitempty"` - Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` - Rewards map[int64]int64 `protobuf:"bytes,4,rep,name=Rewards,proto3" json:"Rewards,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - DayRewards map[int64]int64 `protobuf:"bytes,5,rep,name=DayRewards,proto3" json:"DayRewards,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - Time int32 `protobuf:"varint,6,opt,name=Time,proto3" json:"Time,omitempty"` - Equity []int32 `protobuf:"varint,7,rep,packed,name=Equity,proto3" json:"Equity,omitempty"` -} - -func (x *DB_GiftCard) Reset() { - *x = DB_GiftCard{} - if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DB_GiftCard) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DB_GiftCard) ProtoMessage() {} - -func (x *DB_GiftCard) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[74] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DB_GiftCard.ProtoReflect.Descriptor instead. -func (*DB_GiftCard) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{74} -} - -func (x *DB_GiftCard) GetId() int32 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *DB_GiftCard) GetShopID() int32 { - if x != nil { - return x.ShopID - } - return 0 -} - -func (x *DB_GiftCard) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DB_GiftCard) GetRewards() map[int64]int64 { - if x != nil { - return x.Rewards - } - return nil -} - -func (x *DB_GiftCard) GetDayRewards() map[int64]int64 { - if x != nil { - return x.DayRewards - } - return nil -} - -func (x *DB_GiftCard) GetTime() int32 { - if x != nil { - return x.Time - } - return 0 -} - -func (x *DB_GiftCard) GetEquity() []int32 { - if x != nil { - return x.Equity - } - return nil -} - -type DB_GiftCardArray struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Arr []*DB_GiftCard `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` -} - -func (x *DB_GiftCardArray) Reset() { - *x = DB_GiftCardArray{} - if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DB_GiftCardArray) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DB_GiftCardArray) ProtoMessage() {} - -func (x *DB_GiftCardArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[75] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DB_GiftCardArray.ProtoReflect.Descriptor instead. -func (*DB_GiftCardArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{75} -} - -func (x *DB_GiftCardArray) GetArr() []*DB_GiftCard { - if x != nil { - return x.Arr - } - return nil -} - type DB_IceAgeElementRate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6377,7 +6235,7 @@ type DB_IceAgeElementRate struct { func (x *DB_IceAgeElementRate) Reset() { *x = DB_IceAgeElementRate{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[76] + mi := &file_pbdata_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6390,7 +6248,7 @@ func (x *DB_IceAgeElementRate) String() string { func (*DB_IceAgeElementRate) ProtoMessage() {} func (x *DB_IceAgeElementRate) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[76] + mi := &file_pbdata_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6403,7 +6261,7 @@ func (x *DB_IceAgeElementRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_IceAgeElementRate.ProtoReflect.Descriptor instead. func (*DB_IceAgeElementRate) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{76} + return file_pbdata_proto_rawDescGZIP(), []int{74} } func (x *DB_IceAgeElementRate) GetId() int32 { @@ -6445,7 +6303,7 @@ type DB_IceAgeElementRateArray struct { func (x *DB_IceAgeElementRateArray) Reset() { *x = DB_IceAgeElementRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[77] + mi := &file_pbdata_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6458,7 +6316,7 @@ func (x *DB_IceAgeElementRateArray) String() string { func (*DB_IceAgeElementRateArray) ProtoMessage() {} func (x *DB_IceAgeElementRateArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[77] + mi := &file_pbdata_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6471,7 +6329,7 @@ func (x *DB_IceAgeElementRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_IceAgeElementRateArray.ProtoReflect.Descriptor instead. func (*DB_IceAgeElementRateArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{77} + return file_pbdata_proto_rawDescGZIP(), []int{75} } func (x *DB_IceAgeElementRateArray) GetArr() []*DB_IceAgeElementRate { @@ -6496,7 +6354,7 @@ type DB_Legend_Odds struct { func (x *DB_Legend_Odds) Reset() { *x = DB_Legend_Odds{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[78] + mi := &file_pbdata_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6509,7 +6367,7 @@ func (x *DB_Legend_Odds) String() string { func (*DB_Legend_Odds) ProtoMessage() {} func (x *DB_Legend_Odds) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[78] + mi := &file_pbdata_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6522,7 +6380,7 @@ func (x *DB_Legend_Odds) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_Odds.ProtoReflect.Descriptor instead. func (*DB_Legend_Odds) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{78} + return file_pbdata_proto_rawDescGZIP(), []int{76} } func (x *DB_Legend_Odds) GetId() int32 { @@ -6571,7 +6429,7 @@ type DB_Legend_OddsArray struct { func (x *DB_Legend_OddsArray) Reset() { *x = DB_Legend_OddsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[79] + mi := &file_pbdata_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6584,7 +6442,7 @@ func (x *DB_Legend_OddsArray) String() string { func (*DB_Legend_OddsArray) ProtoMessage() {} func (x *DB_Legend_OddsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[79] + mi := &file_pbdata_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6597,7 +6455,7 @@ func (x *DB_Legend_OddsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_OddsArray.ProtoReflect.Descriptor instead. func (*DB_Legend_OddsArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{79} + return file_pbdata_proto_rawDescGZIP(), []int{77} } func (x *DB_Legend_OddsArray) GetArr() []*DB_Legend_Odds { @@ -6621,7 +6479,7 @@ type DB_Legend_TurnRate struct { func (x *DB_Legend_TurnRate) Reset() { *x = DB_Legend_TurnRate{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[80] + mi := &file_pbdata_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6634,7 +6492,7 @@ func (x *DB_Legend_TurnRate) String() string { func (*DB_Legend_TurnRate) ProtoMessage() {} func (x *DB_Legend_TurnRate) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[80] + mi := &file_pbdata_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6647,7 +6505,7 @@ func (x *DB_Legend_TurnRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_TurnRate.ProtoReflect.Descriptor instead. func (*DB_Legend_TurnRate) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{80} + return file_pbdata_proto_rawDescGZIP(), []int{78} } func (x *DB_Legend_TurnRate) GetId() int32 { @@ -6689,7 +6547,7 @@ type DB_Legend_TurnRateArray struct { func (x *DB_Legend_TurnRateArray) Reset() { *x = DB_Legend_TurnRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[81] + mi := &file_pbdata_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6702,7 +6560,7 @@ func (x *DB_Legend_TurnRateArray) String() string { func (*DB_Legend_TurnRateArray) ProtoMessage() {} func (x *DB_Legend_TurnRateArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[81] + mi := &file_pbdata_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6715,7 +6573,7 @@ func (x *DB_Legend_TurnRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_TurnRateArray.ProtoReflect.Descriptor instead. func (*DB_Legend_TurnRateArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{81} + return file_pbdata_proto_rawDescGZIP(), []int{79} } func (x *DB_Legend_TurnRateArray) GetArr() []*DB_Legend_TurnRate { @@ -6738,7 +6596,7 @@ type DB_Legend_Weight struct { func (x *DB_Legend_Weight) Reset() { *x = DB_Legend_Weight{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[82] + mi := &file_pbdata_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6751,7 +6609,7 @@ func (x *DB_Legend_Weight) String() string { func (*DB_Legend_Weight) ProtoMessage() {} func (x *DB_Legend_Weight) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[82] + mi := &file_pbdata_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6764,7 +6622,7 @@ func (x *DB_Legend_Weight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_Weight.ProtoReflect.Descriptor instead. func (*DB_Legend_Weight) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{82} + return file_pbdata_proto_rawDescGZIP(), []int{80} } func (x *DB_Legend_Weight) GetId() int32 { @@ -6799,7 +6657,7 @@ type DB_Legend_WeightArray struct { func (x *DB_Legend_WeightArray) Reset() { *x = DB_Legend_WeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[83] + mi := &file_pbdata_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6812,7 +6670,7 @@ func (x *DB_Legend_WeightArray) String() string { func (*DB_Legend_WeightArray) ProtoMessage() {} func (x *DB_Legend_WeightArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[83] + mi := &file_pbdata_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6825,7 +6683,7 @@ func (x *DB_Legend_WeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightArray.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{83} + return file_pbdata_proto_rawDescGZIP(), []int{81} } func (x *DB_Legend_WeightArray) GetArr() []*DB_Legend_Weight { @@ -6850,7 +6708,7 @@ type DB_Legend_WeightCondition struct { func (x *DB_Legend_WeightCondition) Reset() { *x = DB_Legend_WeightCondition{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[84] + mi := &file_pbdata_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6863,7 +6721,7 @@ func (x *DB_Legend_WeightCondition) String() string { func (*DB_Legend_WeightCondition) ProtoMessage() {} func (x *DB_Legend_WeightCondition) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[84] + mi := &file_pbdata_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6876,7 +6734,7 @@ func (x *DB_Legend_WeightCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightCondition.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightCondition) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{84} + return file_pbdata_proto_rawDescGZIP(), []int{82} } func (x *DB_Legend_WeightCondition) GetId() int32 { @@ -6925,7 +6783,7 @@ type DB_Legend_WeightConditionArray struct { func (x *DB_Legend_WeightConditionArray) Reset() { *x = DB_Legend_WeightConditionArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[85] + mi := &file_pbdata_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6938,7 +6796,7 @@ func (x *DB_Legend_WeightConditionArray) String() string { func (*DB_Legend_WeightConditionArray) ProtoMessage() {} func (x *DB_Legend_WeightConditionArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[85] + mi := &file_pbdata_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6951,7 +6809,7 @@ func (x *DB_Legend_WeightConditionArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightConditionArray.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightConditionArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{85} + return file_pbdata_proto_rawDescGZIP(), []int{83} } func (x *DB_Legend_WeightConditionArray) GetArr() []*DB_Legend_WeightCondition { @@ -6973,7 +6831,7 @@ type DB_MatchRank struct { func (x *DB_MatchRank) Reset() { *x = DB_MatchRank{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[86] + mi := &file_pbdata_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6986,7 +6844,7 @@ func (x *DB_MatchRank) String() string { func (*DB_MatchRank) ProtoMessage() {} func (x *DB_MatchRank) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[86] + mi := &file_pbdata_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6999,7 +6857,7 @@ func (x *DB_MatchRank) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_MatchRank.ProtoReflect.Descriptor instead. func (*DB_MatchRank) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{86} + return file_pbdata_proto_rawDescGZIP(), []int{84} } func (x *DB_MatchRank) GetId() int32 { @@ -7027,7 +6885,7 @@ type DB_MatchRankArray struct { func (x *DB_MatchRankArray) Reset() { *x = DB_MatchRankArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[87] + mi := &file_pbdata_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7040,7 +6898,7 @@ func (x *DB_MatchRankArray) String() string { func (*DB_MatchRankArray) ProtoMessage() {} func (x *DB_MatchRankArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[87] + mi := &file_pbdata_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7053,7 +6911,7 @@ func (x *DB_MatchRankArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_MatchRankArray.ProtoReflect.Descriptor instead. func (*DB_MatchRankArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{87} + return file_pbdata_proto_rawDescGZIP(), []int{85} } func (x *DB_MatchRankArray) GetArr() []*DB_MatchRank { @@ -7075,7 +6933,7 @@ type DB_Name struct { func (x *DB_Name) Reset() { *x = DB_Name{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[88] + mi := &file_pbdata_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7088,7 +6946,7 @@ func (x *DB_Name) String() string { func (*DB_Name) ProtoMessage() {} func (x *DB_Name) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[88] + mi := &file_pbdata_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7101,7 +6959,7 @@ func (x *DB_Name) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Name.ProtoReflect.Descriptor instead. func (*DB_Name) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{88} + return file_pbdata_proto_rawDescGZIP(), []int{86} } func (x *DB_Name) GetId() int32 { @@ -7129,7 +6987,7 @@ type DB_NameArray struct { func (x *DB_NameArray) Reset() { *x = DB_NameArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[89] + mi := &file_pbdata_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7142,7 +7000,7 @@ func (x *DB_NameArray) String() string { func (*DB_NameArray) ProtoMessage() {} func (x *DB_NameArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[89] + mi := &file_pbdata_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7155,7 +7013,7 @@ func (x *DB_NameArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameArray.ProtoReflect.Descriptor instead. func (*DB_NameArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{89} + return file_pbdata_proto_rawDescGZIP(), []int{87} } func (x *DB_NameArray) GetArr() []*DB_Name { @@ -7177,7 +7035,7 @@ type DB_NameBoy struct { func (x *DB_NameBoy) Reset() { *x = DB_NameBoy{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[90] + mi := &file_pbdata_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7190,7 +7048,7 @@ func (x *DB_NameBoy) String() string { func (*DB_NameBoy) ProtoMessage() {} func (x *DB_NameBoy) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[90] + mi := &file_pbdata_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7203,7 +7061,7 @@ func (x *DB_NameBoy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameBoy.ProtoReflect.Descriptor instead. func (*DB_NameBoy) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{90} + return file_pbdata_proto_rawDescGZIP(), []int{88} } func (x *DB_NameBoy) GetId() int32 { @@ -7231,7 +7089,7 @@ type DB_NameBoyArray struct { func (x *DB_NameBoyArray) Reset() { *x = DB_NameBoyArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[91] + mi := &file_pbdata_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7244,7 +7102,7 @@ func (x *DB_NameBoyArray) String() string { func (*DB_NameBoyArray) ProtoMessage() {} func (x *DB_NameBoyArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[91] + mi := &file_pbdata_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7257,7 +7115,7 @@ func (x *DB_NameBoyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameBoyArray.ProtoReflect.Descriptor instead. func (*DB_NameBoyArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{91} + return file_pbdata_proto_rawDescGZIP(), []int{89} } func (x *DB_NameBoyArray) GetArr() []*DB_NameBoy { @@ -7279,7 +7137,7 @@ type DB_NameGirl struct { func (x *DB_NameGirl) Reset() { *x = DB_NameGirl{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[92] + mi := &file_pbdata_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7292,7 +7150,7 @@ func (x *DB_NameGirl) String() string { func (*DB_NameGirl) ProtoMessage() {} func (x *DB_NameGirl) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[92] + mi := &file_pbdata_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7305,7 +7163,7 @@ func (x *DB_NameGirl) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameGirl.ProtoReflect.Descriptor instead. func (*DB_NameGirl) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{92} + return file_pbdata_proto_rawDescGZIP(), []int{90} } func (x *DB_NameGirl) GetId() int32 { @@ -7333,7 +7191,7 @@ type DB_NameGirlArray struct { func (x *DB_NameGirlArray) Reset() { *x = DB_NameGirlArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[93] + mi := &file_pbdata_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7346,7 +7204,7 @@ func (x *DB_NameGirlArray) String() string { func (*DB_NameGirlArray) ProtoMessage() {} func (x *DB_NameGirlArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[93] + mi := &file_pbdata_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7359,7 +7217,7 @@ func (x *DB_NameGirlArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameGirlArray.ProtoReflect.Descriptor instead. func (*DB_NameGirlArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{93} + return file_pbdata_proto_rawDescGZIP(), []int{91} } func (x *DB_NameGirlArray) GetArr() []*DB_NameGirl { @@ -7389,7 +7247,7 @@ type DB_NewPlayer struct { func (x *DB_NewPlayer) Reset() { *x = DB_NewPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[94] + mi := &file_pbdata_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7402,7 +7260,7 @@ func (x *DB_NewPlayer) String() string { func (*DB_NewPlayer) ProtoMessage() {} func (x *DB_NewPlayer) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[94] + mi := &file_pbdata_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7415,7 +7273,7 @@ func (x *DB_NewPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewPlayer.ProtoReflect.Descriptor instead. func (*DB_NewPlayer) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{94} + return file_pbdata_proto_rawDescGZIP(), []int{92} } func (x *DB_NewPlayer) GetId() int32 { @@ -7499,7 +7357,7 @@ type DB_NewPlayerArray struct { func (x *DB_NewPlayerArray) Reset() { *x = DB_NewPlayerArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[95] + mi := &file_pbdata_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7512,7 +7370,7 @@ func (x *DB_NewPlayerArray) String() string { func (*DB_NewPlayerArray) ProtoMessage() {} func (x *DB_NewPlayerArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[95] + mi := &file_pbdata_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7525,7 +7383,7 @@ func (x *DB_NewPlayerArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewPlayerArray.ProtoReflect.Descriptor instead. func (*DB_NewPlayerArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{95} + return file_pbdata_proto_rawDescGZIP(), []int{93} } func (x *DB_NewPlayerArray) GetArr() []*DB_NewPlayer { @@ -7557,7 +7415,7 @@ type DB_PhoneLottery struct { func (x *DB_PhoneLottery) Reset() { *x = DB_PhoneLottery{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[96] + mi := &file_pbdata_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7570,7 +7428,7 @@ func (x *DB_PhoneLottery) String() string { func (*DB_PhoneLottery) ProtoMessage() {} func (x *DB_PhoneLottery) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[96] + mi := &file_pbdata_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7583,7 +7441,7 @@ func (x *DB_PhoneLottery) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PhoneLottery.ProtoReflect.Descriptor instead. func (*DB_PhoneLottery) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{96} + return file_pbdata_proto_rawDescGZIP(), []int{94} } func (x *DB_PhoneLottery) GetId() int32 { @@ -7681,7 +7539,7 @@ type DB_PhoneLotteryArray struct { func (x *DB_PhoneLotteryArray) Reset() { *x = DB_PhoneLotteryArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[97] + mi := &file_pbdata_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7694,7 +7552,7 @@ func (x *DB_PhoneLotteryArray) String() string { func (*DB_PhoneLotteryArray) ProtoMessage() {} func (x *DB_PhoneLotteryArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[97] + mi := &file_pbdata_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7707,7 +7565,7 @@ func (x *DB_PhoneLotteryArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PhoneLotteryArray.ProtoReflect.Descriptor instead. func (*DB_PhoneLotteryArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{97} + return file_pbdata_proto_rawDescGZIP(), []int{95} } func (x *DB_PhoneLotteryArray) GetArr() []*DB_PhoneLottery { @@ -7717,6 +7575,362 @@ func (x *DB_PhoneLotteryArray) GetArr() []*DB_PhoneLottery { return nil } +type DB_PigBank_Diamond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + BuyCountMin int32 `protobuf:"varint,2,opt,name=BuyCountMin,proto3" json:"BuyCountMin,omitempty"` + BuyCountMax int32 `protobuf:"varint,3,opt,name=BuyCountMax,proto3" json:"BuyCountMax,omitempty"` + CostDiamond int32 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` +} + +func (x *DB_PigBank_Diamond) Reset() { + *x = DB_PigBank_Diamond{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_PigBank_Diamond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_PigBank_Diamond) ProtoMessage() {} + +func (x *DB_PigBank_Diamond) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[96] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_PigBank_Diamond.ProtoReflect.Descriptor instead. +func (*DB_PigBank_Diamond) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{96} +} + +func (x *DB_PigBank_Diamond) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_PigBank_Diamond) GetBuyCountMin() int32 { + if x != nil { + return x.BuyCountMin + } + return 0 +} + +func (x *DB_PigBank_Diamond) GetBuyCountMax() int32 { + if x != nil { + return x.BuyCountMax + } + return 0 +} + +func (x *DB_PigBank_Diamond) GetCostDiamond() int32 { + if x != nil { + return x.CostDiamond + } + return 0 +} + +type DB_PigBank_DiamondArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_PigBank_Diamond `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_PigBank_DiamondArray) Reset() { + *x = DB_PigBank_DiamondArray{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_PigBank_DiamondArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_PigBank_DiamondArray) ProtoMessage() {} + +func (x *DB_PigBank_DiamondArray) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[97] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_PigBank_DiamondArray.ProtoReflect.Descriptor instead. +func (*DB_PigBank_DiamondArray) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{97} +} + +func (x *DB_PigBank_DiamondArray) GetArr() []*DB_PigBank_Diamond { + if x != nil { + return x.Arr + } + return nil +} + +type DB_Pigbank_Prop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=Count,proto3" json:"Count,omitempty"` + VipExp int32 `protobuf:"varint,4,opt,name=VipExp,proto3" json:"VipExp,omitempty"` + Privilege1 []int32 `protobuf:"varint,5,rep,packed,name=Privilege1,proto3" json:"Privilege1,omitempty"` + Privilege2 []int32 `protobuf:"varint,6,rep,packed,name=Privilege2,proto3" json:"Privilege2,omitempty"` + ShopId2 int32 `protobuf:"varint,7,opt,name=ShopId2,proto3" json:"ShopId2,omitempty"` + Privilege3 []int32 `protobuf:"varint,8,rep,packed,name=Privilege3,proto3" json:"Privilege3,omitempty"` + Privilege4 int32 `protobuf:"varint,9,opt,name=Privilege4,proto3" json:"Privilege4,omitempty"` + Privilege5 int32 `protobuf:"varint,10,opt,name=Privilege5,proto3" json:"Privilege5,omitempty"` + Privilege6 int32 `protobuf:"varint,11,opt,name=Privilege6,proto3" json:"Privilege6,omitempty"` + Privilege7 map[int64]int64 `protobuf:"bytes,12,rep,name=Privilege7,proto3" json:"Privilege7,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Privilege7Price int32 `protobuf:"varint,13,opt,name=Privilege7Price,proto3" json:"Privilege7Price,omitempty"` + ShopId7 int32 `protobuf:"varint,14,opt,name=ShopId7,proto3" json:"ShopId7,omitempty"` + Privilege8 int32 `protobuf:"varint,15,opt,name=Privilege8,proto3" json:"Privilege8,omitempty"` + Param []int32 `protobuf:"varint,16,rep,packed,name=Param,proto3" json:"Param,omitempty"` + RewardOutlineID []int32 `protobuf:"varint,17,rep,packed,name=RewardOutlineID,proto3" json:"RewardOutlineID,omitempty"` + Award map[int64]int64 `protobuf:"bytes,18,rep,name=Award,proto3" json:"Award,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + ParamName []string `protobuf:"bytes,19,rep,name=ParamName,proto3" json:"ParamName,omitempty"` +} + +func (x *DB_Pigbank_Prop) Reset() { + *x = DB_Pigbank_Prop{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_Pigbank_Prop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_Pigbank_Prop) ProtoMessage() {} + +func (x *DB_Pigbank_Prop) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[98] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_Pigbank_Prop.ProtoReflect.Descriptor instead. +func (*DB_Pigbank_Prop) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{98} +} + +func (x *DB_Pigbank_Prop) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DB_Pigbank_Prop) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetVipExp() int32 { + if x != nil { + return x.VipExp + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetPrivilege1() []int32 { + if x != nil { + return x.Privilege1 + } + return nil +} + +func (x *DB_Pigbank_Prop) GetPrivilege2() []int32 { + if x != nil { + return x.Privilege2 + } + return nil +} + +func (x *DB_Pigbank_Prop) GetShopId2() int32 { + if x != nil { + return x.ShopId2 + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetPrivilege3() []int32 { + if x != nil { + return x.Privilege3 + } + return nil +} + +func (x *DB_Pigbank_Prop) GetPrivilege4() int32 { + if x != nil { + return x.Privilege4 + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetPrivilege5() int32 { + if x != nil { + return x.Privilege5 + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetPrivilege6() int32 { + if x != nil { + return x.Privilege6 + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetPrivilege7() map[int64]int64 { + if x != nil { + return x.Privilege7 + } + return nil +} + +func (x *DB_Pigbank_Prop) GetPrivilege7Price() int32 { + if x != nil { + return x.Privilege7Price + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetShopId7() int32 { + if x != nil { + return x.ShopId7 + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetPrivilege8() int32 { + if x != nil { + return x.Privilege8 + } + return 0 +} + +func (x *DB_Pigbank_Prop) GetParam() []int32 { + if x != nil { + return x.Param + } + return nil +} + +func (x *DB_Pigbank_Prop) GetRewardOutlineID() []int32 { + if x != nil { + return x.RewardOutlineID + } + return nil +} + +func (x *DB_Pigbank_Prop) GetAward() map[int64]int64 { + if x != nil { + return x.Award + } + return nil +} + +func (x *DB_Pigbank_Prop) GetParamName() []string { + if x != nil { + return x.ParamName + } + return nil +} + +type DB_Pigbank_PropArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_Pigbank_Prop `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_Pigbank_PropArray) Reset() { + *x = DB_Pigbank_PropArray{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_Pigbank_PropArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_Pigbank_PropArray) ProtoMessage() {} + +func (x *DB_Pigbank_PropArray) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[99] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_Pigbank_PropArray.ProtoReflect.Descriptor instead. +func (*DB_Pigbank_PropArray) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{99} +} + +func (x *DB_Pigbank_PropArray) GetArr() []*DB_Pigbank_Prop { + if x != nil { + return x.Arr + } + return nil +} + type DB_PlayerExp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7729,7 +7943,7 @@ type DB_PlayerExp struct { func (x *DB_PlayerExp) Reset() { *x = DB_PlayerExp{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[98] + mi := &file_pbdata_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7742,7 +7956,7 @@ func (x *DB_PlayerExp) String() string { func (*DB_PlayerExp) ProtoMessage() {} func (x *DB_PlayerExp) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[98] + mi := &file_pbdata_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7755,7 +7969,7 @@ func (x *DB_PlayerExp) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerExp.ProtoReflect.Descriptor instead. func (*DB_PlayerExp) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{98} + return file_pbdata_proto_rawDescGZIP(), []int{100} } func (x *DB_PlayerExp) GetId() int32 { @@ -7783,7 +7997,7 @@ type DB_PlayerExpArray struct { func (x *DB_PlayerExpArray) Reset() { *x = DB_PlayerExpArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[99] + mi := &file_pbdata_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7796,7 +8010,7 @@ func (x *DB_PlayerExpArray) String() string { func (*DB_PlayerExpArray) ProtoMessage() {} func (x *DB_PlayerExpArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[99] + mi := &file_pbdata_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7809,7 +8023,7 @@ func (x *DB_PlayerExpArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerExpArray.ProtoReflect.Descriptor instead. func (*DB_PlayerExpArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{99} + return file_pbdata_proto_rawDescGZIP(), []int{101} } func (x *DB_PlayerExpArray) GetArr() []*DB_PlayerExp { @@ -7834,7 +8048,7 @@ type DB_PlayerInfo struct { func (x *DB_PlayerInfo) Reset() { *x = DB_PlayerInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[100] + mi := &file_pbdata_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7847,7 +8061,7 @@ func (x *DB_PlayerInfo) String() string { func (*DB_PlayerInfo) ProtoMessage() {} func (x *DB_PlayerInfo) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[100] + mi := &file_pbdata_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7860,7 +8074,7 @@ func (x *DB_PlayerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerInfo.ProtoReflect.Descriptor instead. func (*DB_PlayerInfo) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{100} + return file_pbdata_proto_rawDescGZIP(), []int{102} } func (x *DB_PlayerInfo) GetCity() string { @@ -7909,7 +8123,7 @@ type DB_PlayerInfoArray struct { func (x *DB_PlayerInfoArray) Reset() { *x = DB_PlayerInfoArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[101] + mi := &file_pbdata_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7922,7 +8136,7 @@ func (x *DB_PlayerInfoArray) String() string { func (*DB_PlayerInfoArray) ProtoMessage() {} func (x *DB_PlayerInfoArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[101] + mi := &file_pbdata_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7935,7 +8149,7 @@ func (x *DB_PlayerInfoArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerInfoArray.ProtoReflect.Descriptor instead. func (*DB_PlayerInfoArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{101} + return file_pbdata_proto_rawDescGZIP(), []int{103} } func (x *DB_PlayerInfoArray) GetArr() []*DB_PlayerInfo { @@ -7973,7 +8187,7 @@ type DB_PlayerType struct { func (x *DB_PlayerType) Reset() { *x = DB_PlayerType{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[102] + mi := &file_pbdata_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7986,7 +8200,7 @@ func (x *DB_PlayerType) String() string { func (*DB_PlayerType) ProtoMessage() {} func (x *DB_PlayerType) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[102] + mi := &file_pbdata_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7999,7 +8213,7 @@ func (x *DB_PlayerType) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerType.ProtoReflect.Descriptor instead. func (*DB_PlayerType) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{102} + return file_pbdata_proto_rawDescGZIP(), []int{104} } func (x *DB_PlayerType) GetId() int32 { @@ -8139,7 +8353,7 @@ type DB_PlayerTypeArray struct { func (x *DB_PlayerTypeArray) Reset() { *x = DB_PlayerTypeArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[103] + mi := &file_pbdata_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8152,7 +8366,7 @@ func (x *DB_PlayerTypeArray) String() string { func (*DB_PlayerTypeArray) ProtoMessage() {} func (x *DB_PlayerTypeArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[103] + mi := &file_pbdata_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8165,7 +8379,7 @@ func (x *DB_PlayerTypeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerTypeArray.ProtoReflect.Descriptor instead. func (*DB_PlayerTypeArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{103} + return file_pbdata_proto_rawDescGZIP(), []int{105} } func (x *DB_PlayerTypeArray) GetArr() []*DB_PlayerType { @@ -8189,7 +8403,7 @@ type DB_PotOdd struct { func (x *DB_PotOdd) Reset() { *x = DB_PotOdd{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[104] + mi := &file_pbdata_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8202,7 +8416,7 @@ func (x *DB_PotOdd) String() string { func (*DB_PotOdd) ProtoMessage() {} func (x *DB_PotOdd) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[104] + mi := &file_pbdata_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8215,7 +8429,7 @@ func (x *DB_PotOdd) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PotOdd.ProtoReflect.Descriptor instead. func (*DB_PotOdd) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{104} + return file_pbdata_proto_rawDescGZIP(), []int{106} } func (x *DB_PotOdd) GetId() int32 { @@ -8257,7 +8471,7 @@ type DB_PotOddArray struct { func (x *DB_PotOddArray) Reset() { *x = DB_PotOddArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[105] + mi := &file_pbdata_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8270,7 +8484,7 @@ func (x *DB_PotOddArray) String() string { func (*DB_PotOddArray) ProtoMessage() {} func (x *DB_PotOddArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[105] + mi := &file_pbdata_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8283,7 +8497,7 @@ func (x *DB_PotOddArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PotOddArray.ProtoReflect.Descriptor instead. func (*DB_PotOddArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{105} + return file_pbdata_proto_rawDescGZIP(), []int{107} } func (x *DB_PotOddArray) GetArr() []*DB_PotOdd { @@ -8307,7 +8521,7 @@ type DB_PropExchange struct { func (x *DB_PropExchange) Reset() { *x = DB_PropExchange{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[106] + mi := &file_pbdata_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8320,7 +8534,7 @@ func (x *DB_PropExchange) String() string { func (*DB_PropExchange) ProtoMessage() {} func (x *DB_PropExchange) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[106] + mi := &file_pbdata_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8333,7 +8547,7 @@ func (x *DB_PropExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PropExchange.ProtoReflect.Descriptor instead. func (*DB_PropExchange) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{106} + return file_pbdata_proto_rawDescGZIP(), []int{108} } func (x *DB_PropExchange) GetId() int32 { @@ -8375,7 +8589,7 @@ type DB_PropExchangeArray struct { func (x *DB_PropExchangeArray) Reset() { *x = DB_PropExchangeArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[107] + mi := &file_pbdata_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8388,7 +8602,7 @@ func (x *DB_PropExchangeArray) String() string { func (*DB_PropExchangeArray) ProtoMessage() {} func (x *DB_PropExchangeArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[107] + mi := &file_pbdata_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8401,7 +8615,7 @@ func (x *DB_PropExchangeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PropExchangeArray.ProtoReflect.Descriptor instead. func (*DB_PropExchangeArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{107} + return file_pbdata_proto_rawDescGZIP(), []int{109} } func (x *DB_PropExchangeArray) GetArr() []*DB_PropExchange { @@ -8424,7 +8638,7 @@ type DB_RankCycle struct { func (x *DB_RankCycle) Reset() { *x = DB_RankCycle{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[108] + mi := &file_pbdata_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8437,7 +8651,7 @@ func (x *DB_RankCycle) String() string { func (*DB_RankCycle) ProtoMessage() {} func (x *DB_RankCycle) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[108] + mi := &file_pbdata_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8450,7 +8664,7 @@ func (x *DB_RankCycle) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankCycle.ProtoReflect.Descriptor instead. func (*DB_RankCycle) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{108} + return file_pbdata_proto_rawDescGZIP(), []int{110} } func (x *DB_RankCycle) GetId() int32 { @@ -8485,7 +8699,7 @@ type DB_RankCycleArray struct { func (x *DB_RankCycleArray) Reset() { *x = DB_RankCycleArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[109] + mi := &file_pbdata_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8498,7 +8712,7 @@ func (x *DB_RankCycleArray) String() string { func (*DB_RankCycleArray) ProtoMessage() {} func (x *DB_RankCycleArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[109] + mi := &file_pbdata_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8511,7 +8725,7 @@ func (x *DB_RankCycleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankCycleArray.ProtoReflect.Descriptor instead. func (*DB_RankCycleArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{109} + return file_pbdata_proto_rawDescGZIP(), []int{111} } func (x *DB_RankCycleArray) GetArr() []*DB_RankCycle { @@ -8536,7 +8750,7 @@ type DB_RankLevel struct { func (x *DB_RankLevel) Reset() { *x = DB_RankLevel{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[110] + mi := &file_pbdata_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8549,7 +8763,7 @@ func (x *DB_RankLevel) String() string { func (*DB_RankLevel) ProtoMessage() {} func (x *DB_RankLevel) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[110] + mi := &file_pbdata_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8562,7 +8776,7 @@ func (x *DB_RankLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankLevel.ProtoReflect.Descriptor instead. func (*DB_RankLevel) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{110} + return file_pbdata_proto_rawDescGZIP(), []int{112} } func (x *DB_RankLevel) GetId() int32 { @@ -8611,7 +8825,7 @@ type DB_RankLevelArray struct { func (x *DB_RankLevelArray) Reset() { *x = DB_RankLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[111] + mi := &file_pbdata_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8624,7 +8838,7 @@ func (x *DB_RankLevelArray) String() string { func (*DB_RankLevelArray) ProtoMessage() {} func (x *DB_RankLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[111] + mi := &file_pbdata_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8637,7 +8851,7 @@ func (x *DB_RankLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankLevelArray.ProtoReflect.Descriptor instead. func (*DB_RankLevelArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{111} + return file_pbdata_proto_rawDescGZIP(), []int{113} } func (x *DB_RankLevelArray) GetArr() []*DB_RankLevel { @@ -8666,7 +8880,7 @@ type DB_RankReward struct { func (x *DB_RankReward) Reset() { *x = DB_RankReward{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[112] + mi := &file_pbdata_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8679,7 +8893,7 @@ func (x *DB_RankReward) String() string { func (*DB_RankReward) ProtoMessage() {} func (x *DB_RankReward) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[112] + mi := &file_pbdata_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8692,7 +8906,7 @@ func (x *DB_RankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankReward.ProtoReflect.Descriptor instead. func (*DB_RankReward) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{112} + return file_pbdata_proto_rawDescGZIP(), []int{114} } func (x *DB_RankReward) GetId() int32 { @@ -8769,7 +8983,7 @@ type DB_RankRewardArray struct { func (x *DB_RankRewardArray) Reset() { *x = DB_RankRewardArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[113] + mi := &file_pbdata_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8782,7 +8996,7 @@ func (x *DB_RankRewardArray) String() string { func (*DB_RankRewardArray) ProtoMessage() {} func (x *DB_RankRewardArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[113] + mi := &file_pbdata_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8795,7 +9009,7 @@ func (x *DB_RankRewardArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankRewardArray.ProtoReflect.Descriptor instead. func (*DB_RankRewardArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{113} + return file_pbdata_proto_rawDescGZIP(), []int{115} } func (x *DB_RankRewardArray) GetArr() []*DB_RankReward { @@ -8817,7 +9031,7 @@ type DB_Sensitive_Words struct { func (x *DB_Sensitive_Words) Reset() { *x = DB_Sensitive_Words{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[114] + mi := &file_pbdata_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8830,7 +9044,7 @@ func (x *DB_Sensitive_Words) String() string { func (*DB_Sensitive_Words) ProtoMessage() {} func (x *DB_Sensitive_Words) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[114] + mi := &file_pbdata_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8843,7 +9057,7 @@ func (x *DB_Sensitive_Words) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Sensitive_Words.ProtoReflect.Descriptor instead. func (*DB_Sensitive_Words) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{114} + return file_pbdata_proto_rawDescGZIP(), []int{116} } func (x *DB_Sensitive_Words) GetId() int32 { @@ -8871,7 +9085,7 @@ type DB_Sensitive_WordsArray struct { func (x *DB_Sensitive_WordsArray) Reset() { *x = DB_Sensitive_WordsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[115] + mi := &file_pbdata_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8884,7 +9098,7 @@ func (x *DB_Sensitive_WordsArray) String() string { func (*DB_Sensitive_WordsArray) ProtoMessage() {} func (x *DB_Sensitive_WordsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[115] + mi := &file_pbdata_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8897,7 +9111,7 @@ func (x *DB_Sensitive_WordsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Sensitive_WordsArray.ProtoReflect.Descriptor instead. func (*DB_Sensitive_WordsArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{115} + return file_pbdata_proto_rawDescGZIP(), []int{117} } func (x *DB_Sensitive_WordsArray) GetArr() []*DB_Sensitive_Words { @@ -8933,7 +9147,7 @@ type DB_SlotRateWeight struct { func (x *DB_SlotRateWeight) Reset() { *x = DB_SlotRateWeight{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[116] + mi := &file_pbdata_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8946,7 +9160,7 @@ func (x *DB_SlotRateWeight) String() string { func (*DB_SlotRateWeight) ProtoMessage() {} func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[116] + mi := &file_pbdata_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8959,7 +9173,7 @@ func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeight.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeight) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{116} + return file_pbdata_proto_rawDescGZIP(), []int{118} } func (x *DB_SlotRateWeight) GetId() int32 { @@ -9085,7 +9299,7 @@ type DB_SlotRateWeightArray struct { func (x *DB_SlotRateWeightArray) Reset() { *x = DB_SlotRateWeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[117] + mi := &file_pbdata_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9098,7 +9312,7 @@ func (x *DB_SlotRateWeightArray) String() string { func (*DB_SlotRateWeightArray) ProtoMessage() {} func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[117] + mi := &file_pbdata_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9111,7 +9325,7 @@ func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeightArray.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeightArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{117} + return file_pbdata_proto_rawDescGZIP(), []int{119} } func (x *DB_SlotRateWeightArray) GetArr() []*DB_SlotRateWeight { @@ -9136,7 +9350,7 @@ type DB_SystemChance struct { func (x *DB_SystemChance) Reset() { *x = DB_SystemChance{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[118] + mi := &file_pbdata_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9149,7 +9363,7 @@ func (x *DB_SystemChance) String() string { func (*DB_SystemChance) ProtoMessage() {} func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[118] + mi := &file_pbdata_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9162,7 +9376,7 @@ func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChance.ProtoReflect.Descriptor instead. func (*DB_SystemChance) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{118} + return file_pbdata_proto_rawDescGZIP(), []int{120} } func (x *DB_SystemChance) GetId() int32 { @@ -9211,7 +9425,7 @@ type DB_SystemChanceArray struct { func (x *DB_SystemChanceArray) Reset() { *x = DB_SystemChanceArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[119] + mi := &file_pbdata_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9224,7 +9438,7 @@ func (x *DB_SystemChanceArray) String() string { func (*DB_SystemChanceArray) ProtoMessage() {} func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[119] + mi := &file_pbdata_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9237,7 +9451,7 @@ func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChanceArray.ProtoReflect.Descriptor instead. func (*DB_SystemChanceArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{119} + return file_pbdata_proto_rawDescGZIP(), []int{121} } func (x *DB_SystemChanceArray) GetArr() []*DB_SystemChance { @@ -9253,20 +9467,19 @@ type DB_Task struct { unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - Order int32 `protobuf:"varint,2,opt,name=Order,proto3" json:"Order,omitempty"` - ActivityType int32 `protobuf:"varint,3,opt,name=ActivityType,proto3" json:"ActivityType,omitempty"` - TaskType int32 `protobuf:"varint,4,opt,name=TaskType,proto3" json:"TaskType,omitempty"` - TargetTimes int64 `protobuf:"varint,5,opt,name=TargetTimes,proto3" json:"TargetTimes,omitempty"` - FinishTimes int64 `protobuf:"varint,6,opt,name=FinishTimes,proto3" json:"FinishTimes,omitempty"` - Award map[int64]int64 `protobuf:"bytes,7,rep,name=Award,proto3" json:"Award,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - GameType int32 `protobuf:"varint,8,opt,name=GameType,proto3" json:"GameType,omitempty"` - Position []int32 `protobuf:"varint,9,rep,packed,name=Position,proto3" json:"Position,omitempty"` + ActivityType int32 `protobuf:"varint,2,opt,name=ActivityType,proto3" json:"ActivityType,omitempty"` + TaskType int32 `protobuf:"varint,3,opt,name=TaskType,proto3" json:"TaskType,omitempty"` + TargetTimes int64 `protobuf:"varint,4,opt,name=TargetTimes,proto3" json:"TargetTimes,omitempty"` + FinishTimes int64 `protobuf:"varint,5,opt,name=FinishTimes,proto3" json:"FinishTimes,omitempty"` + Award map[int64]int64 `protobuf:"bytes,6,rep,name=Award,proto3" json:"Award,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + GameType int32 `protobuf:"varint,7,opt,name=GameType,proto3" json:"GameType,omitempty"` + Position []int32 `protobuf:"varint,8,rep,packed,name=Position,proto3" json:"Position,omitempty"` } func (x *DB_Task) Reset() { *x = DB_Task{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[120] + mi := &file_pbdata_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9279,7 +9492,7 @@ func (x *DB_Task) String() string { func (*DB_Task) ProtoMessage() {} func (x *DB_Task) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[120] + mi := &file_pbdata_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9292,7 +9505,7 @@ func (x *DB_Task) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Task.ProtoReflect.Descriptor instead. func (*DB_Task) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{120} + return file_pbdata_proto_rawDescGZIP(), []int{122} } func (x *DB_Task) GetId() int32 { @@ -9302,13 +9515,6 @@ func (x *DB_Task) GetId() int32 { return 0 } -func (x *DB_Task) GetOrder() int32 { - if x != nil { - return x.Order - } - return 0 -} - func (x *DB_Task) GetActivityType() int32 { if x != nil { return x.ActivityType @@ -9369,7 +9575,7 @@ type DB_TaskArray struct { func (x *DB_TaskArray) Reset() { *x = DB_TaskArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[121] + mi := &file_pbdata_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9382,7 +9588,7 @@ func (x *DB_TaskArray) String() string { func (*DB_TaskArray) ProtoMessage() {} func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[121] + mi := &file_pbdata_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9395,7 +9601,7 @@ func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TaskArray.ProtoReflect.Descriptor instead. func (*DB_TaskArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{121} + return file_pbdata_proto_rawDescGZIP(), []int{123} } func (x *DB_TaskArray) GetArr() []*DB_Task { @@ -9422,7 +9628,7 @@ type DB_ThirdPlatformGameMapping struct { func (x *DB_ThirdPlatformGameMapping) Reset() { *x = DB_ThirdPlatformGameMapping{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[122] + mi := &file_pbdata_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9435,7 +9641,7 @@ func (x *DB_ThirdPlatformGameMapping) String() string { func (*DB_ThirdPlatformGameMapping) ProtoMessage() {} func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[122] + mi := &file_pbdata_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9448,7 +9654,7 @@ func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMapping.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMapping) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{122} + return file_pbdata_proto_rawDescGZIP(), []int{124} } func (x *DB_ThirdPlatformGameMapping) GetId() int32 { @@ -9511,7 +9717,7 @@ type DB_ThirdPlatformGameMappingArray struct { func (x *DB_ThirdPlatformGameMappingArray) Reset() { *x = DB_ThirdPlatformGameMappingArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[123] + mi := &file_pbdata_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9524,7 +9730,7 @@ func (x *DB_ThirdPlatformGameMappingArray) String() string { func (*DB_ThirdPlatformGameMappingArray) ProtoMessage() {} func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[123] + mi := &file_pbdata_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9537,7 +9743,7 @@ func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMappingArray.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMappingArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{123} + return file_pbdata_proto_rawDescGZIP(), []int{125} } func (x *DB_ThirdPlatformGameMappingArray) GetArr() []*DB_ThirdPlatformGameMapping { @@ -9560,7 +9766,7 @@ type DB_Tips struct { func (x *DB_Tips) Reset() { *x = DB_Tips{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[124] + mi := &file_pbdata_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9573,7 +9779,7 @@ func (x *DB_Tips) String() string { func (*DB_Tips) ProtoMessage() {} func (x *DB_Tips) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[124] + mi := &file_pbdata_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9586,7 +9792,7 @@ func (x *DB_Tips) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Tips.ProtoReflect.Descriptor instead. func (*DB_Tips) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{124} + return file_pbdata_proto_rawDescGZIP(), []int{126} } func (x *DB_Tips) GetId() int32 { @@ -9621,7 +9827,7 @@ type DB_TipsArray struct { func (x *DB_TipsArray) Reset() { *x = DB_TipsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[125] + mi := &file_pbdata_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9634,7 +9840,7 @@ func (x *DB_TipsArray) String() string { func (*DB_TipsArray) ProtoMessage() {} func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[125] + mi := &file_pbdata_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9647,7 +9853,7 @@ func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TipsArray.ProtoReflect.Descriptor instead. func (*DB_TipsArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{125} + return file_pbdata_proto_rawDescGZIP(), []int{127} } func (x *DB_TipsArray) GetArr() []*DB_Tips { @@ -9686,7 +9892,7 @@ type DB_VIP struct { func (x *DB_VIP) Reset() { *x = DB_VIP{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[126] + mi := &file_pbdata_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9699,7 +9905,7 @@ func (x *DB_VIP) String() string { func (*DB_VIP) ProtoMessage() {} func (x *DB_VIP) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[126] + mi := &file_pbdata_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9712,7 +9918,7 @@ func (x *DB_VIP) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIP.ProtoReflect.Descriptor instead. func (*DB_VIP) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{126} + return file_pbdata_proto_rawDescGZIP(), []int{128} } func (x *DB_VIP) GetId() int32 { @@ -9859,7 +10065,7 @@ type DB_VIPArray struct { func (x *DB_VIPArray) Reset() { *x = DB_VIPArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[127] + mi := &file_pbdata_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9872,7 +10078,7 @@ func (x *DB_VIPArray) String() string { func (*DB_VIPArray) ProtoMessage() {} func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[127] + mi := &file_pbdata_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9885,7 +10091,7 @@ func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPArray.ProtoReflect.Descriptor instead. func (*DB_VIPArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{127} + return file_pbdata_proto_rawDescGZIP(), []int{129} } func (x *DB_VIPArray) GetArr() []*DB_VIP { @@ -10735,466 +10941,503 @@ var file_pbdata_proto_rawDesc = []byte{ 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf1, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, - 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, - 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, - 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, - 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x1a, 0x3a, - 0x0a, 0x0c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x61, - 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, - 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x76, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, - 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4b, 0x0a, 0x19, - 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, 0x42, - 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, - 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, - 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, - 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x12, - 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, - 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, - 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, - 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, - 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x4e, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, - 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, - 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, - 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, - 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x1e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x3a, 0x0a, 0x0c, 0x44, - 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, - 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x52, - 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x2d, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, - 0x65, 0x42, 0x6f, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x76, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, + 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4b, 0x0a, + 0x19, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, + 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, + 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, + 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x3f, 0x0a, 0x13, 0x44, + 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, + 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x01, 0x0a, + 0x12, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, + 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, + 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4c, 0x65, + 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, + 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x4e, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x4e, - 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0x31, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, + 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, + 0x63, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, + 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x1e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, + 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x3a, 0x0a, 0x0c, + 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, + 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x2d, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, - 0x69, 0x72, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0xb0, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, - 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, - 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, - 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, - 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0xa2, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 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, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, - 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x64, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x64, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x32, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, - 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x33, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, - 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, - 0x61, 0x74, 0x65, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, - 0x61, 0x74, 0x65, 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, - 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x6d, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x48, - 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x05, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, - 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, - 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, - 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, - 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, - 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, - 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, - 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x72, 0x64, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, - 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, 0x0a, 0x12, - 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, 0x09, 0x44, - 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x42, - 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0x97, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x04, 0x43, - 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x6f, - 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, - 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x73, - 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x4e, 0x61, + 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, + 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x31, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, + 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, + 0x47, 0x69, 0x72, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0xb0, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x41, + 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, + 0x4d, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, + 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0xa2, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 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, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, + 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x64, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, + 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x12, 0x1a, 0x0a, + 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, + 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x12, 0x1a, 0x0a, + 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x69, + 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, + 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, + 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, + 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfb, + 0x05, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, + 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, + 0x70, 0x45, 0x78, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x47, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x2e, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, + 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, + 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, + 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, + 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x38, 0x0a, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, + 0x72, 0x6f, 0x70, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, + 0x61, 0x6d, 0x65, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x14, 0x44, - 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, - 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x46, - 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, - 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, - 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, - 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xff, 0x01, 0x0a, - 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, - 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x22, 0x3d, - 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, - 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4d, 0x0a, - 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, - 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x65, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x17, - 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, - 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, - 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, - 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, - 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, - 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, - 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, - 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, - 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, - 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, - 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, - 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, - 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, - 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, - 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, - 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, - 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, - 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, - 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, - 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x42, - 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, - 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd7, 0x02, 0x0a, - 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x22, - 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, - 0x73, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, - 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, - 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, - 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, - 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, - 0x63, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, - 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, - 0x44, 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, - 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, - 0x73, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0xe0, 0x05, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, + 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x14, + 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, + 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0x30, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, - 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, - 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, - 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, - 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, - 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, - 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, - 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3d, - 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, - 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, - 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, - 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, + 0x70, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, + 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x6d, + 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, + 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, + 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x3d, 0x0a, + 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x05, 0x0a, + 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, + 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x55, + 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, + 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, + 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, + 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, + 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x75, + 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, + 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x22, + 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x10, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, + 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, + 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, + 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, + 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, 0x09, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, + 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x4f, + 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6f, + 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x97, 0x02, 0x0a, 0x0f, 0x44, 0x42, + 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, + 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, + 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, + 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, + 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x45, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, 0x3b, + 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, + 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, 0x44, + 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, + 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x31, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x31, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, + 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, + 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x53, + 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, + 0x6f, 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, + 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, + 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, + 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, + 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, + 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, + 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, + 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, + 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, + 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, + 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, + 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, + 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, + 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, + 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, + 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, + 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, + 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, + 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, + 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, + 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, + 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, + 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, + 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, + 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0xc1, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x38, + 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, + 0x61, 0x73, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, + 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, + 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, + 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, + 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, + 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, + 0x72, 0x64, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, + 0x64, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, + 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, + 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x44, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, + 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xe0, 0x05, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, + 0x50, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, + 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, + 0x45, 0x78, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, + 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, + 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, + 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, + 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, + 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, + 0x50, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, + 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, + 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, + 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, + 0x44, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, + 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, + 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, + 0x56, 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, + 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, + 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -11209,7 +11452,7 @@ func file_pbdata_proto_rawDescGZIP() []byte { return file_pbdata_proto_rawDescData } -var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 137) +var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 139) var file_pbdata_proto_goTypes = []interface{}{ (*DB_ActSign)(nil), // 0: server.DB_ActSign (*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray @@ -11285,69 +11528,71 @@ var file_pbdata_proto_goTypes = []interface{}{ (*DB_Game_RoleArray)(nil), // 71: server.DB_Game_RoleArray (*DB_GiftBox)(nil), // 72: server.DB_GiftBox (*DB_GiftBoxArray)(nil), // 73: server.DB_GiftBoxArray - (*DB_GiftCard)(nil), // 74: server.DB_GiftCard - (*DB_GiftCardArray)(nil), // 75: server.DB_GiftCardArray - (*DB_IceAgeElementRate)(nil), // 76: server.DB_IceAgeElementRate - (*DB_IceAgeElementRateArray)(nil), // 77: server.DB_IceAgeElementRateArray - (*DB_Legend_Odds)(nil), // 78: server.DB_Legend_Odds - (*DB_Legend_OddsArray)(nil), // 79: server.DB_Legend_OddsArray - (*DB_Legend_TurnRate)(nil), // 80: server.DB_Legend_TurnRate - (*DB_Legend_TurnRateArray)(nil), // 81: server.DB_Legend_TurnRateArray - (*DB_Legend_Weight)(nil), // 82: server.DB_Legend_Weight - (*DB_Legend_WeightArray)(nil), // 83: server.DB_Legend_WeightArray - (*DB_Legend_WeightCondition)(nil), // 84: server.DB_Legend_WeightCondition - (*DB_Legend_WeightConditionArray)(nil), // 85: server.DB_Legend_WeightConditionArray - (*DB_MatchRank)(nil), // 86: server.DB_MatchRank - (*DB_MatchRankArray)(nil), // 87: server.DB_MatchRankArray - (*DB_Name)(nil), // 88: server.DB_Name - (*DB_NameArray)(nil), // 89: server.DB_NameArray - (*DB_NameBoy)(nil), // 90: server.DB_NameBoy - (*DB_NameBoyArray)(nil), // 91: server.DB_NameBoyArray - (*DB_NameGirl)(nil), // 92: server.DB_NameGirl - (*DB_NameGirlArray)(nil), // 93: server.DB_NameGirlArray - (*DB_NewPlayer)(nil), // 94: server.DB_NewPlayer - (*DB_NewPlayerArray)(nil), // 95: server.DB_NewPlayerArray - (*DB_PhoneLottery)(nil), // 96: server.DB_PhoneLottery - (*DB_PhoneLotteryArray)(nil), // 97: server.DB_PhoneLotteryArray - (*DB_PlayerExp)(nil), // 98: server.DB_PlayerExp - (*DB_PlayerExpArray)(nil), // 99: server.DB_PlayerExpArray - (*DB_PlayerInfo)(nil), // 100: server.DB_PlayerInfo - (*DB_PlayerInfoArray)(nil), // 101: server.DB_PlayerInfoArray - (*DB_PlayerType)(nil), // 102: server.DB_PlayerType - (*DB_PlayerTypeArray)(nil), // 103: server.DB_PlayerTypeArray - (*DB_PotOdd)(nil), // 104: server.DB_PotOdd - (*DB_PotOddArray)(nil), // 105: server.DB_PotOddArray - (*DB_PropExchange)(nil), // 106: server.DB_PropExchange - (*DB_PropExchangeArray)(nil), // 107: server.DB_PropExchangeArray - (*DB_RankCycle)(nil), // 108: server.DB_RankCycle - (*DB_RankCycleArray)(nil), // 109: server.DB_RankCycleArray - (*DB_RankLevel)(nil), // 110: server.DB_RankLevel - (*DB_RankLevelArray)(nil), // 111: server.DB_RankLevelArray - (*DB_RankReward)(nil), // 112: server.DB_RankReward - (*DB_RankRewardArray)(nil), // 113: server.DB_RankRewardArray - (*DB_Sensitive_Words)(nil), // 114: server.DB_Sensitive_Words - (*DB_Sensitive_WordsArray)(nil), // 115: server.DB_Sensitive_WordsArray - (*DB_SlotRateWeight)(nil), // 116: server.DB_SlotRateWeight - (*DB_SlotRateWeightArray)(nil), // 117: server.DB_SlotRateWeightArray - (*DB_SystemChance)(nil), // 118: server.DB_SystemChance - (*DB_SystemChanceArray)(nil), // 119: server.DB_SystemChanceArray - (*DB_Task)(nil), // 120: server.DB_Task - (*DB_TaskArray)(nil), // 121: server.DB_TaskArray - (*DB_ThirdPlatformGameMapping)(nil), // 122: server.DB_ThirdPlatformGameMapping - (*DB_ThirdPlatformGameMappingArray)(nil), // 123: server.DB_ThirdPlatformGameMappingArray - (*DB_Tips)(nil), // 124: server.DB_Tips - (*DB_TipsArray)(nil), // 125: server.DB_TipsArray - (*DB_VIP)(nil), // 126: server.DB_VIP - (*DB_VIPArray)(nil), // 127: server.DB_VIPArray - nil, // 128: server.DB_CollectBox.ItemIDEntry - nil, // 129: server.DB_GiftBox.ItemIDEntry - nil, // 130: server.DB_GiftCard.RewardsEntry - nil, // 131: server.DB_GiftCard.DayRewardsEntry - nil, // 132: server.DB_PropExchange.CostEntry - nil, // 133: server.DB_PropExchange.GainEntry - nil, // 134: server.DB_Task.AwardEntry - nil, // 135: server.DB_VIP.Privilege7Entry - nil, // 136: server.DB_VIP.AwardEntry + (*DB_IceAgeElementRate)(nil), // 74: server.DB_IceAgeElementRate + (*DB_IceAgeElementRateArray)(nil), // 75: server.DB_IceAgeElementRateArray + (*DB_Legend_Odds)(nil), // 76: server.DB_Legend_Odds + (*DB_Legend_OddsArray)(nil), // 77: server.DB_Legend_OddsArray + (*DB_Legend_TurnRate)(nil), // 78: server.DB_Legend_TurnRate + (*DB_Legend_TurnRateArray)(nil), // 79: server.DB_Legend_TurnRateArray + (*DB_Legend_Weight)(nil), // 80: server.DB_Legend_Weight + (*DB_Legend_WeightArray)(nil), // 81: server.DB_Legend_WeightArray + (*DB_Legend_WeightCondition)(nil), // 82: server.DB_Legend_WeightCondition + (*DB_Legend_WeightConditionArray)(nil), // 83: server.DB_Legend_WeightConditionArray + (*DB_MatchRank)(nil), // 84: server.DB_MatchRank + (*DB_MatchRankArray)(nil), // 85: server.DB_MatchRankArray + (*DB_Name)(nil), // 86: server.DB_Name + (*DB_NameArray)(nil), // 87: server.DB_NameArray + (*DB_NameBoy)(nil), // 88: server.DB_NameBoy + (*DB_NameBoyArray)(nil), // 89: server.DB_NameBoyArray + (*DB_NameGirl)(nil), // 90: server.DB_NameGirl + (*DB_NameGirlArray)(nil), // 91: server.DB_NameGirlArray + (*DB_NewPlayer)(nil), // 92: server.DB_NewPlayer + (*DB_NewPlayerArray)(nil), // 93: server.DB_NewPlayerArray + (*DB_PhoneLottery)(nil), // 94: server.DB_PhoneLottery + (*DB_PhoneLotteryArray)(nil), // 95: server.DB_PhoneLotteryArray + (*DB_PigBank_Diamond)(nil), // 96: server.DB_PigBank_Diamond + (*DB_PigBank_DiamondArray)(nil), // 97: server.DB_PigBank_DiamondArray + (*DB_Pigbank_Prop)(nil), // 98: server.DB_Pigbank_Prop + (*DB_Pigbank_PropArray)(nil), // 99: server.DB_Pigbank_PropArray + (*DB_PlayerExp)(nil), // 100: server.DB_PlayerExp + (*DB_PlayerExpArray)(nil), // 101: server.DB_PlayerExpArray + (*DB_PlayerInfo)(nil), // 102: server.DB_PlayerInfo + (*DB_PlayerInfoArray)(nil), // 103: server.DB_PlayerInfoArray + (*DB_PlayerType)(nil), // 104: server.DB_PlayerType + (*DB_PlayerTypeArray)(nil), // 105: server.DB_PlayerTypeArray + (*DB_PotOdd)(nil), // 106: server.DB_PotOdd + (*DB_PotOddArray)(nil), // 107: server.DB_PotOddArray + (*DB_PropExchange)(nil), // 108: server.DB_PropExchange + (*DB_PropExchangeArray)(nil), // 109: server.DB_PropExchangeArray + (*DB_RankCycle)(nil), // 110: server.DB_RankCycle + (*DB_RankCycleArray)(nil), // 111: server.DB_RankCycleArray + (*DB_RankLevel)(nil), // 112: server.DB_RankLevel + (*DB_RankLevelArray)(nil), // 113: server.DB_RankLevelArray + (*DB_RankReward)(nil), // 114: server.DB_RankReward + (*DB_RankRewardArray)(nil), // 115: server.DB_RankRewardArray + (*DB_Sensitive_Words)(nil), // 116: server.DB_Sensitive_Words + (*DB_Sensitive_WordsArray)(nil), // 117: server.DB_Sensitive_WordsArray + (*DB_SlotRateWeight)(nil), // 118: server.DB_SlotRateWeight + (*DB_SlotRateWeightArray)(nil), // 119: server.DB_SlotRateWeightArray + (*DB_SystemChance)(nil), // 120: server.DB_SystemChance + (*DB_SystemChanceArray)(nil), // 121: server.DB_SystemChanceArray + (*DB_Task)(nil), // 122: server.DB_Task + (*DB_TaskArray)(nil), // 123: server.DB_TaskArray + (*DB_ThirdPlatformGameMapping)(nil), // 124: server.DB_ThirdPlatformGameMapping + (*DB_ThirdPlatformGameMappingArray)(nil), // 125: server.DB_ThirdPlatformGameMappingArray + (*DB_Tips)(nil), // 126: server.DB_Tips + (*DB_TipsArray)(nil), // 127: server.DB_TipsArray + (*DB_VIP)(nil), // 128: server.DB_VIP + (*DB_VIPArray)(nil), // 129: server.DB_VIPArray + nil, // 130: server.DB_CollectBox.ItemIDEntry + nil, // 131: server.DB_GiftBox.ItemIDEntry + nil, // 132: server.DB_Pigbank_Prop.Privilege7Entry + nil, // 133: server.DB_Pigbank_Prop.AwardEntry + nil, // 134: server.DB_PropExchange.CostEntry + nil, // 135: server.DB_PropExchange.GainEntry + nil, // 136: server.DB_Task.AwardEntry + nil, // 137: server.DB_VIP.Privilege7Entry + nil, // 138: server.DB_VIP.AwardEntry } var file_pbdata_proto_depIdxs = []int32{ 0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign @@ -11362,7 +11607,7 @@ var file_pbdata_proto_depIdxs = []int32{ 18, // 9: server.DB_ChessMatchRulesArray.Arr:type_name -> server.DB_ChessMatchRules 20, // 10: server.DB_ChessRankArray.Arr:type_name -> server.DB_ChessRank 22, // 11: server.DB_ClientVerArray.Arr:type_name -> server.DB_ClientVer - 128, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry + 130, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry 24, // 13: server.DB_CollectBoxArray.Arr:type_name -> server.DB_CollectBox 26, // 14: server.DB_CollectBoxGainArray.Arr:type_name -> server.DB_CollectBoxGain 28, // 15: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch @@ -11387,47 +11632,48 @@ var file_pbdata_proto_depIdxs = []int32{ 66, // 34: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction 68, // 35: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet 70, // 36: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role - 129, // 37: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry + 131, // 37: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry 72, // 38: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox - 130, // 39: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry - 131, // 40: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry - 74, // 41: server.DB_GiftCardArray.Arr:type_name -> server.DB_GiftCard - 76, // 42: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate - 78, // 43: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds - 80, // 44: server.DB_Legend_TurnRateArray.Arr:type_name -> server.DB_Legend_TurnRate - 82, // 45: server.DB_Legend_WeightArray.Arr:type_name -> server.DB_Legend_Weight - 84, // 46: server.DB_Legend_WeightConditionArray.Arr:type_name -> server.DB_Legend_WeightCondition - 86, // 47: server.DB_MatchRankArray.Arr:type_name -> server.DB_MatchRank - 88, // 48: server.DB_NameArray.Arr:type_name -> server.DB_Name - 90, // 49: server.DB_NameBoyArray.Arr:type_name -> server.DB_NameBoy - 92, // 50: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl - 94, // 51: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer - 96, // 52: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery - 98, // 53: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp - 100, // 54: server.DB_PlayerInfoArray.Arr:type_name -> server.DB_PlayerInfo - 102, // 55: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType - 104, // 56: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd - 132, // 57: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry - 133, // 58: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry - 106, // 59: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange - 108, // 60: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 110, // 61: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 112, // 62: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 114, // 63: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 116, // 64: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 118, // 65: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 134, // 66: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 120, // 67: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 122, // 68: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 124, // 69: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 135, // 70: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 136, // 71: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 126, // 72: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 73, // [73:73] is the sub-list for method output_type - 73, // [73:73] is the sub-list for method input_type - 73, // [73:73] is the sub-list for extension type_name - 73, // [73:73] is the sub-list for extension extendee - 0, // [0:73] is the sub-list for field type_name + 74, // 39: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate + 76, // 40: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds + 78, // 41: server.DB_Legend_TurnRateArray.Arr:type_name -> server.DB_Legend_TurnRate + 80, // 42: server.DB_Legend_WeightArray.Arr:type_name -> server.DB_Legend_Weight + 82, // 43: server.DB_Legend_WeightConditionArray.Arr:type_name -> server.DB_Legend_WeightCondition + 84, // 44: server.DB_MatchRankArray.Arr:type_name -> server.DB_MatchRank + 86, // 45: server.DB_NameArray.Arr:type_name -> server.DB_Name + 88, // 46: server.DB_NameBoyArray.Arr:type_name -> server.DB_NameBoy + 90, // 47: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl + 92, // 48: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer + 94, // 49: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery + 96, // 50: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond + 132, // 51: server.DB_Pigbank_Prop.Privilege7:type_name -> server.DB_Pigbank_Prop.Privilege7Entry + 133, // 52: server.DB_Pigbank_Prop.Award:type_name -> server.DB_Pigbank_Prop.AwardEntry + 98, // 53: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop + 100, // 54: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp + 102, // 55: server.DB_PlayerInfoArray.Arr:type_name -> server.DB_PlayerInfo + 104, // 56: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType + 106, // 57: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd + 134, // 58: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry + 135, // 59: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry + 108, // 60: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 110, // 61: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 112, // 62: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 114, // 63: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 116, // 64: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 118, // 65: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 120, // 66: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 136, // 67: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 122, // 68: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 124, // 69: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 126, // 70: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 137, // 71: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 138, // 72: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 128, // 73: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 74, // [74:74] is the sub-list for method output_type + 74, // [74:74] is the sub-list for method input_type + 74, // [74:74] is the sub-list for extension type_name + 74, // [74:74] is the sub-list for extension extendee + 0, // [0:74] is the sub-list for field type_name } func init() { file_pbdata_proto_init() } @@ -12325,30 +12571,6 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftCard); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pbdata_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftCardArray); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pbdata_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_IceAgeElementRate); i { case 0: return &v.state @@ -12360,7 +12582,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_IceAgeElementRateArray); i { case 0: return &v.state @@ -12372,7 +12594,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Legend_Odds); i { case 0: return &v.state @@ -12384,7 +12606,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Legend_OddsArray); i { case 0: return &v.state @@ -12396,7 +12618,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Legend_TurnRate); i { case 0: return &v.state @@ -12408,7 +12630,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Legend_TurnRateArray); i { case 0: return &v.state @@ -12420,7 +12642,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Legend_Weight); i { case 0: return &v.state @@ -12432,7 +12654,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Legend_WeightArray); i { case 0: return &v.state @@ -12444,7 +12666,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Legend_WeightCondition); i { case 0: return &v.state @@ -12456,7 +12678,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Legend_WeightConditionArray); i { case 0: return &v.state @@ -12468,7 +12690,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_MatchRank); i { case 0: return &v.state @@ -12480,7 +12702,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_MatchRankArray); i { case 0: return &v.state @@ -12492,7 +12714,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_Name); i { case 0: return &v.state @@ -12504,7 +12726,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_NameArray); i { case 0: return &v.state @@ -12516,7 +12738,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_NameBoy); i { case 0: return &v.state @@ -12528,7 +12750,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_NameBoyArray); i { case 0: return &v.state @@ -12540,7 +12762,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_NameGirl); i { case 0: return &v.state @@ -12552,7 +12774,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_NameGirlArray); i { case 0: return &v.state @@ -12564,7 +12786,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_NewPlayer); i { case 0: return &v.state @@ -12576,7 +12798,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_NewPlayerArray); i { case 0: return &v.state @@ -12588,7 +12810,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_PhoneLottery); i { case 0: return &v.state @@ -12600,7 +12822,7 @@ func file_pbdata_proto_init() { return nil } } - file_pbdata_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_pbdata_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_PhoneLotteryArray); i { case 0: return &v.state @@ -12612,8 +12834,32 @@ func file_pbdata_proto_init() { return nil } } + file_pbdata_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_PigBank_Diamond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_PigBank_DiamondArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } file_pbdata_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerExp); i { + switch v := v.(*DB_Pigbank_Prop); i { case 0: return &v.state case 1: @@ -12625,7 +12871,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerExpArray); i { + switch v := v.(*DB_Pigbank_PropArray); i { case 0: return &v.state case 1: @@ -12637,7 +12883,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerInfo); i { + switch v := v.(*DB_PlayerExp); i { case 0: return &v.state case 1: @@ -12649,7 +12895,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerInfoArray); i { + switch v := v.(*DB_PlayerExpArray); i { case 0: return &v.state case 1: @@ -12661,7 +12907,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerType); i { + switch v := v.(*DB_PlayerInfo); i { case 0: return &v.state case 1: @@ -12673,7 +12919,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerTypeArray); i { + switch v := v.(*DB_PlayerInfoArray); i { case 0: return &v.state case 1: @@ -12685,7 +12931,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PotOdd); i { + switch v := v.(*DB_PlayerType); i { case 0: return &v.state case 1: @@ -12697,7 +12943,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PotOddArray); i { + switch v := v.(*DB_PlayerTypeArray); i { case 0: return &v.state case 1: @@ -12709,7 +12955,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PropExchange); i { + switch v := v.(*DB_PotOdd); i { case 0: return &v.state case 1: @@ -12721,7 +12967,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PropExchangeArray); i { + switch v := v.(*DB_PotOddArray); i { case 0: return &v.state case 1: @@ -12733,7 +12979,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankCycle); i { + switch v := v.(*DB_PropExchange); i { case 0: return &v.state case 1: @@ -12745,7 +12991,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankCycleArray); i { + switch v := v.(*DB_PropExchangeArray); i { case 0: return &v.state case 1: @@ -12757,7 +13003,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankLevel); i { + switch v := v.(*DB_RankCycle); i { case 0: return &v.state case 1: @@ -12769,7 +13015,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankLevelArray); i { + switch v := v.(*DB_RankCycleArray); i { case 0: return &v.state case 1: @@ -12781,7 +13027,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankReward); i { + switch v := v.(*DB_RankLevel); i { case 0: return &v.state case 1: @@ -12793,7 +13039,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankRewardArray); i { + switch v := v.(*DB_RankLevelArray); i { case 0: return &v.state case 1: @@ -12805,7 +13051,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Sensitive_Words); i { + switch v := v.(*DB_RankReward); i { case 0: return &v.state case 1: @@ -12817,7 +13063,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Sensitive_WordsArray); i { + switch v := v.(*DB_RankRewardArray); i { case 0: return &v.state case 1: @@ -12829,7 +13075,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeight); i { + switch v := v.(*DB_Sensitive_Words); i { case 0: return &v.state case 1: @@ -12841,7 +13087,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeightArray); i { + switch v := v.(*DB_Sensitive_WordsArray); i { case 0: return &v.state case 1: @@ -12853,7 +13099,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChance); i { + switch v := v.(*DB_SlotRateWeight); i { case 0: return &v.state case 1: @@ -12865,7 +13111,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChanceArray); i { + switch v := v.(*DB_SlotRateWeightArray); i { case 0: return &v.state case 1: @@ -12877,7 +13123,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Task); i { + switch v := v.(*DB_SystemChance); i { case 0: return &v.state case 1: @@ -12889,7 +13135,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TaskArray); i { + switch v := v.(*DB_SystemChanceArray); i { case 0: return &v.state case 1: @@ -12901,7 +13147,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMapping); i { + switch v := v.(*DB_Task); i { case 0: return &v.state case 1: @@ -12913,7 +13159,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMappingArray); i { + switch v := v.(*DB_TaskArray); i { case 0: return &v.state case 1: @@ -12925,7 +13171,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Tips); i { + switch v := v.(*DB_ThirdPlatformGameMapping); i { case 0: return &v.state case 1: @@ -12937,7 +13183,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TipsArray); i { + switch v := v.(*DB_ThirdPlatformGameMappingArray); i { case 0: return &v.state case 1: @@ -12949,7 +13195,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIP); i { + switch v := v.(*DB_Tips); i { case 0: return &v.state case 1: @@ -12961,6 +13207,30 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_TipsArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_VIP); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_VIPArray); i { case 0: return &v.state @@ -12979,7 +13249,7 @@ func file_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 137, + NumMessages: 139, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index b70f796..0150a56 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -1267,6 +1267,68 @@ message DB_PhoneLotteryArray { repeated DB_PhoneLottery Arr = 1; } +message DB_PigBank_Diamond { + + int32 Id = 1; + + int32 BuyCountMin = 2; + + int32 BuyCountMax = 3; + + int32 CostDiamond = 4; + +} + +message DB_PigBank_DiamondArray { + repeated DB_PigBank_Diamond Arr = 1; +} + +message DB_Pigbank_Prop { + + int32 Id = 1; + + string Name = 2; + + int32 Count = 3; + + int32 VipExp = 4; + + repeated int32 Privilege1 = 5; + + repeated int32 Privilege2 = 6; + + int32 ShopId2 = 7; + + repeated int32 Privilege3 = 8; + + int32 Privilege4 = 9; + + int32 Privilege5 = 10; + + int32 Privilege6 = 11; + + map Privilege7 = 12; + + int32 Privilege7Price = 13; + + int32 ShopId7 = 14; + + int32 Privilege8 = 15; + + repeated int32 Param = 16; + + repeated int32 RewardOutlineID = 17; + + map Award = 18; + + repeated string ParamName = 19; + +} + +message DB_Pigbank_PropArray { + repeated DB_Pigbank_Prop Arr = 1; +} + message DB_PlayerExp { int32 Id = 1; diff --git a/protocol/server/server.pb.go b/protocol/server/server.pb.go index 24141c6..d2dc652 100644 --- a/protocol/server/server.pb.go +++ b/protocol/server/server.pb.go @@ -1223,6 +1223,61 @@ func (x *WGGraceDestroyScene) GetIds() []int32 { return nil } +type ItemParam struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemNum int64 `protobuf:"varint,1,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` // 物品数量 + ExpireTime int64 `protobuf:"varint,2,opt,name=ExpireTime,proto3" json:"ExpireTime,omitempty"` //有效期截止时间 +} + +func (x *ItemParam) Reset() { + *x = ItemParam{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ItemParam) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ItemParam) ProtoMessage() {} + +func (x *ItemParam) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ItemParam.ProtoReflect.Descriptor instead. +func (*ItemParam) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{12} +} + +func (x *ItemParam) GetItemNum() int64 { + if x != nil { + return x.ItemNum + } + return 0 +} + +func (x *ItemParam) GetExpireTime() int64 { + if x != nil { + return x.ExpireTime + } + return 0 +} + type RebateTask struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1235,7 +1290,7 @@ type RebateTask struct { func (x *RebateTask) Reset() { *x = RebateTask{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[12] + mi := &file_server_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1248,7 +1303,7 @@ func (x *RebateTask) String() string { func (*RebateTask) ProtoMessage() {} func (x *RebateTask) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[12] + mi := &file_server_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1261,7 +1316,7 @@ func (x *RebateTask) ProtoReflect() protoreflect.Message { // Deprecated: Use RebateTask.ProtoReflect.Descriptor instead. func (*RebateTask) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{12} + return file_server_proto_rawDescGZIP(), []int{13} } func (x *RebateTask) GetRebateSwitch() bool { @@ -1285,31 +1340,31 @@ type WGPlayerEnter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Sid int64 `protobuf:"varint,1,opt,name=Sid,proto3" json:"Sid,omitempty"` - GateSid int64 `protobuf:"varint,2,opt,name=GateSid,proto3" json:"GateSid,omitempty"` - SceneId int32 `protobuf:"varint,3,opt,name=SceneId,proto3" json:"SceneId,omitempty"` - PlayerData []byte `protobuf:"bytes,4,opt,name=PlayerData,proto3" json:"PlayerData,omitempty"` - AgentCode string `protobuf:"bytes,5,opt,name=AgentCode,proto3" json:"AgentCode,omitempty"` - TakeCoin int64 `protobuf:"varint,6,opt,name=TakeCoin,proto3" json:"TakeCoin,omitempty"` //携带金币 - IsLoaded bool `protobuf:"varint,7,opt,name=IsLoaded,proto3" json:"IsLoaded,omitempty"` //加载完成 - IsQM bool `protobuf:"varint,8,opt,name=IsQM,proto3" json:"IsQM,omitempty"` //是否是全民推广用户 - ExpectLeaveCoin int64 `protobuf:"varint,9,opt,name=ExpectLeaveCoin,proto3" json:"ExpectLeaveCoin,omitempty"` //期望离场时的金币[机器人用] - ExpectGameTimes int32 `protobuf:"varint,10,opt,name=ExpectGameTimes,proto3" json:"ExpectGameTimes,omitempty"` //期望进行的游戏局数[机器人用] - IParams []*PlayerIParam `protobuf:"bytes,11,rep,name=IParams,proto3" json:"IParams,omitempty"` - SParams []*PlayerSParam `protobuf:"bytes,12,rep,name=SParams,proto3" json:"SParams,omitempty"` - CParams []*PlayerCParam `protobuf:"bytes,13,rep,name=CParams,proto3" json:"CParams,omitempty"` - SnId int32 `protobuf:"varint,14,opt,name=SnId,proto3" json:"SnId,omitempty"` - SingleAdjust []byte `protobuf:"bytes,15,opt,name=SingleAdjust,proto3" json:"SingleAdjust,omitempty"` //单控数据 - Pos int32 `protobuf:"varint,16,opt,name=Pos,proto3" json:"Pos,omitempty"` - Items map[int32]int64 `protobuf:"bytes,17,rep,name=Items,proto3" json:"Items,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - MatchParams []int32 `protobuf:"varint,18,rep,packed,name=MatchParams,proto3" json:"MatchParams,omitempty"` //比赛参数 - RankScore map[int32]int64 `protobuf:"bytes,19,rep,name=RankScore,proto3" json:"RankScore,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 排位积分 + Sid int64 `protobuf:"varint,1,opt,name=Sid,proto3" json:"Sid,omitempty"` + GateSid int64 `protobuf:"varint,2,opt,name=GateSid,proto3" json:"GateSid,omitempty"` + SceneId int32 `protobuf:"varint,3,opt,name=SceneId,proto3" json:"SceneId,omitempty"` + PlayerData []byte `protobuf:"bytes,4,opt,name=PlayerData,proto3" json:"PlayerData,omitempty"` + AgentCode string `protobuf:"bytes,5,opt,name=AgentCode,proto3" json:"AgentCode,omitempty"` + TakeCoin int64 `protobuf:"varint,6,opt,name=TakeCoin,proto3" json:"TakeCoin,omitempty"` //携带金币 + IsLoaded bool `protobuf:"varint,7,opt,name=IsLoaded,proto3" json:"IsLoaded,omitempty"` //加载完成 + IsQM bool `protobuf:"varint,8,opt,name=IsQM,proto3" json:"IsQM,omitempty"` //是否是全民推广用户 + ExpectLeaveCoin int64 `protobuf:"varint,9,opt,name=ExpectLeaveCoin,proto3" json:"ExpectLeaveCoin,omitempty"` //期望离场时的金币[机器人用] + ExpectGameTimes int32 `protobuf:"varint,10,opt,name=ExpectGameTimes,proto3" json:"ExpectGameTimes,omitempty"` //期望进行的游戏局数[机器人用] + IParams []*PlayerIParam `protobuf:"bytes,11,rep,name=IParams,proto3" json:"IParams,omitempty"` + SParams []*PlayerSParam `protobuf:"bytes,12,rep,name=SParams,proto3" json:"SParams,omitempty"` + CParams []*PlayerCParam `protobuf:"bytes,13,rep,name=CParams,proto3" json:"CParams,omitempty"` + SnId int32 `protobuf:"varint,14,opt,name=SnId,proto3" json:"SnId,omitempty"` + SingleAdjust []byte `protobuf:"bytes,15,opt,name=SingleAdjust,proto3" json:"SingleAdjust,omitempty"` //单控数据 + Pos int32 `protobuf:"varint,16,opt,name=Pos,proto3" json:"Pos,omitempty"` + Items map[int32]*ItemParam `protobuf:"bytes,17,rep,name=Items,proto3" json:"Items,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MatchParams []int32 `protobuf:"varint,18,rep,packed,name=MatchParams,proto3" json:"MatchParams,omitempty"` //比赛参数 + RankScore map[int32]int64 `protobuf:"bytes,19,rep,name=RankScore,proto3" json:"RankScore,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 排位积分 } func (x *WGPlayerEnter) Reset() { *x = WGPlayerEnter{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[13] + mi := &file_server_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1322,7 +1377,7 @@ func (x *WGPlayerEnter) String() string { func (*WGPlayerEnter) ProtoMessage() {} func (x *WGPlayerEnter) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[13] + mi := &file_server_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1335,7 +1390,7 @@ func (x *WGPlayerEnter) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerEnter.ProtoReflect.Descriptor instead. func (*WGPlayerEnter) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{13} + return file_server_proto_rawDescGZIP(), []int{14} } func (x *WGPlayerEnter) GetSid() int64 { @@ -1450,7 +1505,7 @@ func (x *WGPlayerEnter) GetPos() int32 { return 0 } -func (x *WGPlayerEnter) GetItems() map[int32]int64 { +func (x *WGPlayerEnter) GetItems() map[int32]*ItemParam { if x != nil { return x.Items } @@ -1487,7 +1542,7 @@ type WGAudienceSit struct { func (x *WGAudienceSit) Reset() { *x = WGAudienceSit{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[14] + mi := &file_server_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1500,7 +1555,7 @@ func (x *WGAudienceSit) String() string { func (*WGAudienceSit) ProtoMessage() {} func (x *WGAudienceSit) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[14] + mi := &file_server_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1513,7 +1568,7 @@ func (x *WGAudienceSit) ProtoReflect() protoreflect.Message { // Deprecated: Use WGAudienceSit.ProtoReflect.Descriptor instead. func (*WGAudienceSit) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{14} + return file_server_proto_rawDescGZIP(), []int{15} } func (x *WGAudienceSit) GetSnId() int32 { @@ -1559,7 +1614,7 @@ type WGPlayerReturn struct { func (x *WGPlayerReturn) Reset() { *x = WGPlayerReturn{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[15] + mi := &file_server_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1572,7 +1627,7 @@ func (x *WGPlayerReturn) String() string { func (*WGPlayerReturn) ProtoMessage() {} func (x *WGPlayerReturn) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[15] + mi := &file_server_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1585,7 +1640,7 @@ func (x *WGPlayerReturn) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerReturn.ProtoReflect.Descriptor instead. func (*WGPlayerReturn) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{15} + return file_server_proto_rawDescGZIP(), []int{16} } func (x *WGPlayerReturn) GetPlayerId() int32 { @@ -1623,31 +1678,31 @@ type GWPlayerLeave struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` - PlayerId int32 `protobuf:"varint,2,opt,name=PlayerId,proto3" json:"PlayerId,omitempty"` - Reason int32 `protobuf:"varint,3,opt,name=Reason,proto3" json:"Reason,omitempty"` //原因: 0:主动离开 1:被踢出 2:游戏已经开始 - PlayerData []byte `protobuf:"bytes,4,opt,name=PlayerData,proto3" json:"PlayerData,omitempty"` - ReturnCoin int64 `protobuf:"varint,5,opt,name=ReturnCoin,proto3" json:"ReturnCoin,omitempty"` //退还金币 - ServiceFee int64 `protobuf:"varint,6,opt,name=ServiceFee,proto3" json:"ServiceFee,omitempty"` //服务费|税收 - GameTimes int32 `protobuf:"varint,7,opt,name=GameTimes,proto3" json:"GameTimes,omitempty"` //游戏次数 - GameCoinTs int64 `protobuf:"varint,8,opt,name=GameCoinTs,proto3" json:"GameCoinTs,omitempty"` - SelVip int32 `protobuf:"varint,9,opt,name=SelVip,proto3" json:"SelVip,omitempty"` //VIP鱼炮的选择 - BetCoin int64 `protobuf:"varint,10,opt,name=BetCoin,proto3" json:"BetCoin,omitempty"` //投注金额 - WinTimes int32 `protobuf:"varint,11,opt,name=WinTimes,proto3" json:"WinTimes,omitempty"` //赢局 - LostTimes int32 `protobuf:"varint,12,opt,name=LostTimes,proto3" json:"LostTimes,omitempty"` //输局 - TotalConvertibleFlow int64 `protobuf:"varint,13,opt,name=TotalConvertibleFlow,proto3" json:"TotalConvertibleFlow,omitempty"` //流水 - ValidCacheBetTotal int64 `protobuf:"varint,14,opt,name=ValidCacheBetTotal,proto3" json:"ValidCacheBetTotal,omitempty"` //有效下注缓存 - Items map[int32]int64 `protobuf:"bytes,15,rep,name=Items,proto3" json:"Items,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - MatchId int32 `protobuf:"varint,16,opt,name=MatchId,proto3" json:"MatchId,omitempty"` //比赛场id - CurIsWin int64 `protobuf:"varint,17,opt,name=CurIsWin,proto3" json:"CurIsWin,omitempty"` //本局是否赢 负数:输 0:平局 正数:赢 - MatchRobotGrades map[int32]int32 `protobuf:"bytes,18,rep,name=MatchRobotGrades,proto3" json:"MatchRobotGrades,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //比赛数据 - RankScore map[int32]int64 `protobuf:"bytes,19,rep,name=RankScore,proto3" json:"RankScore,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 排位积分 + RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` + PlayerId int32 `protobuf:"varint,2,opt,name=PlayerId,proto3" json:"PlayerId,omitempty"` + Reason int32 `protobuf:"varint,3,opt,name=Reason,proto3" json:"Reason,omitempty"` //原因: 0:主动离开 1:被踢出 2:游戏已经开始 + PlayerData []byte `protobuf:"bytes,4,opt,name=PlayerData,proto3" json:"PlayerData,omitempty"` + ReturnCoin int64 `protobuf:"varint,5,opt,name=ReturnCoin,proto3" json:"ReturnCoin,omitempty"` //退还金币 + ServiceFee int64 `protobuf:"varint,6,opt,name=ServiceFee,proto3" json:"ServiceFee,omitempty"` //服务费|税收 + GameTimes int32 `protobuf:"varint,7,opt,name=GameTimes,proto3" json:"GameTimes,omitempty"` //游戏次数 + GameCoinTs int64 `protobuf:"varint,8,opt,name=GameCoinTs,proto3" json:"GameCoinTs,omitempty"` + SelVip int32 `protobuf:"varint,9,opt,name=SelVip,proto3" json:"SelVip,omitempty"` //VIP鱼炮的选择 + BetCoin int64 `protobuf:"varint,10,opt,name=BetCoin,proto3" json:"BetCoin,omitempty"` //投注金额 + WinTimes int32 `protobuf:"varint,11,opt,name=WinTimes,proto3" json:"WinTimes,omitempty"` //赢局 + LostTimes int32 `protobuf:"varint,12,opt,name=LostTimes,proto3" json:"LostTimes,omitempty"` //输局 + TotalConvertibleFlow int64 `protobuf:"varint,13,opt,name=TotalConvertibleFlow,proto3" json:"TotalConvertibleFlow,omitempty"` //流水 + ValidCacheBetTotal int64 `protobuf:"varint,14,opt,name=ValidCacheBetTotal,proto3" json:"ValidCacheBetTotal,omitempty"` //有效下注缓存 + Items map[int32]*ItemParam `protobuf:"bytes,15,rep,name=Items,proto3" json:"Items,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MatchId int32 `protobuf:"varint,16,opt,name=MatchId,proto3" json:"MatchId,omitempty"` //比赛场id + CurIsWin int64 `protobuf:"varint,17,opt,name=CurIsWin,proto3" json:"CurIsWin,omitempty"` //本局是否赢 负数:输 0:平局 正数:赢 + MatchRobotGrades map[int32]int32 `protobuf:"bytes,18,rep,name=MatchRobotGrades,proto3" json:"MatchRobotGrades,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //比赛数据 + RankScore map[int32]int64 `protobuf:"bytes,19,rep,name=RankScore,proto3" json:"RankScore,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 排位积分 } func (x *GWPlayerLeave) Reset() { *x = GWPlayerLeave{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[16] + mi := &file_server_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1660,7 +1715,7 @@ func (x *GWPlayerLeave) String() string { func (*GWPlayerLeave) ProtoMessage() {} func (x *GWPlayerLeave) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[16] + mi := &file_server_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1673,7 +1728,7 @@ func (x *GWPlayerLeave) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerLeave.ProtoReflect.Descriptor instead. func (*GWPlayerLeave) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{16} + return file_server_proto_rawDescGZIP(), []int{17} } func (x *GWPlayerLeave) GetRoomId() int32 { @@ -1774,7 +1829,7 @@ func (x *GWPlayerLeave) GetValidCacheBetTotal() int64 { return 0 } -func (x *GWPlayerLeave) GetItems() map[int32]int64 { +func (x *GWPlayerLeave) GetItems() map[int32]*ItemParam { if x != nil { return x.Items } @@ -1822,7 +1877,7 @@ type WGPlayerDropLine struct { func (x *WGPlayerDropLine) Reset() { *x = WGPlayerDropLine{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[17] + mi := &file_server_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1835,7 +1890,7 @@ func (x *WGPlayerDropLine) String() string { func (*WGPlayerDropLine) ProtoMessage() {} func (x *WGPlayerDropLine) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[17] + mi := &file_server_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1848,7 +1903,7 @@ func (x *WGPlayerDropLine) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerDropLine.ProtoReflect.Descriptor instead. func (*WGPlayerDropLine) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{17} + return file_server_proto_rawDescGZIP(), []int{18} } func (x *WGPlayerDropLine) GetId() int32 { @@ -1880,7 +1935,7 @@ type WGPlayerRehold struct { func (x *WGPlayerRehold) Reset() { *x = WGPlayerRehold{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[18] + mi := &file_server_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1893,7 +1948,7 @@ func (x *WGPlayerRehold) String() string { func (*WGPlayerRehold) ProtoMessage() {} func (x *WGPlayerRehold) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[18] + mi := &file_server_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1906,7 +1961,7 @@ func (x *WGPlayerRehold) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerRehold.ProtoReflect.Descriptor instead. func (*WGPlayerRehold) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{18} + return file_server_proto_rawDescGZIP(), []int{19} } func (x *WGPlayerRehold) GetId() int32 { @@ -1950,7 +2005,7 @@ type GWBilledRoomCard struct { func (x *GWBilledRoomCard) Reset() { *x = GWBilledRoomCard{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[19] + mi := &file_server_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1963,7 +2018,7 @@ func (x *GWBilledRoomCard) String() string { func (*GWBilledRoomCard) ProtoMessage() {} func (x *GWBilledRoomCard) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[19] + mi := &file_server_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1976,7 +2031,7 @@ func (x *GWBilledRoomCard) ProtoReflect() protoreflect.Message { // Deprecated: Use GWBilledRoomCard.ProtoReflect.Descriptor instead. func (*GWBilledRoomCard) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{19} + return file_server_proto_rawDescGZIP(), []int{20} } func (x *GWBilledRoomCard) GetRoomId() int32 { @@ -2010,7 +2065,7 @@ type GGPlayerSessionBind struct { func (x *GGPlayerSessionBind) Reset() { *x = GGPlayerSessionBind{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[20] + mi := &file_server_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2023,7 +2078,7 @@ func (x *GGPlayerSessionBind) String() string { func (*GGPlayerSessionBind) ProtoMessage() {} func (x *GGPlayerSessionBind) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[20] + mi := &file_server_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2036,7 +2091,7 @@ func (x *GGPlayerSessionBind) ProtoReflect() protoreflect.Message { // Deprecated: Use GGPlayerSessionBind.ProtoReflect.Descriptor instead. func (*GGPlayerSessionBind) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{20} + return file_server_proto_rawDescGZIP(), []int{21} } func (x *GGPlayerSessionBind) GetSid() int64 { @@ -2093,7 +2148,7 @@ type GGPlayerSessionUnBind struct { func (x *GGPlayerSessionUnBind) Reset() { *x = GGPlayerSessionUnBind{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[21] + mi := &file_server_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2106,7 +2161,7 @@ func (x *GGPlayerSessionUnBind) String() string { func (*GGPlayerSessionUnBind) ProtoMessage() {} func (x *GGPlayerSessionUnBind) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[21] + mi := &file_server_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2119,7 +2174,7 @@ func (x *GGPlayerSessionUnBind) ProtoReflect() protoreflect.Message { // Deprecated: Use GGPlayerSessionUnBind.ProtoReflect.Descriptor instead. func (*GGPlayerSessionUnBind) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{21} + return file_server_proto_rawDescGZIP(), []int{22} } func (x *GGPlayerSessionUnBind) GetSid() int64 { @@ -2144,7 +2199,7 @@ type WGDayTimeChange struct { func (x *WGDayTimeChange) Reset() { *x = WGDayTimeChange{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[22] + mi := &file_server_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2157,7 +2212,7 @@ func (x *WGDayTimeChange) String() string { func (*WGDayTimeChange) ProtoMessage() {} func (x *WGDayTimeChange) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[22] + mi := &file_server_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2170,7 +2225,7 @@ func (x *WGDayTimeChange) ProtoReflect() protoreflect.Message { // Deprecated: Use WGDayTimeChange.ProtoReflect.Descriptor instead. func (*WGDayTimeChange) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{22} + return file_server_proto_rawDescGZIP(), []int{23} } func (x *WGDayTimeChange) GetMinute() int32 { @@ -2226,7 +2281,7 @@ type ReplayPlayerData struct { func (x *ReplayPlayerData) Reset() { *x = ReplayPlayerData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[23] + mi := &file_server_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2239,7 +2294,7 @@ func (x *ReplayPlayerData) String() string { func (*ReplayPlayerData) ProtoMessage() {} func (x *ReplayPlayerData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[23] + mi := &file_server_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2252,7 +2307,7 @@ func (x *ReplayPlayerData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplayPlayerData.ProtoReflect.Descriptor instead. func (*ReplayPlayerData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{23} + return file_server_proto_rawDescGZIP(), []int{24} } func (x *ReplayPlayerData) GetAccId() string { @@ -2328,7 +2383,7 @@ type ReplayRecord struct { func (x *ReplayRecord) Reset() { *x = ReplayRecord{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[24] + mi := &file_server_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2341,7 +2396,7 @@ func (x *ReplayRecord) String() string { func (*ReplayRecord) ProtoMessage() {} func (x *ReplayRecord) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[24] + mi := &file_server_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2354,7 +2409,7 @@ func (x *ReplayRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplayRecord.ProtoReflect.Descriptor instead. func (*ReplayRecord) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{24} + return file_server_proto_rawDescGZIP(), []int{25} } func (x *ReplayRecord) GetTimeStamp() int64 { @@ -2410,7 +2465,7 @@ type ReplaySequene struct { func (x *ReplaySequene) Reset() { *x = ReplaySequene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[25] + mi := &file_server_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2423,7 +2478,7 @@ func (x *ReplaySequene) String() string { func (*ReplaySequene) ProtoMessage() {} func (x *ReplaySequene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[25] + mi := &file_server_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2436,7 +2491,7 @@ func (x *ReplaySequene) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplaySequene.ProtoReflect.Descriptor instead. func (*ReplaySequene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{25} + return file_server_proto_rawDescGZIP(), []int{26} } func (x *ReplaySequene) GetSequenes() []*ReplayRecord { @@ -2473,7 +2528,7 @@ type GRReplaySequene struct { func (x *GRReplaySequene) Reset() { *x = GRReplaySequene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[26] + mi := &file_server_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2486,7 +2541,7 @@ func (x *GRReplaySequene) String() string { func (*GRReplaySequene) ProtoMessage() {} func (x *GRReplaySequene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[26] + mi := &file_server_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2499,7 +2554,7 @@ func (x *GRReplaySequene) ProtoReflect() protoreflect.Message { // Deprecated: Use GRReplaySequene.ProtoReflect.Descriptor instead. func (*GRReplaySequene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{26} + return file_server_proto_rawDescGZIP(), []int{27} } func (x *GRReplaySequene) GetName() string { @@ -2639,7 +2694,7 @@ type WRLoginRec struct { func (x *WRLoginRec) Reset() { *x = WRLoginRec{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[27] + mi := &file_server_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2652,7 +2707,7 @@ func (x *WRLoginRec) String() string { func (*WRLoginRec) ProtoMessage() {} func (x *WRLoginRec) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[27] + mi := &file_server_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2665,7 +2720,7 @@ func (x *WRLoginRec) ProtoReflect() protoreflect.Message { // Deprecated: Use WRLoginRec.ProtoReflect.Descriptor instead. func (*WRLoginRec) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{27} + return file_server_proto_rawDescGZIP(), []int{28} } func (x *WRLoginRec) GetSnId() int32 { @@ -2729,7 +2784,7 @@ type WRGameDetail struct { func (x *WRGameDetail) Reset() { *x = WRGameDetail{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[28] + mi := &file_server_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2742,7 +2797,7 @@ func (x *WRGameDetail) String() string { func (*WRGameDetail) ProtoMessage() {} func (x *WRGameDetail) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[28] + mi := &file_server_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2755,7 +2810,7 @@ func (x *WRGameDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use WRGameDetail.ProtoReflect.Descriptor instead. func (*WRGameDetail) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{28} + return file_server_proto_rawDescGZIP(), []int{29} } func (x *WRGameDetail) GetGameDetail() []byte { @@ -2778,7 +2833,7 @@ type WRPlayerData struct { func (x *WRPlayerData) Reset() { *x = WRPlayerData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[29] + mi := &file_server_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2791,7 +2846,7 @@ func (x *WRPlayerData) String() string { func (*WRPlayerData) ProtoMessage() {} func (x *WRPlayerData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[29] + mi := &file_server_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2804,7 +2859,7 @@ func (x *WRPlayerData) ProtoReflect() protoreflect.Message { // Deprecated: Use WRPlayerData.ProtoReflect.Descriptor instead. func (*WRPlayerData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{29} + return file_server_proto_rawDescGZIP(), []int{30} } func (x *WRPlayerData) GetSid() int64 { @@ -2834,7 +2889,7 @@ type WTPlayerPay struct { func (x *WTPlayerPay) Reset() { *x = WTPlayerPay{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[30] + mi := &file_server_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2847,7 +2902,7 @@ func (x *WTPlayerPay) String() string { func (*WTPlayerPay) ProtoMessage() {} func (x *WTPlayerPay) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[30] + mi := &file_server_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2860,7 +2915,7 @@ func (x *WTPlayerPay) ProtoReflect() protoreflect.Message { // Deprecated: Use WTPlayerPay.ProtoReflect.Descriptor instead. func (*WTPlayerPay) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{30} + return file_server_proto_rawDescGZIP(), []int{31} } func (x *WTPlayerPay) GetPlayerData() []byte { @@ -2893,7 +2948,7 @@ type PlayerGameRec struct { func (x *PlayerGameRec) Reset() { *x = PlayerGameRec{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[31] + mi := &file_server_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2906,7 +2961,7 @@ func (x *PlayerGameRec) String() string { func (*PlayerGameRec) ProtoMessage() {} func (x *PlayerGameRec) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[31] + mi := &file_server_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2919,7 +2974,7 @@ func (x *PlayerGameRec) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerGameRec.ProtoReflect.Descriptor instead. func (*PlayerGameRec) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{31} + return file_server_proto_rawDescGZIP(), []int{32} } func (x *PlayerGameRec) GetId() int32 { @@ -2980,7 +3035,7 @@ type GWGameRec struct { func (x *GWGameRec) Reset() { *x = GWGameRec{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[32] + mi := &file_server_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2993,7 +3048,7 @@ func (x *GWGameRec) String() string { func (*GWGameRec) ProtoMessage() {} func (x *GWGameRec) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[32] + mi := &file_server_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3006,7 +3061,7 @@ func (x *GWGameRec) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameRec.ProtoReflect.Descriptor instead. func (*GWGameRec) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{32} + return file_server_proto_rawDescGZIP(), []int{33} } func (x *GWGameRec) GetRoomId() int32 { @@ -3059,7 +3114,7 @@ type GWSceneStart struct { func (x *GWSceneStart) Reset() { *x = GWSceneStart{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[33] + mi := &file_server_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3072,7 +3127,7 @@ func (x *GWSceneStart) String() string { func (*GWSceneStart) ProtoMessage() {} func (x *GWSceneStart) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[33] + mi := &file_server_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3085,7 +3140,7 @@ func (x *GWSceneStart) ProtoReflect() protoreflect.Message { // Deprecated: Use GWSceneStart.ProtoReflect.Descriptor instead. func (*GWSceneStart) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{33} + return file_server_proto_rawDescGZIP(), []int{34} } func (x *GWSceneStart) GetRoomId() int32 { @@ -3128,7 +3183,7 @@ type PlayerCtx struct { func (x *PlayerCtx) Reset() { *x = PlayerCtx{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[34] + mi := &file_server_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3141,7 +3196,7 @@ func (x *PlayerCtx) String() string { func (*PlayerCtx) ProtoMessage() {} func (x *PlayerCtx) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[34] + mi := &file_server_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3154,7 +3209,7 @@ func (x *PlayerCtx) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerCtx.ProtoReflect.Descriptor instead. func (*PlayerCtx) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{34} + return file_server_proto_rawDescGZIP(), []int{35} } func (x *PlayerCtx) GetSnId() int32 { @@ -3190,7 +3245,7 @@ type FishRecord struct { func (x *FishRecord) Reset() { *x = FishRecord{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[35] + mi := &file_server_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3203,7 +3258,7 @@ func (x *FishRecord) String() string { func (*FishRecord) ProtoMessage() {} func (x *FishRecord) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[35] + mi := &file_server_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3216,7 +3271,7 @@ func (x *FishRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use FishRecord.ProtoReflect.Descriptor instead. func (*FishRecord) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{35} + return file_server_proto_rawDescGZIP(), []int{36} } func (x *FishRecord) GetFishId() int32 { @@ -3246,7 +3301,7 @@ type GWFishRecord struct { func (x *GWFishRecord) Reset() { *x = GWFishRecord{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[36] + mi := &file_server_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3259,7 +3314,7 @@ func (x *GWFishRecord) String() string { func (*GWFishRecord) ProtoMessage() {} func (x *GWFishRecord) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[36] + mi := &file_server_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3272,7 +3327,7 @@ func (x *GWFishRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use GWFishRecord.ProtoReflect.Descriptor instead. func (*GWFishRecord) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{36} + return file_server_proto_rawDescGZIP(), []int{37} } func (x *GWFishRecord) GetGameFreeId() int32 { @@ -3311,7 +3366,7 @@ type GWSceneState struct { func (x *GWSceneState) Reset() { *x = GWSceneState{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[37] + mi := &file_server_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3324,7 +3379,7 @@ func (x *GWSceneState) String() string { func (*GWSceneState) ProtoMessage() {} func (x *GWSceneState) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[37] + mi := &file_server_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3337,7 +3392,7 @@ func (x *GWSceneState) ProtoReflect() protoreflect.Message { // Deprecated: Use GWSceneState.ProtoReflect.Descriptor instead. func (*GWSceneState) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{37} + return file_server_proto_rawDescGZIP(), []int{38} } func (x *GWSceneState) GetRoomId() int32 { @@ -3378,7 +3433,7 @@ type WRInviteRobot struct { func (x *WRInviteRobot) Reset() { *x = WRInviteRobot{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[38] + mi := &file_server_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3391,7 +3446,7 @@ func (x *WRInviteRobot) String() string { func (*WRInviteRobot) ProtoMessage() {} func (x *WRInviteRobot) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[38] + mi := &file_server_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3404,7 +3459,7 @@ func (x *WRInviteRobot) ProtoReflect() protoreflect.Message { // Deprecated: Use WRInviteRobot.ProtoReflect.Descriptor instead. func (*WRInviteRobot) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{38} + return file_server_proto_rawDescGZIP(), []int{39} } func (x *WRInviteRobot) GetRoomId() int32 { @@ -3462,7 +3517,7 @@ type WRInviteCreateRoom struct { func (x *WRInviteCreateRoom) Reset() { *x = WRInviteCreateRoom{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[39] + mi := &file_server_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3475,7 +3530,7 @@ func (x *WRInviteCreateRoom) String() string { func (*WRInviteCreateRoom) ProtoMessage() {} func (x *WRInviteCreateRoom) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[39] + mi := &file_server_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3488,7 +3543,7 @@ func (x *WRInviteCreateRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use WRInviteCreateRoom.ProtoReflect.Descriptor instead. func (*WRInviteCreateRoom) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{39} + return file_server_proto_rawDescGZIP(), []int{40} } func (x *WRInviteCreateRoom) GetCnt() int32 { @@ -3520,7 +3575,7 @@ type WGAgentKickOutPlayer struct { func (x *WGAgentKickOutPlayer) Reset() { *x = WGAgentKickOutPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[40] + mi := &file_server_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3533,7 +3588,7 @@ func (x *WGAgentKickOutPlayer) String() string { func (*WGAgentKickOutPlayer) ProtoMessage() {} func (x *WGAgentKickOutPlayer) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[40] + mi := &file_server_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3546,7 +3601,7 @@ func (x *WGAgentKickOutPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use WGAgentKickOutPlayer.ProtoReflect.Descriptor instead. func (*WGAgentKickOutPlayer) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{40} + return file_server_proto_rawDescGZIP(), []int{41} } func (x *WGAgentKickOutPlayer) GetRoomId() int32 { @@ -3590,7 +3645,7 @@ type WDDataAnalysis struct { func (x *WDDataAnalysis) Reset() { *x = WDDataAnalysis{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[41] + mi := &file_server_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3603,7 +3658,7 @@ func (x *WDDataAnalysis) String() string { func (*WDDataAnalysis) ProtoMessage() {} func (x *WDDataAnalysis) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[41] + mi := &file_server_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3616,7 +3671,7 @@ func (x *WDDataAnalysis) ProtoReflect() protoreflect.Message { // Deprecated: Use WDDataAnalysis.ProtoReflect.Descriptor instead. func (*WDDataAnalysis) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{41} + return file_server_proto_rawDescGZIP(), []int{42} } func (x *WDDataAnalysis) GetDataType() int32 { @@ -3645,7 +3700,7 @@ type PlayerCard struct { func (x *PlayerCard) Reset() { *x = PlayerCard{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[42] + mi := &file_server_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3658,7 +3713,7 @@ func (x *PlayerCard) String() string { func (*PlayerCard) ProtoMessage() {} func (x *PlayerCard) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[42] + mi := &file_server_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3671,7 +3726,7 @@ func (x *PlayerCard) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerCard.ProtoReflect.Descriptor instead. func (*PlayerCard) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{42} + return file_server_proto_rawDescGZIP(), []int{43} } func (x *PlayerCard) GetPos() int32 { @@ -3701,7 +3756,7 @@ type GNPlayerCards struct { func (x *GNPlayerCards) Reset() { *x = GNPlayerCards{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[43] + mi := &file_server_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3714,7 +3769,7 @@ func (x *GNPlayerCards) String() string { func (*GNPlayerCards) ProtoMessage() {} func (x *GNPlayerCards) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[43] + mi := &file_server_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3727,7 +3782,7 @@ func (x *GNPlayerCards) ProtoReflect() protoreflect.Message { // Deprecated: Use GNPlayerCards.ProtoReflect.Descriptor instead. func (*GNPlayerCards) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{43} + return file_server_proto_rawDescGZIP(), []int{44} } func (x *GNPlayerCards) GetSceneId() int32 { @@ -3766,7 +3821,7 @@ type RobotData struct { func (x *RobotData) Reset() { *x = RobotData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[44] + mi := &file_server_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3779,7 +3834,7 @@ func (x *RobotData) String() string { func (*RobotData) ProtoMessage() {} func (x *RobotData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[44] + mi := &file_server_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3792,7 +3847,7 @@ func (x *RobotData) ProtoReflect() protoreflect.Message { // Deprecated: Use RobotData.ProtoReflect.Descriptor instead. func (*RobotData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{44} + return file_server_proto_rawDescGZIP(), []int{45} } func (x *RobotData) GetTotalIn() int64 { @@ -3842,7 +3897,7 @@ type GNPlayerParam struct { func (x *GNPlayerParam) Reset() { *x = GNPlayerParam{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[45] + mi := &file_server_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3855,7 +3910,7 @@ func (x *GNPlayerParam) String() string { func (*GNPlayerParam) ProtoMessage() {} func (x *GNPlayerParam) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[45] + mi := &file_server_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3868,7 +3923,7 @@ func (x *GNPlayerParam) ProtoReflect() protoreflect.Message { // Deprecated: Use GNPlayerParam.ProtoReflect.Descriptor instead. func (*GNPlayerParam) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{45} + return file_server_proto_rawDescGZIP(), []int{46} } func (x *GNPlayerParam) GetSceneId() int32 { @@ -3899,7 +3954,7 @@ type GWRebuildScene struct { func (x *GWRebuildScene) Reset() { *x = GWRebuildScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[46] + mi := &file_server_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3912,7 +3967,7 @@ func (x *GWRebuildScene) String() string { func (*GWRebuildScene) ProtoMessage() {} func (x *GWRebuildScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[46] + mi := &file_server_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3925,7 +3980,7 @@ func (x *GWRebuildScene) ProtoReflect() protoreflect.Message { // Deprecated: Use GWRebuildScene.ProtoReflect.Descriptor instead. func (*GWRebuildScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{46} + return file_server_proto_rawDescGZIP(), []int{47} } func (x *GWRebuildScene) GetSceneIds() []int32 { @@ -3955,7 +4010,7 @@ type WGRebindPlayerSnId struct { func (x *WGRebindPlayerSnId) Reset() { *x = WGRebindPlayerSnId{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[47] + mi := &file_server_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3968,7 +4023,7 @@ func (x *WGRebindPlayerSnId) String() string { func (*WGRebindPlayerSnId) ProtoMessage() {} func (x *WGRebindPlayerSnId) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[47] + mi := &file_server_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3981,7 +4036,7 @@ func (x *WGRebindPlayerSnId) ProtoReflect() protoreflect.Message { // Deprecated: Use WGRebindPlayerSnId.ProtoReflect.Descriptor instead. func (*WGRebindPlayerSnId) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{47} + return file_server_proto_rawDescGZIP(), []int{48} } func (x *WGRebindPlayerSnId) GetOldSnId() int32 { @@ -4012,7 +4067,7 @@ type GWPlayerFlag struct { func (x *GWPlayerFlag) Reset() { *x = GWPlayerFlag{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[48] + mi := &file_server_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4025,7 +4080,7 @@ func (x *GWPlayerFlag) String() string { func (*GWPlayerFlag) ProtoMessage() {} func (x *GWPlayerFlag) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[48] + mi := &file_server_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4038,7 +4093,7 @@ func (x *GWPlayerFlag) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerFlag.ProtoReflect.Descriptor instead. func (*GWPlayerFlag) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{48} + return file_server_proto_rawDescGZIP(), []int{49} } func (x *GWPlayerFlag) GetSnId() int32 { @@ -4077,7 +4132,7 @@ type WGHundredOp struct { func (x *WGHundredOp) Reset() { *x = WGHundredOp{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[49] + mi := &file_server_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4090,7 +4145,7 @@ func (x *WGHundredOp) String() string { func (*WGHundredOp) ProtoMessage() {} func (x *WGHundredOp) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[49] + mi := &file_server_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4103,7 +4158,7 @@ func (x *WGHundredOp) ProtoReflect() protoreflect.Message { // Deprecated: Use WGHundredOp.ProtoReflect.Descriptor instead. func (*WGHundredOp) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{49} + return file_server_proto_rawDescGZIP(), []int{50} } func (x *WGHundredOp) GetSnid() int32 { @@ -4147,7 +4202,7 @@ type GWNewNotice struct { func (x *GWNewNotice) Reset() { *x = GWNewNotice{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[50] + mi := &file_server_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4160,7 +4215,7 @@ func (x *GWNewNotice) String() string { func (*GWNewNotice) ProtoMessage() {} func (x *GWNewNotice) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[50] + mi := &file_server_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4173,7 +4228,7 @@ func (x *GWNewNotice) ProtoReflect() protoreflect.Message { // Deprecated: Use GWNewNotice.ProtoReflect.Descriptor instead. func (*GWNewNotice) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{50} + return file_server_proto_rawDescGZIP(), []int{51} } func (x *GWNewNotice) GetCh() string { @@ -4258,7 +4313,7 @@ type PlayerStatics struct { func (x *PlayerStatics) Reset() { *x = PlayerStatics{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[51] + mi := &file_server_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4271,7 +4326,7 @@ func (x *PlayerStatics) String() string { func (*PlayerStatics) ProtoMessage() {} func (x *PlayerStatics) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[51] + mi := &file_server_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4284,7 +4339,7 @@ func (x *PlayerStatics) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerStatics.ProtoReflect.Descriptor instead. func (*PlayerStatics) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{51} + return file_server_proto_rawDescGZIP(), []int{52} } func (x *PlayerStatics) GetSnId() int32 { @@ -4364,7 +4419,7 @@ type GWPlayerStatics struct { func (x *GWPlayerStatics) Reset() { *x = GWPlayerStatics{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[52] + mi := &file_server_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4377,7 +4432,7 @@ func (x *GWPlayerStatics) String() string { func (*GWPlayerStatics) ProtoMessage() {} func (x *GWPlayerStatics) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[52] + mi := &file_server_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4390,7 +4445,7 @@ func (x *GWPlayerStatics) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerStatics.ProtoReflect.Descriptor instead. func (*GWPlayerStatics) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{52} + return file_server_proto_rawDescGZIP(), []int{53} } func (x *GWPlayerStatics) GetRoomId() int32 { @@ -4437,7 +4492,7 @@ type WGResetCoinPool struct { func (x *WGResetCoinPool) Reset() { *x = WGResetCoinPool{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[53] + mi := &file_server_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4450,7 +4505,7 @@ func (x *WGResetCoinPool) String() string { func (*WGResetCoinPool) ProtoMessage() {} func (x *WGResetCoinPool) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[53] + mi := &file_server_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4463,7 +4518,7 @@ func (x *WGResetCoinPool) ProtoReflect() protoreflect.Message { // Deprecated: Use WGResetCoinPool.ProtoReflect.Descriptor instead. func (*WGResetCoinPool) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{53} + return file_server_proto_rawDescGZIP(), []int{54} } func (x *WGResetCoinPool) GetPlatform() string { @@ -4525,7 +4580,7 @@ type WGSetPlayerBlackLevel struct { func (x *WGSetPlayerBlackLevel) Reset() { *x = WGSetPlayerBlackLevel{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[54] + mi := &file_server_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4538,7 +4593,7 @@ func (x *WGSetPlayerBlackLevel) String() string { func (*WGSetPlayerBlackLevel) ProtoMessage() {} func (x *WGSetPlayerBlackLevel) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[54] + mi := &file_server_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4551,7 +4606,7 @@ func (x *WGSetPlayerBlackLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use WGSetPlayerBlackLevel.ProtoReflect.Descriptor instead. func (*WGSetPlayerBlackLevel) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{54} + return file_server_proto_rawDescGZIP(), []int{55} } func (x *WGSetPlayerBlackLevel) GetSnId() int32 { @@ -4614,7 +4669,7 @@ type GWAutoRelieveWBLevel struct { func (x *GWAutoRelieveWBLevel) Reset() { *x = GWAutoRelieveWBLevel{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[55] + mi := &file_server_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4627,7 +4682,7 @@ func (x *GWAutoRelieveWBLevel) String() string { func (*GWAutoRelieveWBLevel) ProtoMessage() {} func (x *GWAutoRelieveWBLevel) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[55] + mi := &file_server_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4640,7 +4695,7 @@ func (x *GWAutoRelieveWBLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use GWAutoRelieveWBLevel.ProtoReflect.Descriptor instead. func (*GWAutoRelieveWBLevel) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{55} + return file_server_proto_rawDescGZIP(), []int{56} } func (x *GWAutoRelieveWBLevel) GetSnId() int32 { @@ -4666,7 +4721,7 @@ type GWScenePlayerLog struct { func (x *GWScenePlayerLog) Reset() { *x = GWScenePlayerLog{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[56] + mi := &file_server_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4679,7 +4734,7 @@ func (x *GWScenePlayerLog) String() string { func (*GWScenePlayerLog) ProtoMessage() {} func (x *GWScenePlayerLog) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[56] + mi := &file_server_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4692,7 +4747,7 @@ func (x *GWScenePlayerLog) ProtoReflect() protoreflect.Message { // Deprecated: Use GWScenePlayerLog.ProtoReflect.Descriptor instead. func (*GWScenePlayerLog) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{56} + return file_server_proto_rawDescGZIP(), []int{57} } func (x *GWScenePlayerLog) GetGameId() int32 { @@ -4738,7 +4793,7 @@ type GWPlayerForceLeave struct { func (x *GWPlayerForceLeave) Reset() { *x = GWPlayerForceLeave{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[57] + mi := &file_server_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4751,7 +4806,7 @@ func (x *GWPlayerForceLeave) String() string { func (*GWPlayerForceLeave) ProtoMessage() {} func (x *GWPlayerForceLeave) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[57] + mi := &file_server_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4764,7 +4819,7 @@ func (x *GWPlayerForceLeave) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerForceLeave.ProtoReflect.Descriptor instead. func (*GWPlayerForceLeave) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{57} + return file_server_proto_rawDescGZIP(), []int{58} } func (x *GWPlayerForceLeave) GetRoomId() int32 { @@ -4801,20 +4856,25 @@ type PlayerData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id - Bet int64 `protobuf:"varint,2,opt,name=Bet,proto3" json:"Bet,omitempty"` // 下注额 - Gain int64 `protobuf:"varint,3,opt,name=Gain,proto3" json:"Gain,omitempty"` // 输赢额,税后 - Tax int64 `protobuf:"varint,4,opt,name=Tax,proto3" json:"Tax,omitempty"` // Gain的税收 - Coin int64 `protobuf:"varint,5,opt,name=Coin,proto3" json:"Coin,omitempty"` // 当前身上余额 - GameCoinTs int64 `protobuf:"varint,6,opt,name=GameCoinTs,proto3" json:"GameCoinTs,omitempty"` // 最后帐变时间戳 - WBGain int64 `protobuf:"varint,7,opt,name=WBGain,proto3" json:"WBGain,omitempty"` // 黑白名单输赢统计, 发送端可以忽略 - WinState int32 `protobuf:"varint,8,opt,name=WinState,proto3" json:"WinState,omitempty"` // 1:赢 2:输 3:和, 用Gain区分不了输赢的游戏必传这个参数,否则可以忽略 + SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` //玩家id + Bet int64 `protobuf:"varint,2,opt,name=Bet,proto3" json:"Bet,omitempty"` //下注额(有效下注) + Gain int64 `protobuf:"varint,3,opt,name=Gain,proto3" json:"Gain,omitempty"` //输赢额,税后 + Tax int64 `protobuf:"varint,4,opt,name=Tax,proto3" json:"Tax,omitempty"` // Gain的税收 + OtherTax int64 `protobuf:"varint,5,opt,name=OtherTax,proto3" json:"OtherTax,omitempty"` //其他税收(比如:俱乐部额外扣税) + Coin int64 `protobuf:"varint,6,opt,name=Coin,proto3" json:"Coin,omitempty"` //当前身上余额 + FlowCoin int64 `protobuf:"varint,7,opt,name=FlowCoin,proto3" json:"FlowCoin,omitempty"` //流水 + Lottery int64 `protobuf:"varint,8,opt,name=Lottery,proto3" json:"Lottery,omitempty"` //彩金池增加金额 + Kind int32 `protobuf:"varint,9,opt,name=Kind,proto3" json:"Kind,omitempty"` //牌型 + Card []int32 `protobuf:"varint,10,rep,packed,name=Card,proto3" json:"Card,omitempty"` //手牌 + GameCoinTs int64 `protobuf:"varint,11,opt,name=GameCoinTs,proto3" json:"GameCoinTs,omitempty"` //最后帐变时间戳 + WBGain int64 `protobuf:"varint,12,opt,name=WBGain,proto3" json:"WBGain,omitempty"` // 黑白名单输赢统计 + WinState int32 `protobuf:"varint,13,opt,name=WinState,proto3" json:"WinState,omitempty"` // 1:赢 2:输 3:和 } func (x *PlayerData) Reset() { *x = PlayerData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[58] + mi := &file_server_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4827,7 +4887,7 @@ func (x *PlayerData) String() string { func (*PlayerData) ProtoMessage() {} func (x *PlayerData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[58] + mi := &file_server_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4840,7 +4900,7 @@ func (x *PlayerData) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerData.ProtoReflect.Descriptor instead. func (*PlayerData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{58} + return file_server_proto_rawDescGZIP(), []int{59} } func (x *PlayerData) GetSnId() int32 { @@ -4871,6 +4931,13 @@ func (x *PlayerData) GetTax() int64 { return 0 } +func (x *PlayerData) GetOtherTax() int64 { + if x != nil { + return x.OtherTax + } + return 0 +} + func (x *PlayerData) GetCoin() int64 { if x != nil { return x.Coin @@ -4878,6 +4945,34 @@ func (x *PlayerData) GetCoin() int64 { return 0 } +func (x *PlayerData) GetFlowCoin() int64 { + if x != nil { + return x.FlowCoin + } + return 0 +} + +func (x *PlayerData) GetLottery() int64 { + if x != nil { + return x.Lottery + } + return 0 +} + +func (x *PlayerData) GetKind() int32 { + if x != nil { + return x.Kind + } + return 0 +} + +func (x *PlayerData) GetCard() []int32 { + if x != nil { + return x.Card + } + return nil +} + func (x *PlayerData) GetGameCoinTs() int64 { if x != nil { return x.GameCoinTs @@ -4904,7 +4999,7 @@ type GWPlayerData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Datas []*PlayerData `protobuf:"bytes,1,rep,name=Datas,proto3" json:"Datas,omitempty"` // 玩家数据 + Datas []*PlayerData `protobuf:"bytes,1,rep,name=Datas,proto3" json:"Datas,omitempty"` // 玩家下数据 GameFreeId int32 `protobuf:"varint,2,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏场次id SceneId int32 `protobuf:"varint,4,opt,name=SceneId,proto3" json:"SceneId,omitempty"` //房间id } @@ -4912,7 +5007,7 @@ type GWPlayerData struct { func (x *GWPlayerData) Reset() { *x = GWPlayerData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[59] + mi := &file_server_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4925,7 +5020,7 @@ func (x *GWPlayerData) String() string { func (*GWPlayerData) ProtoMessage() {} func (x *GWPlayerData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[59] + mi := &file_server_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4938,7 +5033,7 @@ func (x *GWPlayerData) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerData.ProtoReflect.Descriptor instead. func (*GWPlayerData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{59} + return file_server_proto_rawDescGZIP(), []int{60} } func (x *GWPlayerData) GetDatas() []*PlayerData { @@ -4980,7 +5075,7 @@ type PlayerWinScore struct { func (x *PlayerWinScore) Reset() { *x = PlayerWinScore{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[60] + mi := &file_server_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4993,7 +5088,7 @@ func (x *PlayerWinScore) String() string { func (*PlayerWinScore) ProtoMessage() {} func (x *PlayerWinScore) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[60] + mi := &file_server_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5006,7 +5101,7 @@ func (x *PlayerWinScore) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerWinScore.ProtoReflect.Descriptor instead. func (*PlayerWinScore) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{60} + return file_server_proto_rawDescGZIP(), []int{61} } func (x *PlayerWinScore) GetSnId() int32 { @@ -5073,7 +5168,7 @@ type GWPlayerWinScore struct { func (x *GWPlayerWinScore) Reset() { *x = GWPlayerWinScore{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[61] + mi := &file_server_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5086,7 +5181,7 @@ func (x *GWPlayerWinScore) String() string { func (*GWPlayerWinScore) ProtoMessage() {} func (x *GWPlayerWinScore) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[61] + mi := &file_server_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5099,7 +5194,7 @@ func (x *GWPlayerWinScore) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerWinScore.ProtoReflect.Descriptor instead. func (*GWPlayerWinScore) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{61} + return file_server_proto_rawDescGZIP(), []int{62} } func (x *GWPlayerWinScore) GetGameFreeId() int32 { @@ -5148,7 +5243,7 @@ type WGPayerOnGameCount struct { func (x *WGPayerOnGameCount) Reset() { *x = WGPayerOnGameCount{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[62] + mi := &file_server_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5161,7 +5256,7 @@ func (x *WGPayerOnGameCount) String() string { func (*WGPayerOnGameCount) ProtoMessage() {} func (x *WGPayerOnGameCount) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[62] + mi := &file_server_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5174,7 +5269,7 @@ func (x *WGPayerOnGameCount) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPayerOnGameCount.ProtoReflect.Descriptor instead. func (*WGPayerOnGameCount) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{62} + return file_server_proto_rawDescGZIP(), []int{63} } func (x *WGPayerOnGameCount) GetDTCount() []int32 { @@ -5196,7 +5291,7 @@ type GRGameFreeData struct { func (x *GRGameFreeData) Reset() { *x = GRGameFreeData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[63] + mi := &file_server_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5209,7 +5304,7 @@ func (x *GRGameFreeData) String() string { func (*GRGameFreeData) ProtoMessage() {} func (x *GRGameFreeData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[63] + mi := &file_server_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5222,7 +5317,7 @@ func (x *GRGameFreeData) ProtoReflect() protoreflect.Message { // Deprecated: Use GRGameFreeData.ProtoReflect.Descriptor instead. func (*GRGameFreeData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{63} + return file_server_proto_rawDescGZIP(), []int{64} } func (x *GRGameFreeData) GetRoomId() int32 { @@ -5251,7 +5346,7 @@ type WGSyncPlayerSafeBoxCoin struct { func (x *WGSyncPlayerSafeBoxCoin) Reset() { *x = WGSyncPlayerSafeBoxCoin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[64] + mi := &file_server_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5264,7 +5359,7 @@ func (x *WGSyncPlayerSafeBoxCoin) String() string { func (*WGSyncPlayerSafeBoxCoin) ProtoMessage() {} func (x *WGSyncPlayerSafeBoxCoin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[64] + mi := &file_server_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5277,7 +5372,7 @@ func (x *WGSyncPlayerSafeBoxCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use WGSyncPlayerSafeBoxCoin.ProtoReflect.Descriptor instead. func (*WGSyncPlayerSafeBoxCoin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{64} + return file_server_proto_rawDescGZIP(), []int{65} } func (x *WGSyncPlayerSafeBoxCoin) GetSnId() int32 { @@ -5309,7 +5404,7 @@ type WGClubMessage struct { func (x *WGClubMessage) Reset() { *x = WGClubMessage{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[65] + mi := &file_server_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5322,7 +5417,7 @@ func (x *WGClubMessage) String() string { func (*WGClubMessage) ProtoMessage() {} func (x *WGClubMessage) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[65] + mi := &file_server_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5335,7 +5430,7 @@ func (x *WGClubMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use WGClubMessage.ProtoReflect.Descriptor instead. func (*WGClubMessage) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{65} + return file_server_proto_rawDescGZIP(), []int{66} } func (x *WGClubMessage) GetClubId() int64 { @@ -5382,7 +5477,7 @@ type DWThirdRebateMessage struct { func (x *DWThirdRebateMessage) Reset() { *x = DWThirdRebateMessage{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[66] + mi := &file_server_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5395,7 +5490,7 @@ func (x *DWThirdRebateMessage) String() string { func (*DWThirdRebateMessage) ProtoMessage() {} func (x *DWThirdRebateMessage) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[66] + mi := &file_server_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5408,7 +5503,7 @@ func (x *DWThirdRebateMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DWThirdRebateMessage.ProtoReflect.Descriptor instead. func (*DWThirdRebateMessage) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{66} + return file_server_proto_rawDescGZIP(), []int{67} } func (x *DWThirdRebateMessage) GetTag() uint64 { @@ -5467,7 +5562,7 @@ type DWThirdRoundMessage struct { func (x *DWThirdRoundMessage) Reset() { *x = DWThirdRoundMessage{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[67] + mi := &file_server_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5480,7 +5575,7 @@ func (x *DWThirdRoundMessage) String() string { func (*DWThirdRoundMessage) ProtoMessage() {} func (x *DWThirdRoundMessage) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[67] + mi := &file_server_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5493,7 +5588,7 @@ func (x *DWThirdRoundMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DWThirdRoundMessage.ProtoReflect.Descriptor instead. func (*DWThirdRoundMessage) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{67} + return file_server_proto_rawDescGZIP(), []int{68} } func (x *DWThirdRoundMessage) GetTag() uint64 { @@ -5586,7 +5681,7 @@ type WDACKThirdRebateMessage struct { func (x *WDACKThirdRebateMessage) Reset() { *x = WDACKThirdRebateMessage{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[68] + mi := &file_server_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5599,7 +5694,7 @@ func (x *WDACKThirdRebateMessage) String() string { func (*WDACKThirdRebateMessage) ProtoMessage() {} func (x *WDACKThirdRebateMessage) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[68] + mi := &file_server_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5612,7 +5707,7 @@ func (x *WDACKThirdRebateMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use WDACKThirdRebateMessage.ProtoReflect.Descriptor instead. func (*WDACKThirdRebateMessage) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{68} + return file_server_proto_rawDescGZIP(), []int{69} } func (x *WDACKThirdRebateMessage) GetTag() uint64 { @@ -5643,7 +5738,7 @@ type GWGameStateLog struct { func (x *GWGameStateLog) Reset() { *x = GWGameStateLog{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[69] + mi := &file_server_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5656,7 +5751,7 @@ func (x *GWGameStateLog) String() string { func (*GWGameStateLog) ProtoMessage() {} func (x *GWGameStateLog) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[69] + mi := &file_server_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5669,7 +5764,7 @@ func (x *GWGameStateLog) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameStateLog.ProtoReflect.Descriptor instead. func (*GWGameStateLog) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{69} + return file_server_proto_rawDescGZIP(), []int{70} } func (x *GWGameStateLog) GetSceneId() int32 { @@ -5709,7 +5804,7 @@ type GWGameState struct { func (x *GWGameState) Reset() { *x = GWGameState{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[70] + mi := &file_server_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5722,7 +5817,7 @@ func (x *GWGameState) String() string { func (*GWGameState) ProtoMessage() {} func (x *GWGameState) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[70] + mi := &file_server_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5735,7 +5830,7 @@ func (x *GWGameState) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameState.ProtoReflect.Descriptor instead. func (*GWGameState) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{70} + return file_server_proto_rawDescGZIP(), []int{71} } func (x *GWGameState) GetSceneId() int32 { @@ -5792,7 +5887,7 @@ type GWGameJackList struct { func (x *GWGameJackList) Reset() { *x = GWGameJackList{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[71] + mi := &file_server_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5805,7 +5900,7 @@ func (x *GWGameJackList) String() string { func (*GWGameJackList) ProtoMessage() {} func (x *GWGameJackList) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[71] + mi := &file_server_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5818,7 +5913,7 @@ func (x *GWGameJackList) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameJackList.ProtoReflect.Descriptor instead. func (*GWGameJackList) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{71} + return file_server_proto_rawDescGZIP(), []int{72} } func (x *GWGameJackList) GetSnId() int32 { @@ -5890,7 +5985,7 @@ type GWGameJackCoin struct { func (x *GWGameJackCoin) Reset() { *x = GWGameJackCoin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[72] + mi := &file_server_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5903,7 +5998,7 @@ func (x *GWGameJackCoin) String() string { func (*GWGameJackCoin) ProtoMessage() {} func (x *GWGameJackCoin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[72] + mi := &file_server_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5916,7 +6011,7 @@ func (x *GWGameJackCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameJackCoin.ProtoReflect.Descriptor instead. func (*GWGameJackCoin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{72} + return file_server_proto_rawDescGZIP(), []int{73} } func (x *GWGameJackCoin) GetPlatform() []string { @@ -5946,7 +6041,7 @@ type WGNiceIdRebind struct { func (x *WGNiceIdRebind) Reset() { *x = WGNiceIdRebind{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[73] + mi := &file_server_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5959,7 +6054,7 @@ func (x *WGNiceIdRebind) String() string { func (*WGNiceIdRebind) ProtoMessage() {} func (x *WGNiceIdRebind) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[73] + mi := &file_server_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5972,7 +6067,7 @@ func (x *WGNiceIdRebind) ProtoReflect() protoreflect.Message { // Deprecated: Use WGNiceIdRebind.ProtoReflect.Descriptor instead. func (*WGNiceIdRebind) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{73} + return file_server_proto_rawDescGZIP(), []int{74} } func (x *WGNiceIdRebind) GetUser() int32 { @@ -6002,7 +6097,7 @@ type PLAYERWINCOININFO struct { func (x *PLAYERWINCOININFO) Reset() { *x = PLAYERWINCOININFO{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[74] + mi := &file_server_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6015,7 +6110,7 @@ func (x *PLAYERWINCOININFO) String() string { func (*PLAYERWINCOININFO) ProtoMessage() {} func (x *PLAYERWINCOININFO) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[74] + mi := &file_server_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6028,7 +6123,7 @@ func (x *PLAYERWINCOININFO) ProtoReflect() protoreflect.Message { // Deprecated: Use PLAYERWINCOININFO.ProtoReflect.Descriptor instead. func (*PLAYERWINCOININFO) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{74} + return file_server_proto_rawDescGZIP(), []int{75} } func (x *PLAYERWINCOININFO) GetSnId() int32 { @@ -6064,7 +6159,7 @@ type GWPLAYERWINCOIN struct { func (x *GWPLAYERWINCOIN) Reset() { *x = GWPLAYERWINCOIN{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[75] + mi := &file_server_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6077,7 +6172,7 @@ func (x *GWPLAYERWINCOIN) String() string { func (*GWPLAYERWINCOIN) ProtoMessage() {} func (x *GWPLAYERWINCOIN) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[75] + mi := &file_server_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6090,7 +6185,7 @@ func (x *GWPLAYERWINCOIN) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPLAYERWINCOIN.ProtoReflect.Descriptor instead. func (*GWPLAYERWINCOIN) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{75} + return file_server_proto_rawDescGZIP(), []int{76} } func (x *GWPLAYERWINCOIN) GetPlayer() []*PLAYERWINCOININFO { @@ -6113,7 +6208,7 @@ type GWPlayerAutoMarkTag struct { func (x *GWPlayerAutoMarkTag) Reset() { *x = GWPlayerAutoMarkTag{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[76] + mi := &file_server_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6126,7 +6221,7 @@ func (x *GWPlayerAutoMarkTag) String() string { func (*GWPlayerAutoMarkTag) ProtoMessage() {} func (x *GWPlayerAutoMarkTag) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[76] + mi := &file_server_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6139,7 +6234,7 @@ func (x *GWPlayerAutoMarkTag) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerAutoMarkTag.ProtoReflect.Descriptor instead. func (*GWPlayerAutoMarkTag) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{76} + return file_server_proto_rawDescGZIP(), []int{77} } func (x *GWPlayerAutoMarkTag) GetSnId() int32 { @@ -6170,7 +6265,7 @@ type WGInviteRobEnterCoinSceneQueue struct { func (x *WGInviteRobEnterCoinSceneQueue) Reset() { *x = WGInviteRobEnterCoinSceneQueue{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[77] + mi := &file_server_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6183,7 +6278,7 @@ func (x *WGInviteRobEnterCoinSceneQueue) String() string { func (*WGInviteRobEnterCoinSceneQueue) ProtoMessage() {} func (x *WGInviteRobEnterCoinSceneQueue) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[77] + mi := &file_server_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6196,7 +6291,7 @@ func (x *WGInviteRobEnterCoinSceneQueue) ProtoReflect() protoreflect.Message { // Deprecated: Use WGInviteRobEnterCoinSceneQueue.ProtoReflect.Descriptor instead. func (*WGInviteRobEnterCoinSceneQueue) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{77} + return file_server_proto_rawDescGZIP(), []int{78} } func (x *WGInviteRobEnterCoinSceneQueue) GetPlatform() string { @@ -6232,7 +6327,7 @@ type WGGameForceStart struct { func (x *WGGameForceStart) Reset() { *x = WGGameForceStart{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[78] + mi := &file_server_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6245,7 +6340,7 @@ func (x *WGGameForceStart) String() string { func (*WGGameForceStart) ProtoMessage() {} func (x *WGGameForceStart) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[78] + mi := &file_server_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6258,7 +6353,7 @@ func (x *WGGameForceStart) ProtoReflect() protoreflect.Message { // Deprecated: Use WGGameForceStart.ProtoReflect.Descriptor instead. func (*WGGameForceStart) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{78} + return file_server_proto_rawDescGZIP(), []int{79} } func (x *WGGameForceStart) GetSceneId() int32 { @@ -6283,7 +6378,7 @@ type ProfitControlGameCfg struct { func (x *ProfitControlGameCfg) Reset() { *x = ProfitControlGameCfg{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[79] + mi := &file_server_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6296,7 +6391,7 @@ func (x *ProfitControlGameCfg) String() string { func (*ProfitControlGameCfg) ProtoMessage() {} func (x *ProfitControlGameCfg) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[79] + mi := &file_server_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6309,7 +6404,7 @@ func (x *ProfitControlGameCfg) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfitControlGameCfg.ProtoReflect.Descriptor instead. func (*ProfitControlGameCfg) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{79} + return file_server_proto_rawDescGZIP(), []int{80} } func (x *ProfitControlGameCfg) GetGameFreeId() int32 { @@ -6359,7 +6454,7 @@ type ProfitControlPlatformCfg struct { func (x *ProfitControlPlatformCfg) Reset() { *x = ProfitControlPlatformCfg{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[80] + mi := &file_server_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6372,7 +6467,7 @@ func (x *ProfitControlPlatformCfg) String() string { func (*ProfitControlPlatformCfg) ProtoMessage() {} func (x *ProfitControlPlatformCfg) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[80] + mi := &file_server_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6385,7 +6480,7 @@ func (x *ProfitControlPlatformCfg) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfitControlPlatformCfg.ProtoReflect.Descriptor instead. func (*ProfitControlPlatformCfg) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{80} + return file_server_proto_rawDescGZIP(), []int{81} } func (x *ProfitControlPlatformCfg) GetPlatform() string { @@ -6414,7 +6509,7 @@ type WGProfitControlCorrect struct { func (x *WGProfitControlCorrect) Reset() { *x = WGProfitControlCorrect{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[81] + mi := &file_server_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6427,7 +6522,7 @@ func (x *WGProfitControlCorrect) String() string { func (*WGProfitControlCorrect) ProtoMessage() {} func (x *WGProfitControlCorrect) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[81] + mi := &file_server_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6440,7 +6535,7 @@ func (x *WGProfitControlCorrect) ProtoReflect() protoreflect.Message { // Deprecated: Use WGProfitControlCorrect.ProtoReflect.Descriptor instead. func (*WGProfitControlCorrect) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{81} + return file_server_proto_rawDescGZIP(), []int{82} } func (x *WGProfitControlCorrect) GetCfg() []*ProfitControlPlatformCfg { @@ -6462,7 +6557,7 @@ type GWChangeSceneEvent struct { func (x *GWChangeSceneEvent) Reset() { *x = GWChangeSceneEvent{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[82] + mi := &file_server_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6475,7 +6570,7 @@ func (x *GWChangeSceneEvent) String() string { func (*GWChangeSceneEvent) ProtoMessage() {} func (x *GWChangeSceneEvent) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[82] + mi := &file_server_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6488,7 +6583,7 @@ func (x *GWChangeSceneEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use GWChangeSceneEvent.ProtoReflect.Descriptor instead. func (*GWChangeSceneEvent) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{82} + return file_server_proto_rawDescGZIP(), []int{83} } func (x *GWChangeSceneEvent) GetSceneId() int32 { @@ -6510,7 +6605,7 @@ type PlayerIParam struct { func (x *PlayerIParam) Reset() { *x = PlayerIParam{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[83] + mi := &file_server_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6523,7 +6618,7 @@ func (x *PlayerIParam) String() string { func (*PlayerIParam) ProtoMessage() {} func (x *PlayerIParam) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[83] + mi := &file_server_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6536,7 +6631,7 @@ func (x *PlayerIParam) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerIParam.ProtoReflect.Descriptor instead. func (*PlayerIParam) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{83} + return file_server_proto_rawDescGZIP(), []int{84} } func (x *PlayerIParam) GetParamId() int32 { @@ -6565,7 +6660,7 @@ type PlayerSParam struct { func (x *PlayerSParam) Reset() { *x = PlayerSParam{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[84] + mi := &file_server_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6578,7 +6673,7 @@ func (x *PlayerSParam) String() string { func (*PlayerSParam) ProtoMessage() {} func (x *PlayerSParam) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[84] + mi := &file_server_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6591,7 +6686,7 @@ func (x *PlayerSParam) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerSParam.ProtoReflect.Descriptor instead. func (*PlayerSParam) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{84} + return file_server_proto_rawDescGZIP(), []int{85} } func (x *PlayerSParam) GetParamId() int32 { @@ -6620,7 +6715,7 @@ type PlayerCParam struct { func (x *PlayerCParam) Reset() { *x = PlayerCParam{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[85] + mi := &file_server_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6633,7 +6728,7 @@ func (x *PlayerCParam) String() string { func (*PlayerCParam) ProtoMessage() {} func (x *PlayerCParam) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[85] + mi := &file_server_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6646,7 +6741,7 @@ func (x *PlayerCParam) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerCParam.ProtoReflect.Descriptor instead. func (*PlayerCParam) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{85} + return file_server_proto_rawDescGZIP(), []int{86} } func (x *PlayerCParam) GetStrKey() string { @@ -6675,7 +6770,7 @@ type PlayerMatchCoin struct { func (x *PlayerMatchCoin) Reset() { *x = PlayerMatchCoin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[86] + mi := &file_server_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6688,7 +6783,7 @@ func (x *PlayerMatchCoin) String() string { func (*PlayerMatchCoin) ProtoMessage() {} func (x *PlayerMatchCoin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[86] + mi := &file_server_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6701,7 +6796,7 @@ func (x *PlayerMatchCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerMatchCoin.ProtoReflect.Descriptor instead. func (*PlayerMatchCoin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{86} + return file_server_proto_rawDescGZIP(), []int{87} } func (x *PlayerMatchCoin) GetSnId() int32 { @@ -6733,7 +6828,7 @@ type GWPlayerMatchBilled struct { func (x *GWPlayerMatchBilled) Reset() { *x = GWPlayerMatchBilled{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[87] + mi := &file_server_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6746,7 +6841,7 @@ func (x *GWPlayerMatchBilled) String() string { func (*GWPlayerMatchBilled) ProtoMessage() {} func (x *GWPlayerMatchBilled) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[87] + mi := &file_server_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6759,7 +6854,7 @@ func (x *GWPlayerMatchBilled) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerMatchBilled.ProtoReflect.Descriptor instead. func (*GWPlayerMatchBilled) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{87} + return file_server_proto_rawDescGZIP(), []int{88} } func (x *GWPlayerMatchBilled) GetSceneId() int32 { @@ -6807,7 +6902,7 @@ type GWPlayerMatchGrade struct { func (x *GWPlayerMatchGrade) Reset() { *x = GWPlayerMatchGrade{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[88] + mi := &file_server_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6820,7 +6915,7 @@ func (x *GWPlayerMatchGrade) String() string { func (*GWPlayerMatchGrade) ProtoMessage() {} func (x *GWPlayerMatchGrade) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[88] + mi := &file_server_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6833,7 +6928,7 @@ func (x *GWPlayerMatchGrade) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerMatchGrade.ProtoReflect.Descriptor instead. func (*GWPlayerMatchGrade) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{88} + return file_server_proto_rawDescGZIP(), []int{89} } func (x *GWPlayerMatchGrade) GetSceneId() int32 { @@ -6893,7 +6988,7 @@ type WGPlayerQuitMatch struct { func (x *WGPlayerQuitMatch) Reset() { *x = WGPlayerQuitMatch{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[89] + mi := &file_server_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6906,7 +7001,7 @@ func (x *WGPlayerQuitMatch) String() string { func (*WGPlayerQuitMatch) ProtoMessage() {} func (x *WGPlayerQuitMatch) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[89] + mi := &file_server_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6919,7 +7014,7 @@ func (x *WGPlayerQuitMatch) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerQuitMatch.ProtoReflect.Descriptor instead. func (*WGPlayerQuitMatch) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{89} + return file_server_proto_rawDescGZIP(), []int{90} } func (x *WGPlayerQuitMatch) GetSnId() int32 { @@ -6960,7 +7055,7 @@ type WGSceneMatchBaseChange struct { func (x *WGSceneMatchBaseChange) Reset() { *x = WGSceneMatchBaseChange{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[90] + mi := &file_server_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6973,7 +7068,7 @@ func (x *WGSceneMatchBaseChange) String() string { func (*WGSceneMatchBaseChange) ProtoMessage() {} func (x *WGSceneMatchBaseChange) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[90] + mi := &file_server_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6986,7 +7081,7 @@ func (x *WGSceneMatchBaseChange) ProtoReflect() protoreflect.Message { // Deprecated: Use WGSceneMatchBaseChange.ProtoReflect.Descriptor instead. func (*WGSceneMatchBaseChange) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{90} + return file_server_proto_rawDescGZIP(), []int{91} } func (x *WGSceneMatchBaseChange) GetSceneIds() []int32 { @@ -7039,7 +7134,7 @@ type SSRedirectToPlayer struct { func (x *SSRedirectToPlayer) Reset() { *x = SSRedirectToPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[91] + mi := &file_server_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7052,7 +7147,7 @@ func (x *SSRedirectToPlayer) String() string { func (*SSRedirectToPlayer) ProtoMessage() {} func (x *SSRedirectToPlayer) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[91] + mi := &file_server_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7065,7 +7160,7 @@ func (x *SSRedirectToPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use SSRedirectToPlayer.ProtoReflect.Descriptor instead. func (*SSRedirectToPlayer) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{91} + return file_server_proto_rawDescGZIP(), []int{92} } func (x *SSRedirectToPlayer) GetSnId() int32 { @@ -7112,7 +7207,7 @@ type WGInviteMatchRob struct { func (x *WGInviteMatchRob) Reset() { *x = WGInviteMatchRob{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[92] + mi := &file_server_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7125,7 +7220,7 @@ func (x *WGInviteMatchRob) String() string { func (*WGInviteMatchRob) ProtoMessage() {} func (x *WGInviteMatchRob) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[92] + mi := &file_server_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7138,7 +7233,7 @@ func (x *WGInviteMatchRob) ProtoReflect() protoreflect.Message { // Deprecated: Use WGInviteMatchRob.ProtoReflect.Descriptor instead. func (*WGInviteMatchRob) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{92} + return file_server_proto_rawDescGZIP(), []int{93} } func (x *WGInviteMatchRob) GetPlatform() string { @@ -7189,7 +7284,7 @@ type GameInfo struct { func (x *GameInfo) Reset() { *x = GameInfo{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[93] + mi := &file_server_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7202,7 +7297,7 @@ func (x *GameInfo) String() string { func (*GameInfo) ProtoMessage() {} func (x *GameInfo) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[93] + mi := &file_server_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7215,7 +7310,7 @@ func (x *GameInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GameInfo.ProtoReflect.Descriptor instead. func (*GameInfo) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{93} + return file_server_proto_rawDescGZIP(), []int{94} } func (x *GameInfo) GetGameId() int32 { @@ -7254,7 +7349,7 @@ type WGGameJackpot struct { func (x *WGGameJackpot) Reset() { *x = WGGameJackpot{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[94] + mi := &file_server_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7267,7 +7362,7 @@ func (x *WGGameJackpot) String() string { func (*WGGameJackpot) ProtoMessage() {} func (x *WGGameJackpot) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[94] + mi := &file_server_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7280,7 +7375,7 @@ func (x *WGGameJackpot) ProtoReflect() protoreflect.Message { // Deprecated: Use WGGameJackpot.ProtoReflect.Descriptor instead. func (*WGGameJackpot) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{94} + return file_server_proto_rawDescGZIP(), []int{95} } func (x *WGGameJackpot) GetSid() int64 { @@ -7330,7 +7425,7 @@ type BigWinHistoryInfo struct { func (x *BigWinHistoryInfo) Reset() { *x = BigWinHistoryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[95] + mi := &file_server_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7343,7 +7438,7 @@ func (x *BigWinHistoryInfo) String() string { func (*BigWinHistoryInfo) ProtoMessage() {} func (x *BigWinHistoryInfo) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[95] + mi := &file_server_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7356,7 +7451,7 @@ func (x *BigWinHistoryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use BigWinHistoryInfo.ProtoReflect.Descriptor instead. func (*BigWinHistoryInfo) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{95} + return file_server_proto_rawDescGZIP(), []int{96} } func (x *BigWinHistoryInfo) GetSpinID() string { @@ -7436,7 +7531,7 @@ type WGPlayerEnterMiniGame struct { func (x *WGPlayerEnterMiniGame) Reset() { *x = WGPlayerEnterMiniGame{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[96] + mi := &file_server_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7449,7 +7544,7 @@ func (x *WGPlayerEnterMiniGame) String() string { func (*WGPlayerEnterMiniGame) ProtoMessage() {} func (x *WGPlayerEnterMiniGame) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[96] + mi := &file_server_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7462,7 +7557,7 @@ func (x *WGPlayerEnterMiniGame) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerEnterMiniGame.ProtoReflect.Descriptor instead. func (*WGPlayerEnterMiniGame) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{96} + return file_server_proto_rawDescGZIP(), []int{97} } func (x *WGPlayerEnterMiniGame) GetSid() int64 { @@ -7550,7 +7645,7 @@ type WGPlayerLeaveMiniGame struct { func (x *WGPlayerLeaveMiniGame) Reset() { *x = WGPlayerLeaveMiniGame{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[97] + mi := &file_server_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7563,7 +7658,7 @@ func (x *WGPlayerLeaveMiniGame) String() string { func (*WGPlayerLeaveMiniGame) ProtoMessage() {} func (x *WGPlayerLeaveMiniGame) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[97] + mi := &file_server_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7576,7 +7671,7 @@ func (x *WGPlayerLeaveMiniGame) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerLeaveMiniGame.ProtoReflect.Descriptor instead. func (*WGPlayerLeaveMiniGame) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{97} + return file_server_proto_rawDescGZIP(), []int{98} } func (x *WGPlayerLeaveMiniGame) GetSid() int64 { @@ -7619,7 +7714,7 @@ type WGPlayerLeave struct { func (x *WGPlayerLeave) Reset() { *x = WGPlayerLeave{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[98] + mi := &file_server_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7632,7 +7727,7 @@ func (x *WGPlayerLeave) String() string { func (*WGPlayerLeave) ProtoMessage() {} func (x *WGPlayerLeave) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[98] + mi := &file_server_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7645,7 +7740,7 @@ func (x *WGPlayerLeave) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerLeave.ProtoReflect.Descriptor instead. func (*WGPlayerLeave) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{98} + return file_server_proto_rawDescGZIP(), []int{99} } func (x *WGPlayerLeave) GetSnId() int32 { @@ -7671,7 +7766,7 @@ type GWPlayerLeaveMiniGame struct { func (x *GWPlayerLeaveMiniGame) Reset() { *x = GWPlayerLeaveMiniGame{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[99] + mi := &file_server_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7684,7 +7779,7 @@ func (x *GWPlayerLeaveMiniGame) String() string { func (*GWPlayerLeaveMiniGame) ProtoMessage() {} func (x *GWPlayerLeaveMiniGame) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[99] + mi := &file_server_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7697,7 +7792,7 @@ func (x *GWPlayerLeaveMiniGame) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerLeaveMiniGame.ProtoReflect.Descriptor instead. func (*GWPlayerLeaveMiniGame) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{99} + return file_server_proto_rawDescGZIP(), []int{100} } func (x *GWPlayerLeaveMiniGame) GetSceneId() int32 { @@ -7747,7 +7842,7 @@ type GWDestroyMiniScene struct { func (x *GWDestroyMiniScene) Reset() { *x = GWDestroyMiniScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[100] + mi := &file_server_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7760,7 +7855,7 @@ func (x *GWDestroyMiniScene) String() string { func (*GWDestroyMiniScene) ProtoMessage() {} func (x *GWDestroyMiniScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[100] + mi := &file_server_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7773,7 +7868,7 @@ func (x *GWDestroyMiniScene) ProtoReflect() protoreflect.Message { // Deprecated: Use GWDestroyMiniScene.ProtoReflect.Descriptor instead. func (*GWDestroyMiniScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{100} + return file_server_proto_rawDescGZIP(), []int{101} } func (x *GWDestroyMiniScene) GetSceneId() int32 { @@ -7795,7 +7890,7 @@ type GRDestroyScene struct { func (x *GRDestroyScene) Reset() { *x = GRDestroyScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[101] + mi := &file_server_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7808,7 +7903,7 @@ func (x *GRDestroyScene) String() string { func (*GRDestroyScene) ProtoMessage() {} func (x *GRDestroyScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[101] + mi := &file_server_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7821,7 +7916,7 @@ func (x *GRDestroyScene) ProtoReflect() protoreflect.Message { // Deprecated: Use GRDestroyScene.ProtoReflect.Descriptor instead. func (*GRDestroyScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{101} + return file_server_proto_rawDescGZIP(), []int{102} } func (x *GRDestroyScene) GetSceneId() int32 { @@ -7843,7 +7938,7 @@ type RWAccountInvalid struct { func (x *RWAccountInvalid) Reset() { *x = RWAccountInvalid{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[102] + mi := &file_server_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7856,7 +7951,7 @@ func (x *RWAccountInvalid) String() string { func (*RWAccountInvalid) ProtoMessage() {} func (x *RWAccountInvalid) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[102] + mi := &file_server_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7869,7 +7964,7 @@ func (x *RWAccountInvalid) ProtoReflect() protoreflect.Message { // Deprecated: Use RWAccountInvalid.ProtoReflect.Descriptor instead. func (*RWAccountInvalid) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{102} + return file_server_proto_rawDescGZIP(), []int{103} } func (x *RWAccountInvalid) GetAcc() string { @@ -7892,7 +7987,7 @@ type WGDTRoomInfo struct { func (x *WGDTRoomInfo) Reset() { *x = WGDTRoomInfo{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[103] + mi := &file_server_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7905,7 +8000,7 @@ func (x *WGDTRoomInfo) String() string { func (*WGDTRoomInfo) ProtoMessage() {} func (x *WGDTRoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[103] + mi := &file_server_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7918,7 +8013,7 @@ func (x *WGDTRoomInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WGDTRoomInfo.ProtoReflect.Descriptor instead. func (*WGDTRoomInfo) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{103} + return file_server_proto_rawDescGZIP(), []int{104} } func (x *WGDTRoomInfo) GetDataKey() string { @@ -7953,7 +8048,7 @@ type PlayerDTCoin struct { func (x *PlayerDTCoin) Reset() { *x = PlayerDTCoin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[104] + mi := &file_server_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7966,7 +8061,7 @@ func (x *PlayerDTCoin) String() string { func (*PlayerDTCoin) ProtoMessage() {} func (x *PlayerDTCoin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[104] + mi := &file_server_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7979,7 +8074,7 @@ func (x *PlayerDTCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerDTCoin.ProtoReflect.Descriptor instead. func (*PlayerDTCoin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{104} + return file_server_proto_rawDescGZIP(), []int{105} } func (x *PlayerDTCoin) GetNickName() string { @@ -8050,7 +8145,7 @@ type EResult struct { func (x *EResult) Reset() { *x = EResult{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[105] + mi := &file_server_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8063,7 +8158,7 @@ func (x *EResult) String() string { func (*EResult) ProtoMessage() {} func (x *EResult) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[105] + mi := &file_server_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8076,7 +8171,7 @@ func (x *EResult) ProtoReflect() protoreflect.Message { // Deprecated: Use EResult.ProtoReflect.Descriptor instead. func (*EResult) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{105} + return file_server_proto_rawDescGZIP(), []int{106} } func (x *EResult) GetIndex() string { @@ -8118,7 +8213,7 @@ type GWDTRoomInfo struct { func (x *GWDTRoomInfo) Reset() { *x = GWDTRoomInfo{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[106] + mi := &file_server_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8131,7 +8226,7 @@ func (x *GWDTRoomInfo) String() string { func (*GWDTRoomInfo) ProtoMessage() {} func (x *GWDTRoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[106] + mi := &file_server_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8144,7 +8239,7 @@ func (x *GWDTRoomInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GWDTRoomInfo.ProtoReflect.Descriptor instead. func (*GWDTRoomInfo) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{106} + return file_server_proto_rawDescGZIP(), []int{107} } func (x *GWDTRoomInfo) GetDataKey() string { @@ -8260,7 +8355,7 @@ type WGRoomResults struct { func (x *WGRoomResults) Reset() { *x = WGRoomResults{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[107] + mi := &file_server_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8273,7 +8368,7 @@ func (x *WGRoomResults) String() string { func (*WGRoomResults) ProtoMessage() {} func (x *WGRoomResults) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[107] + mi := &file_server_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8286,7 +8381,7 @@ func (x *WGRoomResults) ProtoReflect() protoreflect.Message { // Deprecated: Use WGRoomResults.ProtoReflect.Descriptor instead. func (*WGRoomResults) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{107} + return file_server_proto_rawDescGZIP(), []int{108} } func (x *WGRoomResults) GetRoomId() int32 { @@ -8331,7 +8426,7 @@ type GWRoomResults struct { func (x *GWRoomResults) Reset() { *x = GWRoomResults{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[108] + mi := &file_server_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8344,7 +8439,7 @@ func (x *GWRoomResults) String() string { func (*GWRoomResults) ProtoMessage() {} func (x *GWRoomResults) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[108] + mi := &file_server_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8357,7 +8452,7 @@ func (x *GWRoomResults) ProtoReflect() protoreflect.Message { // Deprecated: Use GWRoomResults.ProtoReflect.Descriptor instead. func (*GWRoomResults) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{108} + return file_server_proto_rawDescGZIP(), []int{109} } func (x *GWRoomResults) GetDataKey() string { @@ -8395,7 +8490,7 @@ type GWAddSingleAdjust struct { func (x *GWAddSingleAdjust) Reset() { *x = GWAddSingleAdjust{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[109] + mi := &file_server_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8408,7 +8503,7 @@ func (x *GWAddSingleAdjust) String() string { func (*GWAddSingleAdjust) ProtoMessage() {} func (x *GWAddSingleAdjust) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[109] + mi := &file_server_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8421,7 +8516,7 @@ func (x *GWAddSingleAdjust) ProtoReflect() protoreflect.Message { // Deprecated: Use GWAddSingleAdjust.ProtoReflect.Descriptor instead. func (*GWAddSingleAdjust) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{109} + return file_server_proto_rawDescGZIP(), []int{110} } func (x *GWAddSingleAdjust) GetSnId() int32 { @@ -8459,7 +8554,7 @@ type WGSingleAdjust struct { func (x *WGSingleAdjust) Reset() { *x = WGSingleAdjust{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[110] + mi := &file_server_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8472,7 +8567,7 @@ func (x *WGSingleAdjust) String() string { func (*WGSingleAdjust) ProtoMessage() {} func (x *WGSingleAdjust) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[110] + mi := &file_server_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8485,7 +8580,7 @@ func (x *WGSingleAdjust) ProtoReflect() protoreflect.Message { // Deprecated: Use WGSingleAdjust.ProtoReflect.Descriptor instead. func (*WGSingleAdjust) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{110} + return file_server_proto_rawDescGZIP(), []int{111} } func (x *WGSingleAdjust) GetSceneId() int32 { @@ -8526,7 +8621,7 @@ type WbCtrlCfg struct { func (x *WbCtrlCfg) Reset() { *x = WbCtrlCfg{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[111] + mi := &file_server_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8539,7 +8634,7 @@ func (x *WbCtrlCfg) String() string { func (*WbCtrlCfg) ProtoMessage() {} func (x *WbCtrlCfg) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[111] + mi := &file_server_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8552,7 +8647,7 @@ func (x *WbCtrlCfg) ProtoReflect() protoreflect.Message { // Deprecated: Use WbCtrlCfg.ProtoReflect.Descriptor instead. func (*WbCtrlCfg) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{111} + return file_server_proto_rawDescGZIP(), []int{112} } func (x *WbCtrlCfg) GetPlatform() string { @@ -8697,1066 +8792,1081 @@ var file_server_proto_rawDesc = []byte{ 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x27, 0x0a, 0x13, 0x57, 0x47, 0x47, 0x72, 0x61, 0x63, 0x65, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x49, 0x64, 0x73, 0x22, 0x56, 0x0a, 0x0a, - 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, - 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, - 0x0a, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, - 0x65, 0x43, 0x66, 0x67, 0x22, 0xa3, 0x06, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, - 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, - 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, - 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, - 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, - 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x49, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x09, + 0x49, 0x74, 0x65, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, + 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, + 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0x56, 0x0a, 0x0a, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, + 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x52, 0x65, + 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0xb6, 0x06, 0x0a, 0x0d, + 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, + 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, + 0x4d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, - 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x49, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x52, 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x53, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x52, 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x43, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x52, 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x22, - 0x0a, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x50, 0x6f, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x11, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x0b, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, - 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 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, - 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, - 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 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, 0x03, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x0d, 0x57, 0x47, - 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x7a, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x74, - 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x74, 0x65, - 0x72, 0x54, 0x73, 0x22, 0x91, 0x07, 0x0a, 0x0d, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6c, 0x56, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x65, 0x6c, 0x56, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, - 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x4c, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x4c, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, - 0x6c, 0x6f, 0x77, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x12, - 0x2e, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, - 0x36, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x57, 0x0a, - 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, - 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, + 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, + 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, + 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, + 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, + 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x4b, 0x0a, 0x0a, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, + 0x6f, 0x72, 0x65, 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, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, - 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 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, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, - 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 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, 0x03, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x10, 0x57, 0x47, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x44, 0x72, 0x6f, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x52, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x22, 0x3e, 0x0a, - 0x10, 0x47, 0x57, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, - 0x0a, 0x13, 0x47, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x56, - 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x22, 0x0a, - 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, - 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x29, 0x0a, - 0x15, 0x47, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x55, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x0f, 0x57, 0x47, 0x44, 0x61, - 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4d, - 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x69, 0x6e, - 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x57, 0x65, 0x65, - 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x14, 0x0a, - 0x05, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, - 0x6e, 0x74, 0x68, 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63, 0x63, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, - 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, - 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, - 0x03, 0x50, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x42, - 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x42, 0x69, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x22, - 0x41, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, - 0x12, 0x30, 0x0a, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, - 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x65, 0x73, 0x22, 0xfe, 0x03, 0x0a, 0x0f, 0x47, 0x52, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x52, 0x65, - 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x52, 0x03, - 0x52, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, - 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, - 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, - 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, - 0x6f, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, - 0x50, 0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x56, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x56, 0x65, 0x72, 0x22, 0xb2, 0x01, 0x0a, 0x0a, 0x57, 0x52, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, - 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, - 0x42, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x42, 0x69, - 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x57, 0x52, 0x47, 0x61, - 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x52, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x47, 0x0a, 0x0b, 0x57, 0x54, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x41, 0x64, 0x64, 0x43, - 0x6f, 0x69, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, - 0x6d, 0x65, 0x52, 0x65, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 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, 0x48, 0x65, 0x61, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xac, 0x01, 0x0a, 0x09, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, - 0x63, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, - 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, - 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, - 0x43, 0x6f, 0x64, 0x65, 0x22, 0x76, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x33, 0x0a, 0x09, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, - 0x6e, 0x22, 0x3a, 0x0a, 0x0a, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x46, 0x69, 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x46, 0x69, 0x73, 0x68, 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, 0x78, 0x0a, - 0x0c, 0x47, 0x57, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, - 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0b, 0x46, 0x69, 0x73, 0x68, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x5e, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x43, 0x75, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x46, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x46, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x22, 0xa7, 0x01, 0x0a, 0x0d, 0x57, 0x52, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, - 0x74, 0x22, 0x40, 0x0a, 0x12, 0x57, 0x52, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x57, 0x47, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4b, - 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x57, 0x44, 0x44, 0x61, 0x74, 0x61, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x83, - 0x01, 0x0a, 0x0d, 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, - 0x61, 0x72, 0x64, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, - 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, - 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x69, 0x6e, - 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, - 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x11, - 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x5c, 0x0a, 0x0d, - 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, - 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0e, 0x47, 0x57, - 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x12, 0x57, 0x47, 0x52, 0x65, 0x62, 0x69, - 0x6e, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x4f, 0x6c, 0x64, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, - 0x6c, 0x64, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, 0x64, - 0x22, 0x4e, 0x0a, 0x0c, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, - 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x46, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, - 0x22, 0x51, 0x0a, 0x0b, 0x57, 0x47, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x4f, 0x70, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, - 0x6e, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x4e, 0x65, 0x77, 0x4e, 0x6f, 0x74, - 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x22, 0xa7, 0x02, - 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x0d, 0x57, 0x47, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, + 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, + 0x73, 0x22, 0x7a, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, + 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x22, 0xa4, 0x07, + 0x0a, 0x0d, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, + 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6c, + 0x56, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x65, 0x6c, 0x56, 0x69, + 0x70, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x57, + 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, + 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x73, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x73, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x2e, 0x0a, 0x12, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x05, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, + 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, + 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x57, 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, + 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x13, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x4b, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, + 0x72, 0x61, 0x64, 0x65, 0x73, 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, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, + 0x6f, 0x72, 0x65, 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, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x10, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x44, 0x72, 0x6f, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x22, 0x66, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, + 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x47, 0x57, + 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x13, 0x47, + 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x69, + 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x29, 0x0a, 0x15, 0x47, 0x47, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x42, + 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x53, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x0f, 0x57, 0x47, 0x44, 0x61, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x69, 0x6e, 0x75, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x48, 0x6f, 0x75, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, + 0x6e, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x74, 0x68, + 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x0c, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x42, 0x69, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, + 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x22, 0x41, 0x0a, 0x0d, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x12, 0x30, 0x0a, + 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x22, + 0xfe, 0x03, 0x0a, 0x0f, 0x47, 0x52, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x52, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x52, 0x03, 0x52, 0x65, 0x63, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, + 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x6c, + 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, + 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, + 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x10, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, 0x56, 0x65, 0x72, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, 0x56, 0x65, 0x72, + 0x22, 0xb2, 0x01, 0x0a, 0x0a, 0x57, 0x52, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x46, 0x6f, 0x6f, - 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x49, - 0x73, 0x46, 0x6f, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x4c, - 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0d, 0x4c, 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, - 0x73, 0x49, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x53, 0x79, 0x73, 0x49, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, - 0x73, 0x4f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x53, 0x79, 0x73, 0x4f, 0x75, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x47, 0x57, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x75, 0x6d, 0x70, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0d, 0x50, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xb5, - 0x01, 0x0a, 0x0f, 0x57, 0x47, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, - 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, - 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x57, 0x47, 0x53, 0x65, 0x74, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x57, 0x42, 0x43, 0x6f, - 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x57, - 0x42, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x57, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x76, - 0x65, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x10, - 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x6f, 0x67, - 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x6e, 0x69, 0x64, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x08, 0x52, 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x22, 0x7a, 0x0a, 0x12, - 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4c, 0x65, 0x61, - 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x0a, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x47, 0x61, 0x69, - 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x54, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0c, 0x47, - 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, - 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, - 0xa8, 0x01, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x54, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x47, - 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, - 0x40, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x63, - 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, 0x63, 0x49, 0x64, 0x22, - 0x2e, 0x0a, 0x12, 0x57, 0x47, 0x50, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x5d, 0x0a, 0x0e, 0x47, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x4f, - 0x0a, 0x17, 0x57, 0x47, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, - 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, - 0x94, 0x01, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x44, 0x57, 0x54, 0x68, 0x69, - 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, - 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x41, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, 0x69, - 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x50, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6c, - 0x74, 0x22, 0x89, 0x03, 0x0a, 0x13, 0x44, 0x57, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, - 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, - 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x49, 0x6e, - 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x49, - 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x6e, - 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, - 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x12, 0x28, 0x0a, - 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, - 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x65, 0x74, 0x43, - 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, - 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x43, 0x0a, - 0x17, 0x57, 0x44, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x5c, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x43, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, 0x74, - 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, - 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, - 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x22, 0xce, 0x01, 0x0a, 0x0e, 0x47, 0x57, 0x47, - 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4a, - 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4a, - 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x0e, 0x47, 0x57, 0x47, - 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0e, 0x57, - 0x47, 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x11, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, + 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x57, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x52, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x47, 0x0a, 0x0b, 0x57, 0x54, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x50, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, + 0x22, 0x8f, 0x01, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 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, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, + 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x22, 0xac, 0x01, 0x0a, 0x09, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, + 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x52, 0x05, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, + 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0x76, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72, + 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x75, + 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x33, 0x0a, 0x09, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x43, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, + 0x0a, 0x0a, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x46, 0x69, 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x69, + 0x73, 0x68, 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, 0x78, 0x0a, 0x0c, 0x47, 0x57, + 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x34, + 0x0a, 0x0b, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x73, + 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0b, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x22, 0x5e, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x43, 0x75, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x43, 0x75, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x46, 0x69, 0x73, + 0x68, 0x69, 0x6e, 0x67, 0x22, 0xa7, 0x01, 0x0a, 0x0d, 0x57, 0x52, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x22, 0x40, + 0x0a, 0x12, 0x57, 0x52, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, + 0x22, 0x80, 0x01, 0x0a, 0x14, 0x57, 0x47, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4b, 0x69, 0x63, 0x6b, + 0x4f, 0x75, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, + 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x53, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x57, 0x44, 0x44, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, + 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0d, + 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, + 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x6f, 0x69, + 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x43, 0x6f, 0x69, + 0x6e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x5c, 0x0a, 0x0d, 0x47, 0x4e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0e, 0x47, 0x57, 0x52, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x49, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x12, 0x57, 0x47, 0x52, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6c, 0x64, + 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6c, 0x64, 0x53, + 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x4e, 0x0a, + 0x0c, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x51, 0x0a, + 0x0b, 0x57, 0x47, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x4f, 0x70, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6e, 0x69, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0xe7, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x4e, 0x65, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x63, 0x68, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x22, 0xa7, 0x02, 0x0a, 0x0d, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, - 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x44, 0x0a, 0x0f, 0x47, 0x57, - 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x12, 0x31, 0x0a, - 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, - 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x22, 0x3b, 0x0a, 0x13, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, - 0x4d, 0x61, 0x72, 0x6b, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x54, - 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x54, 0x61, 0x67, 0x22, 0x74, 0x0a, - 0x1e, 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x45, 0x6e, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, + 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x46, 0x6f, 0x6f, 0x6c, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x49, 0x73, 0x46, 0x6f, + 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x73, 0x65, + 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0d, 0x4c, 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x22, + 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, 0x73, 0x49, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, 0x73, + 0x49, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, 0x73, 0x4f, 0x75, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, + 0x73, 0x4f, 0x75, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, + 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x50, 0x75, + 0x6d, 0x70, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xb5, 0x01, 0x0a, 0x0f, + 0x57, 0x47, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, - 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, - 0x4e, 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x10, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, - 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x75, - 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, - 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, - 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x6e, 0x0a, 0x18, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x36, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, - 0x43, 0x66, 0x67, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0x4c, 0x0a, 0x16, - 0x57, 0x47, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, - 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x43, 0x66, 0x67, 0x52, 0x03, 0x43, 0x66, 0x67, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x22, 0x40, 0x0a, 0x0c, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, 0x3e, - 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x16, - 0x0a, 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, 0x39, - 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x57, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x69, 0x6c, 0x6c, 0x65, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, - 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x50, - 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, - 0x22, 0xd5, 0x01, 0x0a, 0x12, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4e, - 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x70, 0x65, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x70, - 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x4c, - 0x6f, 0x67, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, - 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, - 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x5b, 0x0a, 0x11, 0x57, 0x47, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x51, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x57, 0x47, 0x53, 0x65, 0x74, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x57, 0x47, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, - 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x75, - 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x75, - 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, - 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, 0x6d, - 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x22, 0x72, 0x0a, 0x12, 0x53, 0x53, 0x52, 0x65, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x96, 0x01, 0x0a, - 0x10, 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, - 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, - 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, - 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7d, 0x0a, 0x0d, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x4a, - 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, - 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x24, - 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x42, 0x69, 0x67, 0x57, 0x69, 0x6e, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x70, - 0x69, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x70, 0x69, 0x6e, - 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, - 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x49, 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, - 0x64, 0x73, 0x22, 0xb9, 0x02, 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, + 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x42, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x57, 0x42, 0x43, 0x6f, 0x69, 0x6e, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x57, 0x42, 0x43, 0x6f, + 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2a, 0x0a, + 0x14, 0x47, 0x57, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, 0x57, 0x42, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x10, 0x47, 0x57, 0x53, + 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, + 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, + 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, + 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x49, + 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x08, 0x52, 0x09, + 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x22, 0x7a, 0x0a, 0x12, 0x47, 0x57, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x45, + 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, + 0x74, 0x65, 0x72, 0x54, 0x73, 0x22, 0xba, 0x02, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x54, 0x61, 0x78, + 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x54, 0x61, 0x78, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x54, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, + 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, + 0x72, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0c, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, - 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, - 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0x71, - 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, - 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, - 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x22, 0x23, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, - 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x47, 0x57, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, 0x44, 0x65, 0x73, 0x74, - 0x72, 0x6f, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0e, 0x47, 0x52, 0x44, 0x65, 0x73, 0x74, - 0x72, 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x61, 0x69, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, + 0x03, 0x54, 0x61, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x54, 0x61, 0x78, 0x12, + 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, + 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, + 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, + 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, + 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, + 0x74, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x6f, 0x62, + 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x63, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x52, 0x65, 0x63, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x12, 0x57, 0x47, 0x50, 0x61, 0x79, 0x65, + 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x44, + 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x0e, 0x47, 0x52, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x4f, 0x0a, 0x17, 0x57, 0x47, 0x53, 0x79, 0x6e, 0x63, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, + 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x6c, 0x75, + 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, + 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x88, 0x01, + 0x0a, 0x14, 0x44, 0x57, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, + 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6c, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6c, 0x74, 0x22, 0x89, 0x03, 0x0a, 0x13, 0x44, 0x57, 0x54, + 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, + 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, + 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, + 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x49, 0x6e, 0x54, + 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, + 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x61, + 0x78, 0x77, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, + 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, + 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, + 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x65, + 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x26, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, + 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x43, 0x0a, 0x17, 0x57, 0x44, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, + 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, + 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x5c, 0x0a, 0x0e, 0x47, 0x57, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, + 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x12, + 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x47, 0x61, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x63, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x6e, + 0x6b, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x22, + 0xce, 0x01, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4a, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4a, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x40, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, + 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0e, 0x57, 0x47, 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, + 0x62, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x65, 0x77, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x22, 0x61, + 0x0a, 0x11, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, + 0x4e, 0x46, 0x4f, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, + 0x72, 0x65, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, + 0x6e, 0x22, 0x44, 0x0a, 0x0f, 0x47, 0x57, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, + 0x43, 0x4f, 0x49, 0x4e, 0x12, 0x31, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x52, + 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x3b, 0x0a, 0x13, 0x47, 0x57, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x72, 0x6b, 0x54, 0x61, 0x67, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x54, 0x61, 0x67, 0x22, 0x74, 0x0a, 0x1e, 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x52, 0x6f, 0x62, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x10, 0x57, 0x47, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, + 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, + 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x75, 0x74, 0x6f, + 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x4d, + 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, + 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, + 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x55, 0x73, + 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, + 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, + 0x6f, 0x6f, 0x6c, 0x22, 0x6e, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x66, 0x67, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x36, 0x0a, 0x07, 0x47, + 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, + 0x43, 0x66, 0x67, 0x22, 0x4c, 0x0a, 0x16, 0x57, 0x47, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, + 0x03, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x66, 0x67, 0x52, 0x03, 0x43, 0x66, + 0x67, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, + 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x49, 0x6e, 0x74, + 0x56, 0x61, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, + 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, 0x3e, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, + 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, 0x39, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x22, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x22, 0x24, 0x0a, 0x10, 0x52, 0x57, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x63, 0x63, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x63, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x47, 0x44, 0x54, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, - 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, - 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0xc6, 0x01, 0x0a, 0x0c, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4e, - 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, - 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x44, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x44, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, - 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, - 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, - 0x6f, 0x69, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9b, 0x03, 0x0a, - 0x0c, 0x47, 0x57, 0x44, 0x54, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, - 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, - 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x4c, 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x69, - 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x6f, 0x69, - 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, - 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, - 0x29, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x52, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x75, 0x0a, 0x0d, 0x57, 0x47, - 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, - 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, - 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, - 0x79, 0x22, 0x4f, 0x0a, 0x0d, 0x47, 0x57, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x22, 0x63, 0x0a, 0x11, 0x47, 0x57, 0x41, 0x64, 0x64, 0x53, 0x69, 0x6e, 0x67, 0x6c, - 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x0e, 0x57, 0x47, 0x53, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, - 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0xaf, 0x01, 0x0a, 0x09, - 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x2a, 0xaa, 0x16, - 0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x5a, 0x45, - 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0xe8, 0x07, 0x12, 0x1b, 0x0a, - 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, - 0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0xec, 0x07, 0x12, 0x16, 0x0a, - 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x5f, 0x53, 0x52, 0x56, 0x43, 0x54, - 0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, - 0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x47, 0x5f, - 0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x07, 0x12, - 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x43, 0x55, 0x53, - 0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, - 0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, - 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xcd, 0x08, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x45, 0x53, - 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xce, 0x08, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, - 0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x4f, 0x4f, 0x4d, 0x43, 0x41, 0x52, 0x44, - 0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, - 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xd2, 0x08, - 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, - 0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xd3, 0x08, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xd4, 0x08, 0x12, 0x20, 0x0a, 0x1b, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd5, 0x08, 0x12, 0x22, - 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x55, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, - 0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0xd7, 0x08, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x52, 0x45, 0x50, - 0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xd8, 0x08, 0x12, 0x16, 0x0a, 0x11, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, - 0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, - 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, - 0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, - 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xdb, 0x08, - 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, - 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xdc, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52, - 0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, 0x49, 0x43, 0x4b, 0x4f, 0x55, - 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x4e, 0x41, 0x4c, 0x59, - 0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, 0x49, 0x4c, 0x4c, 0x4d, 0x4f, 0x4e, 0x45, - 0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, - 0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4e, 0x49, 0x44, 0x10, 0xe2, 0x08, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, - 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xe3, 0x08, 0x12, 0x17, 0x0a, 0x12, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, - 0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xe5, 0x08, - 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x52, - 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, - 0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, - 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, 0x10, 0xe7, 0x08, 0x12, 0x19, 0x0a, 0x14, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x52, 0x45, - 0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4f, 0x52, 0x43, 0x45, - 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x53, - 0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, - 0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, - 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xed, 0x08, 0x12, 0x20, 0x0a, 0x1b, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, - 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xee, 0x08, 0x12, 0x1f, - 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, - 0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xef, 0x08, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, - 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf2, 0x08, 0x12, 0x1a, - 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, 0x08, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, 0x42, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, - 0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0xdc, 0x0b, - 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x52, 0x45, - 0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xdd, 0x0b, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, 0x57, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, - 0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, - 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0xe0, 0x0b, - 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4f, - 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0xe1, 0x0b, - 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, - 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x4c, 0x45, 0x56, 0x45, - 0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x56, 0x45, 0x57, 0x42, 0x4c, - 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x52, 0x41, 0x4d, - 0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, - 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x4f, 0x47, 0x10, - 0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, - 0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe6, - 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x0b, - 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x79, - 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, - 0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, - 0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, - 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0xee, - 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, - 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x0b, 0x12, 0x18, - 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x4c, 0x49, 0x53, - 0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf2, 0x0b, - 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x49, - 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xf3, 0x0b, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf4, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, - 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x0b, 0x12, 0x2b, 0x0a, - 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, - 0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x53, 0x43, 0x45, - 0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x4f, 0x52, 0x43, - 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x54, 0x43, 0x4f, 0x4e, - 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0xf8, 0x0b, 0x12, - 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0xf9, 0x0b, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x54, 0x5f, 0x50, 0x4c, - 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41, - 0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xfb, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0xfc, 0x0b, 0x12, 0x1e, 0x0a, - 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0xfd, 0x0b, 0x12, 0x23, 0x0a, - 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, - 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, - 0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, - 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, 0x4f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, - 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x52, 0x4f, 0x42, 0x10, - 0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x10, 0x83, 0x0c, 0x12, 0x23, - 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, - 0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, - 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, - 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, - 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x87, 0x0c, 0x12, 0x1f, 0x0a, - 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, - 0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x88, 0x0c, 0x12, 0x1b, - 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x44, 0x45, 0x53, 0x54, - 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x89, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8b, - 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, - 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8c, 0x0c, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, - 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8d, 0x0c, 0x12, 0x1b, 0x0a, - 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, - 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, 0x0c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x44, 0x44, 0x53, 0x49, 0x4e, 0x47, 0x4c, - 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, - 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, - 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x12, 0x47, 0x57, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, + 0x5b, 0x0a, 0x11, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x51, 0x75, 0x69, 0x74, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, + 0x16, 0x57, 0x47, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x75, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x75, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x22, + 0x72, 0x0a, 0x12, 0x53, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, + 0x61, 0x74, 0x61, 0x22, 0x96, 0x01, 0x0a, 0x10, 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, + 0x61, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, + 0x77, 0x61, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x08, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, + 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7d, 0x0a, 0x0d, + 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x11, + 0x42, 0x69, 0x67, 0x57, 0x69, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x70, 0x69, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x53, 0x70, 0x69, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, + 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x61, + 0x73, 0x65, 0x42, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, + 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x56, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x42, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xb9, 0x02, 0x0a, 0x15, 0x57, 0x47, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x69, 0x47, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, + 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, + 0x4d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, + 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, + 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0x71, 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, + 0x0a, 0x15, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, + 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, + 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, + 0x12, 0x47, 0x57, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x2a, 0x0a, + 0x0e, 0x47, 0x52, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x10, 0x52, 0x57, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x41, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x63, 0x22, + 0x40, 0x0a, 0x0c, 0x57, 0x47, 0x44, 0x54, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, + 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, + 0x64, 0x22, 0xc6, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, + 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, + 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x45, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x9b, 0x03, 0x0a, 0x0c, 0x47, 0x57, 0x44, 0x54, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x52, + 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, + 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, + 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, + 0x6e, 0x22, 0x75, 0x0a, 0x0d, 0x57, 0x47, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, + 0x62, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x57, 0x65, 0x62, + 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x22, 0x4f, 0x0a, 0x0d, 0x47, 0x57, 0x52, 0x6f, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, + 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, + 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x63, 0x0a, 0x11, 0x47, 0x57, 0x41, + 0x64, 0x64, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, + 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x22, 0x72, + 0x0a, 0x0e, 0x57, 0x47, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, + 0x73, 0x74, 0x22, 0xaf, 0x01, 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, + 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, 0x69, + 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, + 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x64, 0x73, 0x2a, 0xaa, 0x16, 0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, + 0x44, 0x10, 0xe8, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, + 0x07, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, + 0x41, 0x54, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, + 0x54, 0x10, 0xec, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, + 0x53, 0x5f, 0x53, 0x52, 0x56, 0x43, 0x54, 0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x47, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x54, 0x41, 0x47, 0x10, 0xf5, 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, + 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, + 0x45, 0x4e, 0x45, 0x10, 0xcd, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, + 0x10, 0xce, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, + 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, + 0x4f, 0x4f, 0x4d, 0x43, 0x41, 0x52, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, + 0x43, 0x45, 0x4e, 0x45, 0x10, 0xd2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, + 0x49, 0x4e, 0x45, 0x10, 0xd3, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, + 0x10, 0xd4, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, + 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, + 0x4e, 0x44, 0x10, 0xd5, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x55, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, + 0x55, 0x52, 0x4e, 0x10, 0xd7, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x47, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, + 0x10, 0xd8, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, + 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, + 0x45, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, + 0x45, 0x41, 0x56, 0x45, 0x10, 0xdb, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, + 0xdc, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, + 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, + 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, + 0x54, 0x4b, 0x49, 0x43, 0x4b, 0x4f, 0x55, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, + 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, + 0x41, 0x54, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, + 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, + 0x49, 0x4c, 0x4c, 0x4d, 0x4f, 0x4e, 0x45, 0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, + 0x53, 0x4e, 0x49, 0x44, 0x10, 0xe2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, + 0x10, 0xe3, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, + 0x5f, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x10, 0xe5, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, + 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, + 0x10, 0xe7, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, + 0x5f, 0x46, 0x49, 0x53, 0x48, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, + 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, + 0x45, 0x52, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, + 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x53, 0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, + 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, + 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x10, 0xed, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, + 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x10, 0xee, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, + 0x4f, 0x4f, 0x4d, 0x10, 0xef, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x57, 0x52, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x10, 0xf2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, + 0x08, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, + 0x42, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, + 0x41, 0x52, 0x44, 0x53, 0x10, 0xdc, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, + 0x45, 0x10, 0xdd, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, + 0x57, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, + 0x41, 0x54, 0x49, 0x43, 0x10, 0xe0, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0xe1, 0x0b, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, + 0x41, 0x43, 0x4b, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, + 0x49, 0x45, 0x56, 0x45, 0x57, 0x42, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, + 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, + 0x45, 0x52, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x4c, 0x4f, 0x47, 0x10, 0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, + 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe6, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, + 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, + 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0xee, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, + 0x4f, 0x47, 0x10, 0xef, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, + 0x4b, 0x50, 0x4f, 0x54, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, + 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf2, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, + 0x44, 0x10, 0xf3, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, + 0xf4, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, + 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, + 0x47, 0x10, 0xf5, 0x0b, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, + 0x43, 0x4f, 0x49, 0x4e, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, + 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, + 0x41, 0x4d, 0x45, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, + 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, + 0x4f, 0x46, 0x49, 0x54, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, + 0x45, 0x43, 0x54, 0x10, 0xf8, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x10, 0xf9, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, + 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, + 0x10, 0xfb, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, + 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, + 0x45, 0x10, 0xfc, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, + 0x48, 0x10, 0xfd, 0x0b, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, + 0x4f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, + 0x54, 0x43, 0x48, 0x52, 0x4f, 0x42, 0x10, 0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, + 0x4f, 0x54, 0x10, 0x83, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, + 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, + 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, + 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, + 0x45, 0x10, 0x87, 0x0c, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, + 0x4e, 0x45, 0x10, 0x88, 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x47, 0x52, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, + 0x89, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, + 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, + 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8b, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, + 0x4c, 0x54, 0x53, 0x10, 0x8c, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, + 0x53, 0x10, 0x8d, 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, + 0x0c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, + 0x44, 0x44, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, + 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -9772,7 +9882,7 @@ func file_server_proto_rawDescGZIP() []byte { } var file_server_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 117) +var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 118) var file_server_proto_goTypes = []interface{}{ (SSPacketID)(0), // 0: server.SSPacketID (SGBindGroupTag_OpCode)(0), // 1: server.SGBindGroupTag.OpCode @@ -9788,150 +9898,153 @@ var file_server_proto_goTypes = []interface{}{ (*WGDestroyScene)(nil), // 11: server.WGDestroyScene (*GWDestroyScene)(nil), // 12: server.GWDestroyScene (*WGGraceDestroyScene)(nil), // 13: server.WGGraceDestroyScene - (*RebateTask)(nil), // 14: server.RebateTask - (*WGPlayerEnter)(nil), // 15: server.WGPlayerEnter - (*WGAudienceSit)(nil), // 16: server.WGAudienceSit - (*WGPlayerReturn)(nil), // 17: server.WGPlayerReturn - (*GWPlayerLeave)(nil), // 18: server.GWPlayerLeave - (*WGPlayerDropLine)(nil), // 19: server.WGPlayerDropLine - (*WGPlayerRehold)(nil), // 20: server.WGPlayerRehold - (*GWBilledRoomCard)(nil), // 21: server.GWBilledRoomCard - (*GGPlayerSessionBind)(nil), // 22: server.GGPlayerSessionBind - (*GGPlayerSessionUnBind)(nil), // 23: server.GGPlayerSessionUnBind - (*WGDayTimeChange)(nil), // 24: server.WGDayTimeChange - (*ReplayPlayerData)(nil), // 25: server.ReplayPlayerData - (*ReplayRecord)(nil), // 26: server.ReplayRecord - (*ReplaySequene)(nil), // 27: server.ReplaySequene - (*GRReplaySequene)(nil), // 28: server.GRReplaySequene - (*WRLoginRec)(nil), // 29: server.WRLoginRec - (*WRGameDetail)(nil), // 30: server.WRGameDetail - (*WRPlayerData)(nil), // 31: server.WRPlayerData - (*WTPlayerPay)(nil), // 32: server.WTPlayerPay - (*PlayerGameRec)(nil), // 33: server.PlayerGameRec - (*GWGameRec)(nil), // 34: server.GWGameRec - (*GWSceneStart)(nil), // 35: server.GWSceneStart - (*PlayerCtx)(nil), // 36: server.PlayerCtx - (*FishRecord)(nil), // 37: server.FishRecord - (*GWFishRecord)(nil), // 38: server.GWFishRecord - (*GWSceneState)(nil), // 39: server.GWSceneState - (*WRInviteRobot)(nil), // 40: server.WRInviteRobot - (*WRInviteCreateRoom)(nil), // 41: server.WRInviteCreateRoom - (*WGAgentKickOutPlayer)(nil), // 42: server.WGAgentKickOutPlayer - (*WDDataAnalysis)(nil), // 43: server.WDDataAnalysis - (*PlayerCard)(nil), // 44: server.PlayerCard - (*GNPlayerCards)(nil), // 45: server.GNPlayerCards - (*RobotData)(nil), // 46: server.RobotData - (*GNPlayerParam)(nil), // 47: server.GNPlayerParam - (*GWRebuildScene)(nil), // 48: server.GWRebuildScene - (*WGRebindPlayerSnId)(nil), // 49: server.WGRebindPlayerSnId - (*GWPlayerFlag)(nil), // 50: server.GWPlayerFlag - (*WGHundredOp)(nil), // 51: server.WGHundredOp - (*GWNewNotice)(nil), // 52: server.GWNewNotice - (*PlayerStatics)(nil), // 53: server.PlayerStatics - (*GWPlayerStatics)(nil), // 54: server.GWPlayerStatics - (*WGResetCoinPool)(nil), // 55: server.WGResetCoinPool - (*WGSetPlayerBlackLevel)(nil), // 56: server.WGSetPlayerBlackLevel - (*GWAutoRelieveWBLevel)(nil), // 57: server.GWAutoRelieveWBLevel - (*GWScenePlayerLog)(nil), // 58: server.GWScenePlayerLog - (*GWPlayerForceLeave)(nil), // 59: server.GWPlayerForceLeave - (*PlayerData)(nil), // 60: server.PlayerData - (*GWPlayerData)(nil), // 61: server.GWPlayerData - (*PlayerWinScore)(nil), // 62: server.PlayerWinScore - (*GWPlayerWinScore)(nil), // 63: server.GWPlayerWinScore - (*WGPayerOnGameCount)(nil), // 64: server.WGPayerOnGameCount - (*GRGameFreeData)(nil), // 65: server.GRGameFreeData - (*WGSyncPlayerSafeBoxCoin)(nil), // 66: server.WGSyncPlayerSafeBoxCoin - (*WGClubMessage)(nil), // 67: server.WGClubMessage - (*DWThirdRebateMessage)(nil), // 68: server.DWThirdRebateMessage - (*DWThirdRoundMessage)(nil), // 69: server.DWThirdRoundMessage - (*WDACKThirdRebateMessage)(nil), // 70: server.WDACKThirdRebateMessage - (*GWGameStateLog)(nil), // 71: server.GWGameStateLog - (*GWGameState)(nil), // 72: server.GWGameState - (*GWGameJackList)(nil), // 73: server.GWGameJackList - (*GWGameJackCoin)(nil), // 74: server.GWGameJackCoin - (*WGNiceIdRebind)(nil), // 75: server.WGNiceIdRebind - (*PLAYERWINCOININFO)(nil), // 76: server.PLAYERWINCOININFO - (*GWPLAYERWINCOIN)(nil), // 77: server.GWPLAYERWINCOIN - (*GWPlayerAutoMarkTag)(nil), // 78: server.GWPlayerAutoMarkTag - (*WGInviteRobEnterCoinSceneQueue)(nil), // 79: server.WGInviteRobEnterCoinSceneQueue - (*WGGameForceStart)(nil), // 80: server.WGGameForceStart - (*ProfitControlGameCfg)(nil), // 81: server.ProfitControlGameCfg - (*ProfitControlPlatformCfg)(nil), // 82: server.ProfitControlPlatformCfg - (*WGProfitControlCorrect)(nil), // 83: server.WGProfitControlCorrect - (*GWChangeSceneEvent)(nil), // 84: server.GWChangeSceneEvent - (*PlayerIParam)(nil), // 85: server.PlayerIParam - (*PlayerSParam)(nil), // 86: server.PlayerSParam - (*PlayerCParam)(nil), // 87: server.PlayerCParam - (*PlayerMatchCoin)(nil), // 88: server.PlayerMatchCoin - (*GWPlayerMatchBilled)(nil), // 89: server.GWPlayerMatchBilled - (*GWPlayerMatchGrade)(nil), // 90: server.GWPlayerMatchGrade - (*WGPlayerQuitMatch)(nil), // 91: server.WGPlayerQuitMatch - (*WGSceneMatchBaseChange)(nil), // 92: server.WGSceneMatchBaseChange - (*SSRedirectToPlayer)(nil), // 93: server.SSRedirectToPlayer - (*WGInviteMatchRob)(nil), // 94: server.WGInviteMatchRob - (*GameInfo)(nil), // 95: server.GameInfo - (*WGGameJackpot)(nil), // 96: server.WGGameJackpot - (*BigWinHistoryInfo)(nil), // 97: server.BigWinHistoryInfo - (*WGPlayerEnterMiniGame)(nil), // 98: server.WGPlayerEnterMiniGame - (*WGPlayerLeaveMiniGame)(nil), // 99: server.WGPlayerLeaveMiniGame - (*WGPlayerLeave)(nil), // 100: server.WGPlayerLeave - (*GWPlayerLeaveMiniGame)(nil), // 101: server.GWPlayerLeaveMiniGame - (*GWDestroyMiniScene)(nil), // 102: server.GWDestroyMiniScene - (*GRDestroyScene)(nil), // 103: server.GRDestroyScene - (*RWAccountInvalid)(nil), // 104: server.RWAccountInvalid - (*WGDTRoomInfo)(nil), // 105: server.WGDTRoomInfo - (*PlayerDTCoin)(nil), // 106: server.PlayerDTCoin - (*EResult)(nil), // 107: server.EResult - (*GWDTRoomInfo)(nil), // 108: server.GWDTRoomInfo - (*WGRoomResults)(nil), // 109: server.WGRoomResults - (*GWRoomResults)(nil), // 110: server.GWRoomResults - (*GWAddSingleAdjust)(nil), // 111: server.GWAddSingleAdjust - (*WGSingleAdjust)(nil), // 112: server.WGSingleAdjust - (*WbCtrlCfg)(nil), // 113: server.WbCtrlCfg - nil, // 114: server.WGPlayerEnter.ItemsEntry - nil, // 115: server.WGPlayerEnter.RankScoreEntry - nil, // 116: server.GWPlayerLeave.ItemsEntry - nil, // 117: server.GWPlayerLeave.MatchRobotGradesEntry - nil, // 118: server.GWPlayerLeave.RankScoreEntry - (*DB_GameFree)(nil), // 119: server.DB_GameFree + (*ItemParam)(nil), // 14: server.ItemParam + (*RebateTask)(nil), // 15: server.RebateTask + (*WGPlayerEnter)(nil), // 16: server.WGPlayerEnter + (*WGAudienceSit)(nil), // 17: server.WGAudienceSit + (*WGPlayerReturn)(nil), // 18: server.WGPlayerReturn + (*GWPlayerLeave)(nil), // 19: server.GWPlayerLeave + (*WGPlayerDropLine)(nil), // 20: server.WGPlayerDropLine + (*WGPlayerRehold)(nil), // 21: server.WGPlayerRehold + (*GWBilledRoomCard)(nil), // 22: server.GWBilledRoomCard + (*GGPlayerSessionBind)(nil), // 23: server.GGPlayerSessionBind + (*GGPlayerSessionUnBind)(nil), // 24: server.GGPlayerSessionUnBind + (*WGDayTimeChange)(nil), // 25: server.WGDayTimeChange + (*ReplayPlayerData)(nil), // 26: server.ReplayPlayerData + (*ReplayRecord)(nil), // 27: server.ReplayRecord + (*ReplaySequene)(nil), // 28: server.ReplaySequene + (*GRReplaySequene)(nil), // 29: server.GRReplaySequene + (*WRLoginRec)(nil), // 30: server.WRLoginRec + (*WRGameDetail)(nil), // 31: server.WRGameDetail + (*WRPlayerData)(nil), // 32: server.WRPlayerData + (*WTPlayerPay)(nil), // 33: server.WTPlayerPay + (*PlayerGameRec)(nil), // 34: server.PlayerGameRec + (*GWGameRec)(nil), // 35: server.GWGameRec + (*GWSceneStart)(nil), // 36: server.GWSceneStart + (*PlayerCtx)(nil), // 37: server.PlayerCtx + (*FishRecord)(nil), // 38: server.FishRecord + (*GWFishRecord)(nil), // 39: server.GWFishRecord + (*GWSceneState)(nil), // 40: server.GWSceneState + (*WRInviteRobot)(nil), // 41: server.WRInviteRobot + (*WRInviteCreateRoom)(nil), // 42: server.WRInviteCreateRoom + (*WGAgentKickOutPlayer)(nil), // 43: server.WGAgentKickOutPlayer + (*WDDataAnalysis)(nil), // 44: server.WDDataAnalysis + (*PlayerCard)(nil), // 45: server.PlayerCard + (*GNPlayerCards)(nil), // 46: server.GNPlayerCards + (*RobotData)(nil), // 47: server.RobotData + (*GNPlayerParam)(nil), // 48: server.GNPlayerParam + (*GWRebuildScene)(nil), // 49: server.GWRebuildScene + (*WGRebindPlayerSnId)(nil), // 50: server.WGRebindPlayerSnId + (*GWPlayerFlag)(nil), // 51: server.GWPlayerFlag + (*WGHundredOp)(nil), // 52: server.WGHundredOp + (*GWNewNotice)(nil), // 53: server.GWNewNotice + (*PlayerStatics)(nil), // 54: server.PlayerStatics + (*GWPlayerStatics)(nil), // 55: server.GWPlayerStatics + (*WGResetCoinPool)(nil), // 56: server.WGResetCoinPool + (*WGSetPlayerBlackLevel)(nil), // 57: server.WGSetPlayerBlackLevel + (*GWAutoRelieveWBLevel)(nil), // 58: server.GWAutoRelieveWBLevel + (*GWScenePlayerLog)(nil), // 59: server.GWScenePlayerLog + (*GWPlayerForceLeave)(nil), // 60: server.GWPlayerForceLeave + (*PlayerData)(nil), // 61: server.PlayerData + (*GWPlayerData)(nil), // 62: server.GWPlayerData + (*PlayerWinScore)(nil), // 63: server.PlayerWinScore + (*GWPlayerWinScore)(nil), // 64: server.GWPlayerWinScore + (*WGPayerOnGameCount)(nil), // 65: server.WGPayerOnGameCount + (*GRGameFreeData)(nil), // 66: server.GRGameFreeData + (*WGSyncPlayerSafeBoxCoin)(nil), // 67: server.WGSyncPlayerSafeBoxCoin + (*WGClubMessage)(nil), // 68: server.WGClubMessage + (*DWThirdRebateMessage)(nil), // 69: server.DWThirdRebateMessage + (*DWThirdRoundMessage)(nil), // 70: server.DWThirdRoundMessage + (*WDACKThirdRebateMessage)(nil), // 71: server.WDACKThirdRebateMessage + (*GWGameStateLog)(nil), // 72: server.GWGameStateLog + (*GWGameState)(nil), // 73: server.GWGameState + (*GWGameJackList)(nil), // 74: server.GWGameJackList + (*GWGameJackCoin)(nil), // 75: server.GWGameJackCoin + (*WGNiceIdRebind)(nil), // 76: server.WGNiceIdRebind + (*PLAYERWINCOININFO)(nil), // 77: server.PLAYERWINCOININFO + (*GWPLAYERWINCOIN)(nil), // 78: server.GWPLAYERWINCOIN + (*GWPlayerAutoMarkTag)(nil), // 79: server.GWPlayerAutoMarkTag + (*WGInviteRobEnterCoinSceneQueue)(nil), // 80: server.WGInviteRobEnterCoinSceneQueue + (*WGGameForceStart)(nil), // 81: server.WGGameForceStart + (*ProfitControlGameCfg)(nil), // 82: server.ProfitControlGameCfg + (*ProfitControlPlatformCfg)(nil), // 83: server.ProfitControlPlatformCfg + (*WGProfitControlCorrect)(nil), // 84: server.WGProfitControlCorrect + (*GWChangeSceneEvent)(nil), // 85: server.GWChangeSceneEvent + (*PlayerIParam)(nil), // 86: server.PlayerIParam + (*PlayerSParam)(nil), // 87: server.PlayerSParam + (*PlayerCParam)(nil), // 88: server.PlayerCParam + (*PlayerMatchCoin)(nil), // 89: server.PlayerMatchCoin + (*GWPlayerMatchBilled)(nil), // 90: server.GWPlayerMatchBilled + (*GWPlayerMatchGrade)(nil), // 91: server.GWPlayerMatchGrade + (*WGPlayerQuitMatch)(nil), // 92: server.WGPlayerQuitMatch + (*WGSceneMatchBaseChange)(nil), // 93: server.WGSceneMatchBaseChange + (*SSRedirectToPlayer)(nil), // 94: server.SSRedirectToPlayer + (*WGInviteMatchRob)(nil), // 95: server.WGInviteMatchRob + (*GameInfo)(nil), // 96: server.GameInfo + (*WGGameJackpot)(nil), // 97: server.WGGameJackpot + (*BigWinHistoryInfo)(nil), // 98: server.BigWinHistoryInfo + (*WGPlayerEnterMiniGame)(nil), // 99: server.WGPlayerEnterMiniGame + (*WGPlayerLeaveMiniGame)(nil), // 100: server.WGPlayerLeaveMiniGame + (*WGPlayerLeave)(nil), // 101: server.WGPlayerLeave + (*GWPlayerLeaveMiniGame)(nil), // 102: server.GWPlayerLeaveMiniGame + (*GWDestroyMiniScene)(nil), // 103: server.GWDestroyMiniScene + (*GRDestroyScene)(nil), // 104: server.GRDestroyScene + (*RWAccountInvalid)(nil), // 105: server.RWAccountInvalid + (*WGDTRoomInfo)(nil), // 106: server.WGDTRoomInfo + (*PlayerDTCoin)(nil), // 107: server.PlayerDTCoin + (*EResult)(nil), // 108: server.EResult + (*GWDTRoomInfo)(nil), // 109: server.GWDTRoomInfo + (*WGRoomResults)(nil), // 110: server.WGRoomResults + (*GWRoomResults)(nil), // 111: server.GWRoomResults + (*GWAddSingleAdjust)(nil), // 112: server.GWAddSingleAdjust + (*WGSingleAdjust)(nil), // 113: server.WGSingleAdjust + (*WbCtrlCfg)(nil), // 114: server.WbCtrlCfg + nil, // 115: server.WGPlayerEnter.ItemsEntry + nil, // 116: server.WGPlayerEnter.RankScoreEntry + nil, // 117: server.GWPlayerLeave.ItemsEntry + nil, // 118: server.GWPlayerLeave.MatchRobotGradesEntry + nil, // 119: server.GWPlayerLeave.RankScoreEntry + (*DB_GameFree)(nil), // 120: server.DB_GameFree } var file_server_proto_depIdxs = []int32{ 1, // 0: server.SGBindGroupTag.Code:type_name -> server.SGBindGroupTag.OpCode 4, // 1: server.ServerCtrl.Params:type_name -> server.OpResultParam - 119, // 2: server.WGCreateScene.DBGameFree:type_name -> server.DB_GameFree - 85, // 3: server.WGPlayerEnter.IParams:type_name -> server.PlayerIParam - 86, // 4: server.WGPlayerEnter.SParams:type_name -> server.PlayerSParam - 87, // 5: server.WGPlayerEnter.CParams:type_name -> server.PlayerCParam - 114, // 6: server.WGPlayerEnter.Items:type_name -> server.WGPlayerEnter.ItemsEntry - 115, // 7: server.WGPlayerEnter.RankScore:type_name -> server.WGPlayerEnter.RankScoreEntry - 116, // 8: server.GWPlayerLeave.Items:type_name -> server.GWPlayerLeave.ItemsEntry - 117, // 9: server.GWPlayerLeave.MatchRobotGrades:type_name -> server.GWPlayerLeave.MatchRobotGradesEntry - 118, // 10: server.GWPlayerLeave.RankScore:type_name -> server.GWPlayerLeave.RankScoreEntry - 26, // 11: server.ReplaySequene.Sequenes:type_name -> server.ReplayRecord - 27, // 12: server.GRReplaySequene.Rec:type_name -> server.ReplaySequene - 25, // 13: server.GRReplaySequene.Datas:type_name -> server.ReplayPlayerData - 33, // 14: server.GWGameRec.Datas:type_name -> server.PlayerGameRec - 37, // 15: server.GWFishRecord.FishRecords:type_name -> server.FishRecord - 44, // 16: server.GNPlayerCards.PlayerCards:type_name -> server.PlayerCard - 46, // 17: server.GNPlayerParam.Playerdata:type_name -> server.RobotData - 53, // 18: server.GWPlayerStatics.Datas:type_name -> server.PlayerStatics - 60, // 19: server.GWPlayerData.Datas:type_name -> server.PlayerData - 62, // 20: server.GWPlayerWinScore.PlayerWinScores:type_name -> server.PlayerWinScore - 119, // 21: server.GRGameFreeData.DBGameFree:type_name -> server.DB_GameFree - 119, // 22: server.WGClubMessage.DBGameFree:type_name -> server.DB_GameFree - 76, // 23: server.GWPLAYERWINCOIN.player:type_name -> server.PLAYERWINCOININFO - 81, // 24: server.ProfitControlPlatformCfg.GameCfg:type_name -> server.ProfitControlGameCfg - 82, // 25: server.WGProfitControlCorrect.Cfg:type_name -> server.ProfitControlPlatformCfg - 88, // 26: server.GWPlayerMatchBilled.Players:type_name -> server.PlayerMatchCoin - 88, // 27: server.GWPlayerMatchGrade.Players:type_name -> server.PlayerMatchCoin - 95, // 28: server.WGGameJackpot.Info:type_name -> server.GameInfo - 106, // 29: server.GWDTRoomInfo.Players:type_name -> server.PlayerDTCoin - 107, // 30: server.GWDTRoomInfo.Results:type_name -> server.EResult - 31, // [31:31] is the sub-list for method output_type - 31, // [31:31] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 120, // 2: server.WGCreateScene.DBGameFree:type_name -> server.DB_GameFree + 86, // 3: server.WGPlayerEnter.IParams:type_name -> server.PlayerIParam + 87, // 4: server.WGPlayerEnter.SParams:type_name -> server.PlayerSParam + 88, // 5: server.WGPlayerEnter.CParams:type_name -> server.PlayerCParam + 115, // 6: server.WGPlayerEnter.Items:type_name -> server.WGPlayerEnter.ItemsEntry + 116, // 7: server.WGPlayerEnter.RankScore:type_name -> server.WGPlayerEnter.RankScoreEntry + 117, // 8: server.GWPlayerLeave.Items:type_name -> server.GWPlayerLeave.ItemsEntry + 118, // 9: server.GWPlayerLeave.MatchRobotGrades:type_name -> server.GWPlayerLeave.MatchRobotGradesEntry + 119, // 10: server.GWPlayerLeave.RankScore:type_name -> server.GWPlayerLeave.RankScoreEntry + 27, // 11: server.ReplaySequene.Sequenes:type_name -> server.ReplayRecord + 28, // 12: server.GRReplaySequene.Rec:type_name -> server.ReplaySequene + 26, // 13: server.GRReplaySequene.Datas:type_name -> server.ReplayPlayerData + 34, // 14: server.GWGameRec.Datas:type_name -> server.PlayerGameRec + 38, // 15: server.GWFishRecord.FishRecords:type_name -> server.FishRecord + 45, // 16: server.GNPlayerCards.PlayerCards:type_name -> server.PlayerCard + 47, // 17: server.GNPlayerParam.Playerdata:type_name -> server.RobotData + 54, // 18: server.GWPlayerStatics.Datas:type_name -> server.PlayerStatics + 61, // 19: server.GWPlayerData.Datas:type_name -> server.PlayerData + 63, // 20: server.GWPlayerWinScore.PlayerWinScores:type_name -> server.PlayerWinScore + 120, // 21: server.GRGameFreeData.DBGameFree:type_name -> server.DB_GameFree + 120, // 22: server.WGClubMessage.DBGameFree:type_name -> server.DB_GameFree + 77, // 23: server.GWPLAYERWINCOIN.player:type_name -> server.PLAYERWINCOININFO + 82, // 24: server.ProfitControlPlatformCfg.GameCfg:type_name -> server.ProfitControlGameCfg + 83, // 25: server.WGProfitControlCorrect.Cfg:type_name -> server.ProfitControlPlatformCfg + 89, // 26: server.GWPlayerMatchBilled.Players:type_name -> server.PlayerMatchCoin + 89, // 27: server.GWPlayerMatchGrade.Players:type_name -> server.PlayerMatchCoin + 96, // 28: server.WGGameJackpot.Info:type_name -> server.GameInfo + 107, // 29: server.GWDTRoomInfo.Players:type_name -> server.PlayerDTCoin + 108, // 30: server.GWDTRoomInfo.Results:type_name -> server.EResult + 14, // 31: server.WGPlayerEnter.ItemsEntry.value:type_name -> server.ItemParam + 14, // 32: server.GWPlayerLeave.ItemsEntry.value:type_name -> server.ItemParam + 33, // [33:33] is the sub-list for method output_type + 33, // [33:33] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name } func init() { file_server_proto_init() } @@ -10086,7 +10199,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RebateTask); i { + switch v := v.(*ItemParam); i { case 0: return &v.state case 1: @@ -10098,7 +10211,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerEnter); i { + switch v := v.(*RebateTask); i { case 0: return &v.state case 1: @@ -10110,7 +10223,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGAudienceSit); i { + switch v := v.(*WGPlayerEnter); i { case 0: return &v.state case 1: @@ -10122,7 +10235,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerReturn); i { + switch v := v.(*WGAudienceSit); i { case 0: return &v.state case 1: @@ -10134,7 +10247,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerLeave); i { + switch v := v.(*WGPlayerReturn); i { case 0: return &v.state case 1: @@ -10146,7 +10259,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerDropLine); i { + switch v := v.(*GWPlayerLeave); i { case 0: return &v.state case 1: @@ -10158,7 +10271,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerRehold); i { + switch v := v.(*WGPlayerDropLine); i { case 0: return &v.state case 1: @@ -10170,7 +10283,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWBilledRoomCard); i { + switch v := v.(*WGPlayerRehold); i { case 0: return &v.state case 1: @@ -10182,7 +10295,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GGPlayerSessionBind); i { + switch v := v.(*GWBilledRoomCard); i { case 0: return &v.state case 1: @@ -10194,7 +10307,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GGPlayerSessionUnBind); i { + switch v := v.(*GGPlayerSessionBind); i { case 0: return &v.state case 1: @@ -10206,7 +10319,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGDayTimeChange); i { + switch v := v.(*GGPlayerSessionUnBind); i { case 0: return &v.state case 1: @@ -10218,7 +10331,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplayPlayerData); i { + switch v := v.(*WGDayTimeChange); i { case 0: return &v.state case 1: @@ -10230,7 +10343,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplayRecord); i { + switch v := v.(*ReplayPlayerData); i { case 0: return &v.state case 1: @@ -10242,7 +10355,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplaySequene); i { + switch v := v.(*ReplayRecord); i { case 0: return &v.state case 1: @@ -10254,7 +10367,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRReplaySequene); i { + switch v := v.(*ReplaySequene); i { case 0: return &v.state case 1: @@ -10266,7 +10379,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRLoginRec); i { + switch v := v.(*GRReplaySequene); i { case 0: return &v.state case 1: @@ -10278,7 +10391,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRGameDetail); i { + switch v := v.(*WRLoginRec); i { case 0: return &v.state case 1: @@ -10290,7 +10403,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRPlayerData); i { + switch v := v.(*WRGameDetail); i { case 0: return &v.state case 1: @@ -10302,7 +10415,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WTPlayerPay); i { + switch v := v.(*WRPlayerData); i { case 0: return &v.state case 1: @@ -10314,7 +10427,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerGameRec); i { + switch v := v.(*WTPlayerPay); i { case 0: return &v.state case 1: @@ -10326,7 +10439,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameRec); i { + switch v := v.(*PlayerGameRec); i { case 0: return &v.state case 1: @@ -10338,7 +10451,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWSceneStart); i { + switch v := v.(*GWGameRec); i { case 0: return &v.state case 1: @@ -10350,7 +10463,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerCtx); i { + switch v := v.(*GWSceneStart); i { case 0: return &v.state case 1: @@ -10362,7 +10475,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FishRecord); i { + switch v := v.(*PlayerCtx); i { case 0: return &v.state case 1: @@ -10374,7 +10487,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWFishRecord); i { + switch v := v.(*FishRecord); i { case 0: return &v.state case 1: @@ -10386,7 +10499,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWSceneState); i { + switch v := v.(*GWFishRecord); i { case 0: return &v.state case 1: @@ -10398,7 +10511,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRInviteRobot); i { + switch v := v.(*GWSceneState); i { case 0: return &v.state case 1: @@ -10410,7 +10523,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRInviteCreateRoom); i { + switch v := v.(*WRInviteRobot); i { case 0: return &v.state case 1: @@ -10422,7 +10535,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGAgentKickOutPlayer); i { + switch v := v.(*WRInviteCreateRoom); i { case 0: return &v.state case 1: @@ -10434,7 +10547,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WDDataAnalysis); i { + switch v := v.(*WGAgentKickOutPlayer); i { case 0: return &v.state case 1: @@ -10446,7 +10559,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerCard); i { + switch v := v.(*WDDataAnalysis); i { case 0: return &v.state case 1: @@ -10458,7 +10571,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GNPlayerCards); i { + switch v := v.(*PlayerCard); i { case 0: return &v.state case 1: @@ -10470,7 +10583,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RobotData); i { + switch v := v.(*GNPlayerCards); i { case 0: return &v.state case 1: @@ -10482,7 +10595,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GNPlayerParam); i { + switch v := v.(*RobotData); i { case 0: return &v.state case 1: @@ -10494,7 +10607,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWRebuildScene); i { + switch v := v.(*GNPlayerParam); i { case 0: return &v.state case 1: @@ -10506,7 +10619,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGRebindPlayerSnId); i { + switch v := v.(*GWRebuildScene); i { case 0: return &v.state case 1: @@ -10518,7 +10631,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerFlag); i { + switch v := v.(*WGRebindPlayerSnId); i { case 0: return &v.state case 1: @@ -10530,7 +10643,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGHundredOp); i { + switch v := v.(*GWPlayerFlag); i { case 0: return &v.state case 1: @@ -10542,7 +10655,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWNewNotice); i { + switch v := v.(*WGHundredOp); i { case 0: return &v.state case 1: @@ -10554,7 +10667,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerStatics); i { + switch v := v.(*GWNewNotice); i { case 0: return &v.state case 1: @@ -10566,7 +10679,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerStatics); i { + switch v := v.(*PlayerStatics); i { case 0: return &v.state case 1: @@ -10578,7 +10691,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGResetCoinPool); i { + switch v := v.(*GWPlayerStatics); i { case 0: return &v.state case 1: @@ -10590,7 +10703,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGSetPlayerBlackLevel); i { + switch v := v.(*WGResetCoinPool); i { case 0: return &v.state case 1: @@ -10602,7 +10715,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWAutoRelieveWBLevel); i { + switch v := v.(*WGSetPlayerBlackLevel); i { case 0: return &v.state case 1: @@ -10614,7 +10727,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWScenePlayerLog); i { + switch v := v.(*GWAutoRelieveWBLevel); i { case 0: return &v.state case 1: @@ -10626,7 +10739,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerForceLeave); i { + switch v := v.(*GWScenePlayerLog); i { case 0: return &v.state case 1: @@ -10638,7 +10751,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerData); i { + switch v := v.(*GWPlayerForceLeave); i { case 0: return &v.state case 1: @@ -10650,7 +10763,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerData); i { + switch v := v.(*PlayerData); i { case 0: return &v.state case 1: @@ -10662,7 +10775,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerWinScore); i { + switch v := v.(*GWPlayerData); i { case 0: return &v.state case 1: @@ -10674,7 +10787,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerWinScore); i { + switch v := v.(*PlayerWinScore); i { case 0: return &v.state case 1: @@ -10686,7 +10799,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPayerOnGameCount); i { + switch v := v.(*GWPlayerWinScore); i { case 0: return &v.state case 1: @@ -10698,7 +10811,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRGameFreeData); i { + switch v := v.(*WGPayerOnGameCount); i { case 0: return &v.state case 1: @@ -10710,7 +10823,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGSyncPlayerSafeBoxCoin); i { + switch v := v.(*GRGameFreeData); i { case 0: return &v.state case 1: @@ -10722,7 +10835,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGClubMessage); i { + switch v := v.(*WGSyncPlayerSafeBoxCoin); i { case 0: return &v.state case 1: @@ -10734,7 +10847,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DWThirdRebateMessage); i { + switch v := v.(*WGClubMessage); i { case 0: return &v.state case 1: @@ -10746,7 +10859,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DWThirdRoundMessage); i { + switch v := v.(*DWThirdRebateMessage); i { case 0: return &v.state case 1: @@ -10758,7 +10871,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WDACKThirdRebateMessage); i { + switch v := v.(*DWThirdRoundMessage); i { case 0: return &v.state case 1: @@ -10770,7 +10883,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameStateLog); i { + switch v := v.(*WDACKThirdRebateMessage); i { case 0: return &v.state case 1: @@ -10782,7 +10895,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameState); i { + switch v := v.(*GWGameStateLog); i { case 0: return &v.state case 1: @@ -10794,7 +10907,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameJackList); i { + switch v := v.(*GWGameState); i { case 0: return &v.state case 1: @@ -10806,7 +10919,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameJackCoin); i { + switch v := v.(*GWGameJackList); i { case 0: return &v.state case 1: @@ -10818,7 +10931,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGNiceIdRebind); i { + switch v := v.(*GWGameJackCoin); i { case 0: return &v.state case 1: @@ -10830,7 +10943,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PLAYERWINCOININFO); i { + switch v := v.(*WGNiceIdRebind); i { case 0: return &v.state case 1: @@ -10842,7 +10955,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPLAYERWINCOIN); i { + switch v := v.(*PLAYERWINCOININFO); i { case 0: return &v.state case 1: @@ -10854,7 +10967,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerAutoMarkTag); i { + switch v := v.(*GWPLAYERWINCOIN); i { case 0: return &v.state case 1: @@ -10866,7 +10979,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGInviteRobEnterCoinSceneQueue); i { + switch v := v.(*GWPlayerAutoMarkTag); i { case 0: return &v.state case 1: @@ -10878,7 +10991,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGGameForceStart); i { + switch v := v.(*WGInviteRobEnterCoinSceneQueue); i { case 0: return &v.state case 1: @@ -10890,7 +11003,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProfitControlGameCfg); i { + switch v := v.(*WGGameForceStart); i { case 0: return &v.state case 1: @@ -10902,7 +11015,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProfitControlPlatformCfg); i { + switch v := v.(*ProfitControlGameCfg); i { case 0: return &v.state case 1: @@ -10914,7 +11027,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGProfitControlCorrect); i { + switch v := v.(*ProfitControlPlatformCfg); i { case 0: return &v.state case 1: @@ -10926,7 +11039,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWChangeSceneEvent); i { + switch v := v.(*WGProfitControlCorrect); i { case 0: return &v.state case 1: @@ -10938,7 +11051,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerIParam); i { + switch v := v.(*GWChangeSceneEvent); i { case 0: return &v.state case 1: @@ -10950,7 +11063,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerSParam); i { + switch v := v.(*PlayerIParam); i { case 0: return &v.state case 1: @@ -10962,7 +11075,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerCParam); i { + switch v := v.(*PlayerSParam); i { case 0: return &v.state case 1: @@ -10974,7 +11087,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerMatchCoin); i { + switch v := v.(*PlayerCParam); i { case 0: return &v.state case 1: @@ -10986,7 +11099,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerMatchBilled); i { + switch v := v.(*PlayerMatchCoin); i { case 0: return &v.state case 1: @@ -10998,7 +11111,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerMatchGrade); i { + switch v := v.(*GWPlayerMatchBilled); i { case 0: return &v.state case 1: @@ -11010,7 +11123,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerQuitMatch); i { + switch v := v.(*GWPlayerMatchGrade); i { case 0: return &v.state case 1: @@ -11022,7 +11135,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGSceneMatchBaseChange); i { + switch v := v.(*WGPlayerQuitMatch); i { case 0: return &v.state case 1: @@ -11034,7 +11147,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SSRedirectToPlayer); i { + switch v := v.(*WGSceneMatchBaseChange); i { case 0: return &v.state case 1: @@ -11046,7 +11159,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGInviteMatchRob); i { + switch v := v.(*SSRedirectToPlayer); i { case 0: return &v.state case 1: @@ -11058,7 +11171,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GameInfo); i { + switch v := v.(*WGInviteMatchRob); i { case 0: return &v.state case 1: @@ -11070,7 +11183,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGGameJackpot); i { + switch v := v.(*GameInfo); i { case 0: return &v.state case 1: @@ -11082,7 +11195,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BigWinHistoryInfo); i { + switch v := v.(*WGGameJackpot); i { case 0: return &v.state case 1: @@ -11094,7 +11207,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerEnterMiniGame); i { + switch v := v.(*BigWinHistoryInfo); i { case 0: return &v.state case 1: @@ -11106,7 +11219,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerLeaveMiniGame); i { + switch v := v.(*WGPlayerEnterMiniGame); i { case 0: return &v.state case 1: @@ -11118,7 +11231,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerLeave); i { + switch v := v.(*WGPlayerLeaveMiniGame); i { case 0: return &v.state case 1: @@ -11130,7 +11243,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerLeaveMiniGame); i { + switch v := v.(*WGPlayerLeave); i { case 0: return &v.state case 1: @@ -11142,7 +11255,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWDestroyMiniScene); i { + switch v := v.(*GWPlayerLeaveMiniGame); i { case 0: return &v.state case 1: @@ -11154,7 +11267,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRDestroyScene); i { + switch v := v.(*GWDestroyMiniScene); i { case 0: return &v.state case 1: @@ -11166,7 +11279,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RWAccountInvalid); i { + switch v := v.(*GRDestroyScene); i { case 0: return &v.state case 1: @@ -11178,7 +11291,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGDTRoomInfo); i { + switch v := v.(*RWAccountInvalid); i { case 0: return &v.state case 1: @@ -11190,7 +11303,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerDTCoin); i { + switch v := v.(*WGDTRoomInfo); i { case 0: return &v.state case 1: @@ -11202,7 +11315,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EResult); i { + switch v := v.(*PlayerDTCoin); i { case 0: return &v.state case 1: @@ -11214,7 +11327,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWDTRoomInfo); i { + switch v := v.(*EResult); i { case 0: return &v.state case 1: @@ -11226,7 +11339,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGRoomResults); i { + switch v := v.(*GWDTRoomInfo); i { case 0: return &v.state case 1: @@ -11238,7 +11351,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWRoomResults); i { + switch v := v.(*WGRoomResults); i { case 0: return &v.state case 1: @@ -11250,7 +11363,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWAddSingleAdjust); i { + switch v := v.(*GWRoomResults); i { case 0: return &v.state case 1: @@ -11262,7 +11375,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGSingleAdjust); i { + switch v := v.(*GWAddSingleAdjust); i { case 0: return &v.state case 1: @@ -11274,6 +11387,18 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WGSingleAdjust); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WbCtrlCfg); i { case 0: return &v.state @@ -11292,7 +11417,7 @@ func file_server_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_server_proto_rawDesc, NumEnums: 2, - NumMessages: 117, + NumMessages: 118, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/server.proto b/protocol/server/server.proto index 11fd06e..fe1e5f2 100644 --- a/protocol/server/server.proto +++ b/protocol/server/server.proto @@ -202,6 +202,12 @@ message GWDestroyScene { message WGGraceDestroyScene { repeated int32 Ids = 1; } + +message ItemParam { + int64 ItemNum = 1; // 物品数量 + int64 ExpireTime = 2; //有效期截止时间 +} + message RebateTask { bool RebateSwitch = 1; //返利开关 repeated string RebateGameCfg = 2; //已打开的游戏配置 gameid+gamemode @@ -225,7 +231,7 @@ message WGPlayerEnter { int32 SnId = 14; bytes SingleAdjust = 15;//单控数据 int32 Pos = 16; - map Items = 17; + map Items = 17; repeated int32 MatchParams = 18;//比赛参数 map RankScore = 19;// 排位积分 } @@ -264,7 +270,7 @@ message GWPlayerLeave{ int32 LostTimes = 12; //输局 int64 TotalConvertibleFlow = 13; //流水 int64 ValidCacheBetTotal = 14; //有效下注缓存 - map Items = 15; + map Items = 15; int32 MatchId = 16;//比赛场id int64 CurIsWin = 17;//本局是否赢 负数:输 0:平局 正数:赢 map MatchRobotGrades = 18;//比赛数据 diff --git a/protocol/tienlen/tienlen.pb.go b/protocol/tienlen/tienlen.pb.go index 8a2acf3..ba0e6c1 100644 --- a/protocol/tienlen/tienlen.pb.go +++ b/protocol/tienlen/tienlen.pb.go @@ -508,6 +508,7 @@ type SCTienLenRoomInfo struct { SceneAdd int32 `protobuf:"varint,28,opt,name=SceneAdd,proto3" json:"SceneAdd,omitempty"` // 场次加成(百分比) RecordId string `protobuf:"bytes,29,opt,name=RecordId,proto3" json:"RecordId,omitempty"` // 牌局ID OutCardRecord []int32 `protobuf:"varint,30,rep,packed,name=OutCardRecord,proto3" json:"OutCardRecord,omitempty"` //已打出去的牌 + IsOutRecord bool `protobuf:"varint,31,opt,name=IsOutRecord,proto3" json:"IsOutRecord,omitempty"` //是否能用记牌器 } func (x *SCTienLenRoomInfo) Reset() { @@ -731,6 +732,13 @@ func (x *SCTienLenRoomInfo) GetOutCardRecord() []int32 { return nil } +func (x *SCTienLenRoomInfo) GetIsOutRecord() bool { + if x != nil { + return x.IsOutRecord + } + return false +} + //房间状态更新 type SCTienLenRoomState struct { state protoimpl.MessageState @@ -1342,7 +1350,8 @@ type SCTienLenCard struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Cards []int32 `protobuf:"varint,1,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` //手牌 + Cards []int32 `protobuf:"varint,1,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` //手牌 + IsOutRecord bool `protobuf:"varint,2,opt,name=IsOutRecord,proto3" json:"IsOutRecord,omitempty"` // 是否有出牌记录 } func (x *SCTienLenCard) Reset() { @@ -1384,6 +1393,13 @@ func (x *SCTienLenCard) GetCards() []int32 { return nil } +func (x *SCTienLenCard) GetIsOutRecord() bool { + if x != nil { + return x.IsOutRecord + } + return false +} + //测试数据 type SCTienLenCardTest struct { state protoimpl.MessageState @@ -2054,7 +2070,7 @@ var file_tienlen_proto_rawDesc = []byte{ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xdb, 0x06, 0x0a, 0x11, 0x53, + 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xfd, 0x06, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, @@ -2108,221 +2124,225 @@ var file_tienlen_proto_rawDesc = []byte{ 0x49, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x75, 0x74, 0x43, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x43, 0x54, 0x69, - 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x45, 0x0a, 0x11, - 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, - 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, - 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x4f, 0x70, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, - 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69, 0x65, - 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x28, 0x0a, 0x14, - 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb3, 0x02, 0x0a, 0x17, 0x54, 0x69, 0x65, 0x6e, - 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, - 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, - 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0c, 0x57, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, - 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, - 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x69, 0x65, 0x6e, - 0x6c, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x41, 0x64, 0x64, - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x22, 0x4d, 0x0a, - 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, - 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, + 0x72, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x4f, 0x75, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, + 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x43, + 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x45, + 0x0a, 0x11, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, + 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, + 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x4f, + 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, + 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, + 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2e, + 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, + 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x28, + 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb3, 0x02, 0x0a, 0x17, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, - 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0xc4, 0x01, 0x0a, - 0x18, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, - 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, - 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, - 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x22, 0x25, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, - 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x88, 0x02, 0x0a, 0x11, 0x53, + 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x57, + 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x41, 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x41, 0x64, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x69, + 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x41, + 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, + 0x75, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x22, + 0x4d, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, + 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, + 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, + 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0xc4, + 0x01, 0x0a, 0x18, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, + 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, + 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, + 0x50, 0x6f, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, + 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x47, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, + 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x88, + 0x02, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, + 0x54, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, - 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x53, 0x43, 0x54, 0x69, 0x65, - 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, - 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x4c, 0x6f, - 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x72, - 0x61, 0x64, 0x65, 0x73, 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, 0x7f, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, - 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x4e, - 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x3b, 0x0a, 0x19, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, + 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x47, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, + 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x39, + 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 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, 0x7f, 0x0a, 0x11, 0x53, 0x43, 0x54, + 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, + 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, + 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x3b, 0x0a, 0x19, 0x53, 0x43, + 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, + 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a, 0x53, 0x43, 0x54, 0x69, 0x65, + 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, + 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, + 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, + 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x69, + 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x42, + 0x6f, 0x6d, 0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x42, + 0x6f, 0x6d, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, 0x5f, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, + 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, + 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, + 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, + 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, + 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, + 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, + 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, + 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, + 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, + 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, + 0x66, 0x74, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, + 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, + 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, + 0x74, 0x32, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, + 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, + 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, 0x10, 0x4f, + 0x74, 0x68, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, + 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, + 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x31, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, + 0x73, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x2a, 0x0a, + 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, + 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, + 0x75, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, + 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x46, 0x69, + 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, + 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, + 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x14, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x20, 0x0a, 0x0c, + 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x15, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x20, + 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x16, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, + 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, + 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, + 0x74, 0x33, 0x12, 0x19, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, + 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, + 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x49, 0x73, 0x57, 0x69, 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, + 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, + 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x41, + 0x0a, 0x1b, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, + 0x74, 0x2a, 0x3e, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10, + 0x02, 0x2a, 0xb6, 0x04, 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a, + 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, + 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, + 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfc, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfd, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xfe, 0x29, 0x12, 0x20, 0x0a, 0x1b, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xff, 0x29, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, + 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x10, 0x80, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, + 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, + 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, + 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12, + 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, - 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, - 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, - 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x42, 0x6f, 0x6d, 0x62, 0x5f, - 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x42, 0x6f, 0x6d, 0x62, 0x4e, - 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, - 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, - 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, - 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, - 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, - 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, - 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x27, 0x0a, 0x10, - 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, - 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, - 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x27, - 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, - 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, - 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, 0x10, 0x4f, 0x74, 0x68, 0x65, 0x72, - 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, - 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x24, 0x0a, - 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x32, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, - 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, - 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x2a, 0x0a, 0x11, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, - 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, - 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, - 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, - 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, - 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x14, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x16, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x20, 0x0a, 0x0c, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x17, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x19, - 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x45, - 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, - 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, - 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, - 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x41, 0x0a, 0x1b, 0x53, 0x43, - 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x68, 0x69, - 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, - 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x2a, 0x3e, 0x0a, - 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, - 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, - 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0xb6, 0x04, - 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, - 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x69, 0x65, 0x6e, - 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfc, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x4f, 0x70, 0x10, 0xfd, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xfe, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xff, 0x29, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, - 0x72, 0x64, 0x10, 0x80, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, - 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, - 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, - 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, - 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, - 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, - 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, - 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, - 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, - 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, - 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, - 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17, + 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, + 0x65, 0x6e, 0x41, 0x49, 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, + 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, + 0x54, 0x65, 0x73, 0x74, 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b, + 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, + 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, + 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x74, 0x69, 0x65, 0x6e, + 0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/tienlen/tienlen.proto b/protocol/tienlen/tienlen.proto index e8cfed8..2ac8cf7 100644 --- a/protocol/tienlen/tienlen.proto +++ b/protocol/tienlen/tienlen.proto @@ -99,7 +99,7 @@ message SCTienLenRoomInfo { string RecordId = 29; // 牌局ID repeated int32 OutCardRecord = 30 ;//已打出去的牌 - + bool IsOutRecord = 31;//是否能用记牌器 } //房间状态更新 @@ -168,6 +168,7 @@ message SCTienLenSmallGameBilled { //发牌 message SCTienLenCard { repeated int32 Cards = 1; //手牌 + bool IsOutRecord = 2; // 是否有出牌记录 } //测试数据 diff --git a/srvdata/db_pigbank_diamond.go b/srvdata/db_pigbank_diamond.go new file mode 100644 index 0000000..2e5715b --- /dev/null +++ b/srvdata/db_pigbank_diamond.go @@ -0,0 +1,68 @@ +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_PigBank_DiamondMgr = &DB_PigBank_DiamondMgr{pool: make(map[int32]*server.DB_PigBank_Diamond), Datas: &server.DB_PigBank_DiamondArray{}} + +type DB_PigBank_DiamondMgr struct { + Datas *server.DB_PigBank_DiamondArray + pool map[int32]*server.DB_PigBank_Diamond +} + +func (this *DB_PigBank_DiamondMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_PigBank_DiamondMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_PigBank_DiamondArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_PigBank_DiamondMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + } +} + +func (this *DB_PigBank_DiamondMgr) GetData(id int32) *server.DB_PigBank_Diamond { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + +func init() { + DataMgr.RegisteLoader("DB_PigBank_Diamond.dat", &ProtobufDataLoader{dh: PBDB_PigBank_DiamondMgr}) +} diff --git a/srvdata/db_pigbank_prop.go b/srvdata/db_pigbank_prop.go new file mode 100644 index 0000000..ad66c85 --- /dev/null +++ b/srvdata/db_pigbank_prop.go @@ -0,0 +1,69 @@ + +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_Pigbank_PropMgr = &DB_Pigbank_PropMgr{pool: make(map[int32]*server.DB_Pigbank_Prop), Datas: &server.DB_Pigbank_PropArray{}} + +type DB_Pigbank_PropMgr struct { + Datas *server.DB_Pigbank_PropArray + pool map[int32]*server.DB_Pigbank_Prop +} + +func (this *DB_Pigbank_PropMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_Pigbank_PropMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_Pigbank_PropArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_Pigbank_PropMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + } +} + +func (this *DB_Pigbank_PropMgr) GetData(id int32) *server.DB_Pigbank_Prop { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + +func init() { + DataMgr.RegisteLoader("DB_Pigbank_Prop.dat", &ProtobufDataLoader{dh: PBDB_Pigbank_PropMgr}) +} diff --git a/tools/xlsx2binary/agc.go b/tools/xlsx2binary/agc.go new file mode 100644 index 0000000..799490b --- /dev/null +++ b/tools/xlsx2binary/agc.go @@ -0,0 +1,13000 @@ + +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package main +import ( + "encoding/json" + "fmt" + "os" + "runtime" + "strconv" + "strings" + + "github.com/tealeg/xlsx" + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var _ = strings.Split + + +func AgcConvertDB_ActSign(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_ActSignArray{ + Arr:make([]*server.DB_ActSign, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_ActSign{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Type = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Name = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Item_Id = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Grade = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Activity1(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Activity1Array{ + Arr:make([]*server.DB_Activity1, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Activity1{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Parameter = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Turn = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + data.Title = row.Cells[3].String() + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Costype = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.Costp = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Cost = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.Typee = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.Propid = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.Value = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.Getype = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_AnimalColor(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_AnimalColorArray{ + Arr:make([]*server.DB_AnimalColor, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_AnimalColor{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Desc = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[2].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[2].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.ColorChance = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_ArtilleryRate(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_ArtilleryRateArray{ + Arr:make([]*server.DB_ArtilleryRate, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_ArtilleryRate{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Shell = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Level = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + data.Desc = row.Cells[3].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_ArtillerySkin(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_ArtillerySkinArray{ + Arr:make([]*server.DB_ArtillerySkin, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_ArtillerySkin{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.CannonId = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Type = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.ExprieTime = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.Show = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Order = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + + + data.NameIcon = row.Cells[7].String() + + + + + + + if len(row.Cells)<8+1{ + break + } + + + + data.PicIcon = row.Cells[8].String() + + + + + + + if len(row.Cells)<9+1{ + break + } + + + + data.BaseIcon = row.Cells[9].String() + + + + + + + if len(row.Cells)<10+1{ + break + } + + + + data.ShellIcon = row.Cells[10].String() + + + + + + + if len(row.Cells)<11+1{ + break + } + + + + data.NetIcon = row.Cells[11].String() + + + + + + + if len(row.Cells)<12+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[12].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[12].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Vip = arrInt + + + + + + if len(row.Cells)<13+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) + data.Gold = int32(temp) + + + + + + + + + if len(row.Cells)<14+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) + data.Diamond = int32(temp) + + + + + + + + + if len(row.Cells)<15+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) + data.Income = int32(temp) + + + + + + + + + if len(row.Cells)<16+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) + data.Speed = int32(temp) + + + + + + + + + if len(row.Cells)<17+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) + data.Caught = int32(temp) + + + + + + + + + if len(row.Cells)<18+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) + data.Introduce = int32(temp) + + + + + + + + + if len(row.Cells)<19+1{ + break + } + + + + data.Source = row.Cells[19].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_BlackWhite(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_BlackWhiteArray{ + Arr:make([]*server.DB_BlackWhite, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_BlackWhite{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[2].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[2].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.BlackOdds = arrInt + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.WhiteOdds = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_CardsJD(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_CardsJDArray{ + Arr:make([]*server.DB_CardsJD, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_CardsJD{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Card1 = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Card1Score = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Card1HandNum = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + data.Change1Cards = row.Cells[4].String() + + + + + + + if len(row.Cells)<5+1{ + break + } + + + + data.Card2 = row.Cells[5].String() + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Card2Score = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.Card2HandNum = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + + + data.Change2Cards = row.Cells[8].String() + + + + + + + if len(row.Cells)<9+1{ + break + } + + + + data.Card3 = row.Cells[9].String() + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.Card3Score = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) + data.Card3HandNum = int32(temp) + + + + + + + + + if len(row.Cells)<12+1{ + break + } + + + + data.Change3Cards = row.Cells[12].String() + + + + + + + if len(row.Cells)<13+1{ + break + } + + + + data.Card4 = row.Cells[13].String() + + + + + + + if len(row.Cells)<14+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) + data.Card4Score = int32(temp) + + + + + + + + + if len(row.Cells)<15+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) + data.Card4HandNum = int32(temp) + + + + + + + + + if len(row.Cells)<16+1{ + break + } + + + + data.Change4Cards = row.Cells[16].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_CardsYuLe(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_CardsYuLeArray{ + Arr:make([]*server.DB_CardsYuLe, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_CardsYuLe{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Card1 = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Card1Score = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Card1HandNum = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + data.Change1Cards = row.Cells[4].String() + + + + + + + if len(row.Cells)<5+1{ + break + } + + + + data.Card2 = row.Cells[5].String() + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Card2Score = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.Card2HandNum = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + + + data.Change2Cards = row.Cells[8].String() + + + + + + + if len(row.Cells)<9+1{ + break + } + + + + data.Card3 = row.Cells[9].String() + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.Card3Score = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) + data.Card3HandNum = int32(temp) + + + + + + + + + if len(row.Cells)<12+1{ + break + } + + + + data.Change3Cards = row.Cells[12].String() + + + + + + + if len(row.Cells)<13+1{ + break + } + + + + data.Card4 = row.Cells[13].String() + + + + + + + if len(row.Cells)<14+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) + data.Card4Score = int32(temp) + + + + + + + + + if len(row.Cells)<15+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) + data.Card4HandNum = int32(temp) + + + + + + + + + if len(row.Cells)<16+1{ + break + } + + + + data.Change4Cards = row.Cells[16].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_ChessBilledRules(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_ChessBilledRulesArray{ + Arr:make([]*server.DB_ChessBilledRules, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_ChessBilledRules{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.TypeId = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.WinScore = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.LoseScore = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.DrawScore = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.WinTimes = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.OtherScore = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_ChessMatchRules(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_ChessMatchRulesArray{ + Arr:make([]*server.DB_ChessMatchRules, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_ChessMatchRules{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.ScoreMin = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.ScoreMax = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.MatchScoreMin = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.MatchScoreMax = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[5].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[5].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.MatchScoreLowStep = arrInt + + + + + + if len(row.Cells)<6+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[6].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[6].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.MatchScoreHightStep = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_ChessRank(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_ChessRankArray{ + Arr:make([]*server.DB_ChessRank, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_ChessRank{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Score = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Name = row.Cells[2].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_ClientVer(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_ClientVerArray{ + Arr:make([]*server.DB_ClientVer, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_ClientVer{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.PackageFlag = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.PackVers = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + data.GameVers = row.Cells[3].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_CollectBox(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_CollectBoxArray{ + Arr:make([]*server.DB_CollectBox, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_CollectBox{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Rate = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + + + + if row.Cells[2].String() != ""{ + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.ItemID = resultMap + } + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_CollectBoxGain(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_CollectBoxGainArray{ + Arr:make([]*server.DB_CollectBoxGain, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_CollectBoxGain{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Rate = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_CrashSearch(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_CrashSearchArray{ + Arr:make([]*server.DB_CrashSearch, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_CrashSearch{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Time = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Price = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Createroom(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_CreateroomArray{ + Arr:make([]*server.DB_Createroom, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Createroom{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.GameId = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.GameSite = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.GoldRange = arrInt + + + + + + if len(row.Cells)<4+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[4].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[4].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.BetRange = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Fish(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FishArray{ + Arr:make([]*server.DB_Fish, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Fish{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.NameE = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Gold = arrInt + + + + + + if len(row.Cells)<4+1{ + break + } + + + + data.Icon = row.Cells[4].String() + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.Speed = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Exp = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.FrameCnt = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.FrameDelay = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.Rate = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.ShowType = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) + data.Show = int32(temp) + + + + + + + + + if len(row.Cells)<12+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) + data.ShowScale = int32(temp) + + + + + + + + + if len(row.Cells)<13+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[13].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[13].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.ShowPos = arrInt + + + + + + if len(row.Cells)<14+1{ + break + } + + + + data.DieSound = row.Cells[14].String() + + + + + + + if len(row.Cells)<15+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) + data.DieFrame = int32(temp) + + + + + + + + + if len(row.Cells)<16+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) + data.DieRotate = int32(temp) + + + + + + + + + if len(row.Cells)<17+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) + data.DieEffect = int32(temp) + + + + + + + + + if len(row.Cells)<18+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) + data.DieShake = int32(temp) + + + + + + + + + if len(row.Cells)<19+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[19].String(), 10, 32) + data.ShakeRange = int32(temp) + + + + + + + + + if len(row.Cells)<20+1{ + break + } + + + + data.Shape = row.Cells[20].String() + + + + + + + if len(row.Cells)<21+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[21].String(), 10, 32) + data.IsBoss = int32(temp) + + + + + + + + + if len(row.Cells)<22+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[22].String(), 10, 32) + data.ResId = int32(temp) + + + + + + + + + if len(row.Cells)<23+1{ + break + } + + + + data.DieParticle = row.Cells[23].String() + + + + + + + if len(row.Cells)<24+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[24].String(), 10, 32) + data.GroupShape = int32(temp) + + + + + + + + + if len(row.Cells)<25+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[25].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[25].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.GroupFishes = arrInt + + + + + + if len(row.Cells)<26+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[26].String(), 10, 32) + data.Zorder = int32(temp) + + + + + + + + + if len(row.Cells)<27+1{ + break + } + + + + data.ResPng = row.Cells[27].String() + + + + + + + if len(row.Cells)<28+1{ + break + } + + + + data.ResPlist = row.Cells[28].String() + + + + + + + if len(row.Cells)<29+1{ + break + } + + + + data.ExportJson = row.Cells[29].String() + + + + + + + if len(row.Cells)<30+1{ + break + } + + + + data.AimIcon = row.Cells[30].String() + + + + + + + if len(row.Cells)<31+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[31].String(), 10, 32) + data.GameId = int32(temp) + + + + + + + + + if len(row.Cells)<32+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[32].String(), 10, 32) + data.Sort = int32(temp) + + + + + + + + + if len(row.Cells)<33+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[33].String(), 10, 32) + data.FishType = int32(temp) + + + + + + + + + if len(row.Cells)<34+1{ + break + } + + + + data.RandomCoin = row.Cells[34].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_FishOut(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FishOutArray{ + Arr:make([]*server.DB_FishOut, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_FishOut{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.SceneType = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Name = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Exp = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[4].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[4].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Multiple = arrInt + + + + + + if len(row.Cells)<5+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[5].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[5].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Path = arrInt + + + + + + if len(row.Cells)<6+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[6].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[6].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Count = arrInt + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.RefreshInterval = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.Speed = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.Event = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_FishPath(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FishPathArray{ + Arr:make([]*server.DB_FishPath, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_FishPath{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.AppearTime = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.DisappearTime = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_FishRoom(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FishRoomArray{ + Arr:make([]*server.DB_FishRoom, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_FishRoom{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.RoomId = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Name = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + data.SumGold1 = row.Cells[3].String() + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + data.SumGold2 = row.Cells[4].String() + + + + + + + if len(row.Cells)<5+1{ + break + } + + + + data.SumGold3 = row.Cells[5].String() + + + + + + + if len(row.Cells)<6+1{ + break + } + + + + data.SumGold4 = row.Cells[6].String() + + + + + + + if len(row.Cells)<7+1{ + break + } + + + + data.SumGold5 = row.Cells[7].String() + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.BossCDTime = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.LittleBossCDTime = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + + + data.EnableBoss = row.Cells[10].String() + + + + + + + if len(row.Cells)<11+1{ + break + } + + + + data.EnableLittleBoss = row.Cells[11].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_FishSkill(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FishSkillArray{ + Arr:make([]*server.DB_FishSkill, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_FishSkill{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Vip = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Consume = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[4].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[4].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Item = arrInt + + + + + + if len(row.Cells)<5+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[5].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[5].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.OtherConsumer = arrInt + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Multiple = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.Duration = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.SkillGroups = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.GCD = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.Cooldown = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + + + data.Hidden = row.Cells[11].String() + + + + + + + if len(row.Cells)<12+1{ + break + } + + + + data.Describe = row.Cells[12].String() + + + + + + + if len(row.Cells)<13+1{ + break + } + + + + data.Boss = row.Cells[13].String() + + + + + + + if len(row.Cells)<14+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) + data.Type = int32(temp) + + + + + + + + + if len(row.Cells)<15+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) + data.Limit = int32(temp) + + + + + + + + + if len(row.Cells)<16+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) + data.Mutex = int32(temp) + + + + + + + + + if len(row.Cells)<17+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) + data.MutexTime = int32(temp) + + + + + + + + + if len(row.Cells)<18+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) + data.Fury = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_FortuneGod_Odds(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FortuneGod_OddsArray{ + Arr:make([]*server.DB_FortuneGod_Odds, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_FortuneGod_Odds{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Rateodds3 = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Rateodds4 = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Rateodds5 = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FortuneGod_TurnRateArray{ + Arr:make([]*server.DB_FortuneGod_TurnRate, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_FortuneGod_TurnRate{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.ReturnRateMin = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.ReturnRateMax = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Chance = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_FortuneGod_Weight(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FortuneGod_WeightArray{ + Arr:make([]*server.DB_FortuneGod_Weight, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_FortuneGod_Weight{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[2].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[2].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Weight = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_FortuneGod_WeightConditionArray{ + Arr:make([]*server.DB_FortuneGod_WeightCondition, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_FortuneGod_WeightCondition{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.IsNew = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[2].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[2].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.BetScope = arrInt + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.TrueCalcRate = arrInt + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.WeightId = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_GamMatchLV(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_GamMatchLVArray{ + Arr:make([]*server.DB_GamMatchLV, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_GamMatchLV{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[1].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[1].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Star = arrInt + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Name = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Star2 = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.AwardType1 = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.AwardId1 = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Number1 = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.AwardType2 = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.AwardId2 = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.Number2 = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.AwardType3 = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) + data.AwardId3 = int32(temp) + + + + + + + + + if len(row.Cells)<12+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) + data.Number3 = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_GameCoinPool(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_GameCoinPoolArray{ + Arr:make([]*server.DB_GameCoinPool, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_GameCoinPool{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 64) + data.InitValue = int64(temp) + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 64) + data.LowerLimit = int64(temp) + + + + + + + + if len(row.Cells)<5+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) + data.UpperLimit = int64(temp) + + + + + + + + if len(row.Cells)<6+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 64) + data.QuDu = int64(temp) + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.UpperOdds = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.UpperOddsMax = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.LowerOdds = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.LowerOddsMax = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) + data.ProfitRate = int32(temp) + + + + + + + + + if len(row.Cells)<12+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) + data.CtrlRate = int32(temp) + + + + + + + + + if len(row.Cells)<13+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 64) + data.InitNovicValue = int64(temp) + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_GameFree(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_GameFreeArray{ + Arr:make([]*server.DB_GameFree, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_GameFree{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Title = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.GameId = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.GameMode = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.FreeMode = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.GameRule = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.GameType = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.SceneType = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.RankType = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.SceneAdd = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + + + data.Desc = row.Cells[11].String() + + + + + + + if len(row.Cells)<12+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) + data.ShowType = int32(temp) + + + + + + + + + if len(row.Cells)<13+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) + data.SubShowType = int32(temp) + + + + + + + + + if len(row.Cells)<14+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) + data.Flag = int32(temp) + + + + + + + + + if len(row.Cells)<15+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) + data.TestTakeCoin = int32(temp) + + + + + + + + + if len(row.Cells)<16+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) + data.ShowId = int32(temp) + + + + + + + + + if len(row.Cells)<17+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 64) + data.LimitCoin = int64(temp) + + + + + + + + if len(row.Cells)<18+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 64) + data.MaxCoinLimit = int64(temp) + + + + + + + + if len(row.Cells)<19+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[19].String(), 10, 32) + data.ServiceFee = int32(temp) + + + + + + + + + if len(row.Cells)<20+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[20].String(), 10, 64) + data.LowerThanKick = int64(temp) + + + + + + + + if len(row.Cells)<21+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[21].String(), 10, 32) + data.BaseScore = int32(temp) + + + + + + + + + if len(row.Cells)<22+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[22].String(), 10, 32) + data.Turn = int32(temp) + + + + + + + + + if len(row.Cells)<23+1{ + break + } + + + + data.BetDec = row.Cells[23].String() + + + + + + + if len(row.Cells)<24+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[24].String(), 10, 32) + data.Bot = int32(temp) + + + + + + + + + if len(row.Cells)<25+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[25].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[25].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Ai = arrInt + + + + + + if len(row.Cells)<26+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[26].String(), 10, 32) + data.Banker = int32(temp) + + + + + + + + + if len(row.Cells)<27+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[27].String(), 10, 32) + data.MaxChip = int32(temp) + + + + + + + + + if len(row.Cells)<28+1{ + break + } + + + + + + + arrStr = strings.Split(row.Cells[28].String(), "|") + arrInt64 = nil + if len(arrStr) > 0 && row.Cells[28].String() != "" { + arrInt64 = make([]int64, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) + arrInt64[i] = int64(temp) + } + } + data.OtherIntParams = arrInt64 + + + + if len(row.Cells)<29+1{ + break + } + + + + + + + arrStr = strings.Split(row.Cells[29].String(), "|") + arrInt64 = nil + if len(arrStr) > 0 && row.Cells[29].String() != "" { + arrInt64 = make([]int64, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) + arrInt64[i] = int64(temp) + } + } + data.ChessScoreParams = arrInt64 + + + + if len(row.Cells)<30+1{ + break + } + + + + + + + arrStr = strings.Split(row.Cells[30].String(), "|") + arrInt64 = nil + if len(arrStr) > 0 && row.Cells[30].String() != "" { + arrInt64 = make([]int64, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) + arrInt64[i] = int64(temp) + } + } + data.RankScoreParams = arrInt64 + + + + if len(row.Cells)<31+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[31].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[31].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Jackpot = arrInt + + + + + + if len(row.Cells)<32+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[32].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[32].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.RobotNumRng = arrInt + + + + + + if len(row.Cells)<33+1{ + break + } + + + + + + + arrStr = strings.Split(row.Cells[33].String(), "|") + arrInt64 = nil + if len(arrStr) > 0 && row.Cells[33].String() != "" { + arrInt64 = make([]int64, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) + arrInt64[i] = int64(temp) + } + } + data.RobotTakeCoin = arrInt64 + + + + if len(row.Cells)<34+1{ + break + } + + + + + + + arrStr = strings.Split(row.Cells[34].String(), "|") + arrInt64 = nil + if len(arrStr) > 0 && row.Cells[34].String() != "" { + arrInt64 = make([]int64, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) + arrInt64[i] = int64(temp) + } + } + data.RobotLimitCoin = arrInt64 + + + + if len(row.Cells)<35+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[35].String(), 10, 32) + data.BetLimit = int32(temp) + + + + + + + + + if len(row.Cells)<36+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[36].String(), 10, 32) + data.TaxRate = int32(temp) + + + + + + + + + if len(row.Cells)<37+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[37].String(), 10, 32) + data.SameIpLimit = int32(temp) + + + + + + + + + if len(row.Cells)<38+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[38].String(), 10, 32) + data.SamePlaceLimit = int32(temp) + + + + + + + + + if len(row.Cells)<39+1{ + break + } + + + + data.GameDif = row.Cells[39].String() + + + + + + + if len(row.Cells)<40+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[40].String(), 10, 32) + data.GameClass = int32(temp) + + + + + + + + + if len(row.Cells)<41+1{ + break + } + + + + data.PlatformName = row.Cells[41].String() + + + + + + + if len(row.Cells)<42+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[42].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[42].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.MaxBetCoin = arrInt + + + + + + if len(row.Cells)<43+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[43].String(), 10, 32) + data.PlayNumLimit = int32(temp) + + + + + + + + + if len(row.Cells)<44+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[44].String(), 10, 32) + data.CreateRoomNum = int32(temp) + + + + + + + + + if len(row.Cells)<45+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[45].String(), 10, 32) + data.MatchTrueMan = int32(temp) + + + + + + + + + if len(row.Cells)<46+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[46].String(), 10, 32) + data.PlayerWaterRate = int32(temp) + + + + + + + + + if len(row.Cells)<47+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[47].String(), 10, 32) + data.MatchMode = int32(temp) + + + + + + + + + if len(row.Cells)<48+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[48].String(), 10, 32) + data.KillingRate = int32(temp) + + + + + + + + + if len(row.Cells)<49+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[49].String(), 10, 32) + data.BetWaterRate = int32(temp) + + + + + + + + + if len(row.Cells)<50+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[50].String(), 10, 32) + data.Lottery = int32(temp) + + + + + + + + + if len(row.Cells)<51+1{ + break + } + + + + data.LotteryConfig = row.Cells[51].String() + + + + + + + if len(row.Cells)<52+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[52].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[52].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.BalanceLine = arrInt + + + + + + if len(row.Cells)<53+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[53].String(), 10, 32) + data.JackpotRatio = int32(temp) + + + + + + + + + if len(row.Cells)<54+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[54].String(), 10, 32) + data.JackpotMin = int32(temp) + + + + + + + + + if len(row.Cells)<55+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[55].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[55].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.ChessGradeLimit = arrInt + + + + + + if len(row.Cells)<56+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[56].String(), 10, 32) + data.LeaveDeduct = int32(temp) + + + + + + + + + if len(row.Cells)<57+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[57].String(), 10, 32) + data.LeaveCombat = int32(temp) + + + + + + + + + if len(row.Cells)<58+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[58].String(), 10, 32) + data.IntuseCannonMin = int32(temp) + + + + + + + + + if len(row.Cells)<59+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[59].String(), 10, 32) + data.IntuseCannonMax = int32(temp) + + + + + + + + + if len(row.Cells)<60+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[60].String(), 10, 32) + data.BossDrainageBet = int32(temp) + + + + + + + + + if len(row.Cells)<61+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[61].String(), 10, 32) + data.Draw = int32(temp) + + + + + + + + + if len(row.Cells)<62+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[62].String(), 10, 64) + data.Fluctuate = int64(temp) + + + + + + + + if len(row.Cells)<63+1{ + break + } + + + + data.FluctuateMax = row.Cells[63].String() + + + + + + + if len(row.Cells)<64+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[64].String(), 10, 32) + data.Ratio = int32(temp) + + + + + + + + + if len(row.Cells)<65+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[65].String(), 10, 64) + data.MinValue = int64(temp) + + + + + + + + if len(row.Cells)<66+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[66].String(), 10, 64) + data.MaxValue = int64(temp) + + + + + + + + if len(row.Cells)<67+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[67].String(), 10, 32) + data.DrainageBet = int32(temp) + + + + + + + + + if len(row.Cells)<68+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[68].String(), 10, 32) + data.DiamondDrop = int32(temp) + + + + + + + + + if len(row.Cells)<69+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[69].String(), 10, 32) + data.NegativeMax = int32(temp) + + + + + + + + + if len(row.Cells)<70+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[70].String(), 10, 32) + data.RatioMax = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_GameItem(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_GameItemArray{ + Arr:make([]*server.DB_GameItem, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_GameItem{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[2].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[2].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.ShowLocation = arrInt + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Classify = arrInt + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Type = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[5].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[5].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Effect0 = arrInt + + + + + + if len(row.Cells)<6+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[6].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[6].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Effect = arrInt + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.SaleType = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.SaleGold = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.Composition = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.CompositionMax = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) + data.Time = int32(temp) + + + + + + + + + if len(row.Cells)<12+1{ + break + } + + + + data.Location = row.Cells[12].String() + + + + + + + if len(row.Cells)<13+1{ + break + } + + + + data.Describe = row.Cells[13].String() + + + + + + + if len(row.Cells)<14+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 64) + data.Num = int64(temp) + + + + + + + + if len(row.Cells)<15+1{ + break + } + + + + data.Value = row.Cells[15].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_GameMatchLevel(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_GameMatchLevelArray{ + Arr:make([]*server.DB_GameMatchLevel, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_GameMatchLevel{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.GameFreeId = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.MatchLevel = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.RobotUpRatio = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[4].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[4].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.UpGrade = arrInt + + + + + + if len(row.Cells)<5+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[5].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[5].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.UpGradeOdds = arrInt + + + + + + if len(row.Cells)<6+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[6].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[6].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.DownGrade = arrInt + + + + + + if len(row.Cells)<7+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[7].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[7].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.DownGradeOdds = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_GameRule(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_GameRuleArray{ + Arr:make([]*server.DB_GameRule, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_GameRule{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.GameId = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.GameMode = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[4].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[4].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Params = arrInt + + + + + + if len(row.Cells)<5+1{ + break + } + + + + data.RuleDesc = row.Cells[5].String() + + + + + + + if len(row.Cells)<6+1{ + break + } + + + + data.GameDif = row.Cells[6].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_GameSubsidy(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_GameSubsidyArray{ + Arr:make([]*server.DB_GameSubsidy, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_GameSubsidy{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.LimitNum = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Get = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Times = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Game_Drop(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Game_DropArray{ + Arr:make([]*server.DB_Game_Drop, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Game_Drop{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.GameId = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Bet = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.ItemName1 = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.ItemId1 = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.Rate1 = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[6].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[6].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Amount1 = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Game_Introduction(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Game_IntroductionArray{ + Arr:make([]*server.DB_Game_Introduction, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Game_Introduction{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Type = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Name = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + data.Story = row.Cells[3].String() + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + data.AwardTitle = row.Cells[4].String() + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.LevelMax = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Game_Pet(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Game_PetArray{ + Arr:make([]*server.DB_Game_Pet, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Game_Pet{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.PetId = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Name = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Grade = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Level = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.Fragment = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Amount = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.AwardType = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.Award = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.AwardRate = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Game_Role(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Game_RoleArray{ + Arr:make([]*server.DB_Game_Role, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Game_Role{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.RoleId = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Name = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Grade = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Level = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.Fragment = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Amount = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.AwardType = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.Award = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.AwardRate = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_GiftBox(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_GiftBoxArray{ + Arr:make([]*server.DB_GiftBox, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_GiftBox{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Rate = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + + + + if row.Cells[2].String() != ""{ + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.ItemID = resultMap + } + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_IceAgeElementRate(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_IceAgeElementRateArray{ + Arr:make([]*server.DB_IceAgeElementRate, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_IceAgeElementRate{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.ModeName = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.ModeType = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Params = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Legend_Odds(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Legend_OddsArray{ + Arr:make([]*server.DB_Legend_Odds, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Legend_Odds{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Rateodds3 = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Rateodds4 = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Rateodds5 = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Legend_TurnRate(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Legend_TurnRateArray{ + Arr:make([]*server.DB_Legend_TurnRate, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Legend_TurnRate{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.ReturnRateMin = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.ReturnRateMax = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Chance = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Legend_Weight(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Legend_WeightArray{ + Arr:make([]*server.DB_Legend_Weight, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Legend_Weight{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[2].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[2].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Weight = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Legend_WeightCondition(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Legend_WeightConditionArray{ + Arr:make([]*server.DB_Legend_WeightCondition, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Legend_WeightCondition{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.IsNew = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[2].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[2].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.BetScope = arrInt + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.TrueCalcRate = arrInt + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.WeightId = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_MatchRank(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_MatchRankArray{ + Arr:make([]*server.DB_MatchRank, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_MatchRank{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[1].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[1].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.RankStar = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Name(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_NameArray{ + Arr:make([]*server.DB_Name, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Name{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_NameBoy(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_NameBoyArray{ + Arr:make([]*server.DB_NameBoy, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_NameBoy{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_NameGirl(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_NameGirlArray{ + Arr:make([]*server.DB_NameGirl, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_NameGirl{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_NewPlayer(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_NewPlayerArray{ + Arr:make([]*server.DB_NewPlayer, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_NewPlayer{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Condition1 = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 64) + data.ConditionValue1 = int64(temp) + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Condition2 = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) + data.ConditionValue2 = int64(temp) + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Bond = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.AddType = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 64) + data.AddMax = int64(temp) + + + + + + + + if len(row.Cells)<9+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 64) + data.AddMin = int64(temp) + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.TianHuRate = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_PhoneLottery(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_PhoneLotteryArray{ + Arr:make([]*server.DB_PhoneLottery, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_PhoneLottery{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Type = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Name = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Item_Id = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Grade = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.Odd = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Oddrate1 = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.Odd2 = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.Oddrate2 = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.Odd3 = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.Oddrate3 = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) + data.Oddrate4 = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_PigBank_Diamond(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_PigBank_DiamondArray{ + Arr:make([]*server.DB_PigBank_Diamond, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_PigBank_Diamond{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.BuyCountMin = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.BuyCountMax = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.CostDiamond = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Pigbank_Prop(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Pigbank_PropArray{ + Arr:make([]*server.DB_Pigbank_Prop, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Pigbank_Prop{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Count = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.VipExp = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[4].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[4].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Privilege1 = arrInt + + + + + + if len(row.Cells)<5+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[5].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[5].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Privilege2 = arrInt + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.ShopId2 = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[7].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[7].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Privilege3 = arrInt + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.Privilege4 = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.Privilege5 = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.Privilege6 = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + + + + + + + if row.Cells[11].String() != ""{ + pairs := strings.Split(row.Cells[11].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Privilege7 = resultMap + } + + + if len(row.Cells)<12+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) + data.Privilege7Price = int32(temp) + + + + + + + + + if len(row.Cells)<13+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) + data.ShopId7 = int32(temp) + + + + + + + + + if len(row.Cells)<14+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) + data.Privilege8 = int32(temp) + + + + + + + + + if len(row.Cells)<15+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[15].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[15].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Param = arrInt + + + + + + if len(row.Cells)<16+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[16].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[16].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.RewardOutlineID = arrInt + + + + + + if len(row.Cells)<17+1{ + break + } + + + + + + + + if row.Cells[17].String() != ""{ + pairs := strings.Split(row.Cells[17].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Award = resultMap + } + + + if len(row.Cells)<18+1{ + break + } + + + + + + if row.Cells[18].String() != "" { + arrStr = strings.Split(row.Cells[18].String(), "|") + data.ParamName = arrStr + } + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_PlayerExp(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_PlayerExpArray{ + Arr:make([]*server.DB_PlayerExp, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_PlayerExp{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Exp = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_PlayerInfo(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_PlayerInfoArray{ + Arr:make([]*server.DB_PlayerInfo, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_PlayerInfo{} + + for { + + if len(row.Cells)<0+1{ + break + } + + + + data.City = row.Cells[0].String() + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Head = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Name = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Sex = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_PlayerType(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_PlayerTypeArray{ + Arr:make([]*server.DB_PlayerType, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_PlayerType{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.GameFreeId = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.PayLowerLimit = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.PayUpperLimit = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.GameTimeLowerLimit = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.GameTimeUpperLimit = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.TotalInLowerLimit = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.TotalInUpperLimit = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.OddsLowerLimit = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.OddsUpperLimit = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) + data.LuckyRate = int32(temp) + + + + + + + + + if len(row.Cells)<12+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) + data.ChangeCardRate = int32(temp) + + + + + + + + + if len(row.Cells)<13+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[13].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[13].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.CardValueRange = arrInt + + + + + + if len(row.Cells)<14+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[14].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[14].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.MatchPriority = arrInt + + + + + + if len(row.Cells)<15+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[15].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[15].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.ExcludeMatch = arrInt + + + + + + if len(row.Cells)<16+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) + data.CardLibRate = int32(temp) + + + + + + + + + if len(row.Cells)<17+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[17].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[17].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.CardLibArr = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_PotOdd(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_PotOddArray{ + Arr:make([]*server.DB_PotOdd, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_PotOdd{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Title = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.VipOdd = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_PropExchange(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_PropExchangeArray{ + Arr:make([]*server.DB_PropExchange, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_PropExchange{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Group = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + + + + + if row.Cells[2].String() != ""{ + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Cost = resultMap + } + + + if len(row.Cells)<3+1{ + break + } + + + + + + + + if row.Cells[3].String() != ""{ + pairs := strings.Split(row.Cells[3].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Gain = resultMap + } + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_RankCycle(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_RankCycleArray{ + Arr:make([]*server.DB_RankCycle, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_RankCycle{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Start = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.End = row.Cells[2].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_RankLevel(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_RankLevelArray{ + Arr:make([]*server.DB_RankLevel, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_RankLevel{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.RankType = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Level = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + data.Name = row.Cells[3].String() + + + + + + + if len(row.Cells)<4+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 64) + data.Score = int64(temp) + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_RankReward(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_RankRewardArray{ + Arr:make([]*server.DB_RankReward, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_RankReward{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.RankType = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Level = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Award1Id = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Award1Num = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.Award2Id = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.Award2Num = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) + data.Award3Id = int32(temp) + + + + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.Award3Num = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Sensitive_Words(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_Sensitive_WordsArray{ + Arr:make([]*server.DB_Sensitive_Words, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Sensitive_Words{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Sensitive_Words = row.Cells[1].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_SlotRateWeight(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_SlotRateWeightArray{ + Arr:make([]*server.DB_SlotRateWeight, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_SlotRateWeight{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.GameFreeId = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Pos = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[3].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[3].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.NormCol1 = arrInt + + + + + + if len(row.Cells)<4+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[4].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[4].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.NormCol2 = arrInt + + + + + + if len(row.Cells)<5+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[5].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[5].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.NormCol3 = arrInt + + + + + + if len(row.Cells)<6+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[6].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[6].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.NormCol4 = arrInt + + + + + + if len(row.Cells)<7+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[7].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[7].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.NormCol5 = arrInt + + + + + + if len(row.Cells)<8+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[8].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[8].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.FreeCol1 = arrInt + + + + + + if len(row.Cells)<9+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[9].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[9].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.FreeCol2 = arrInt + + + + + + if len(row.Cells)<10+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[10].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[10].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.FreeCol3 = arrInt + + + + + + if len(row.Cells)<11+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[11].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[11].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.FreeCol4 = arrInt + + + + + + if len(row.Cells)<12+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[12].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[12].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.FreeCol5 = arrInt + + + + + + if len(row.Cells)<13+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[13].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[13].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.MaryOut = arrInt + + + + + + if len(row.Cells)<14+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[14].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[14].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.MaryMid = arrInt + + + + + + if len(row.Cells)<15+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[15].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[15].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.JackPot = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_SystemChance(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_SystemChanceArray{ + Arr:make([]*server.DB_SystemChance, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_SystemChance{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Desc = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.ChanceType = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.Coin = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.Rate = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Task(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_TaskArray{ + Arr:make([]*server.DB_Task, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Task{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.ActivityType = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) + data.TaskType = int32(temp) + + + + + + + + + if len(row.Cells)<5+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) + data.TargetTimes = int64(temp) + + + + + + + + if len(row.Cells)<6+1{ + break + } + + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 64) + data.FinishTimes = int64(temp) + + + + + + + + if len(row.Cells)<7+1{ + break + } + + + + + + + + if row.Cells[7].String() != ""{ + pairs := strings.Split(row.Cells[7].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Award = resultMap + } + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.GameType = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[9].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[9].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Position = arrInt + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_ThirdPlatformGameMapping(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_ThirdPlatformGameMappingArray{ + Arr:make([]*server.DB_ThirdPlatformGameMapping, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_ThirdPlatformGameMapping{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.SystemGameID = int32(temp) + + + + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.ThirdPlatformName = row.Cells[2].String() + + + + + + + if len(row.Cells)<3+1{ + break + } + + + + data.ThirdGameID = row.Cells[3].String() + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + data.Desc = row.Cells[4].String() + + + + + + + if len(row.Cells)<5+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) + data.ScreenOrientationType = int32(temp) + + + + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.ThirdID = int32(temp) + + + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_Tips(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_TipsArray{ + Arr:make([]*server.DB_Tips, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_Tips{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[1].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[1].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.GameId = arrInt + + + + + + if len(row.Cells)<2+1{ + break + } + + + + data.Des = row.Cells[2].String() + + + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_VIP(fi,fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr:=&server.DB_VIPArray{ + Arr:make([]*server.DB_VIP, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_VIP{} + + for { + + if len(row.Cells)<0+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + + + + + + + + if len(row.Cells)<1+1{ + break + } + + + + data.Name = row.Cells[1].String() + + + + + + + if len(row.Cells)<2+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) + data.Count = int32(temp) + + + + + + + + + if len(row.Cells)<3+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) + data.VipExp = int32(temp) + + + + + + + + + if len(row.Cells)<4+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[4].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[4].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Privilege1 = arrInt + + + + + + if len(row.Cells)<5+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[5].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[5].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Privilege2 = arrInt + + + + + + if len(row.Cells)<6+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) + data.ShopId2 = int32(temp) + + + + + + + + + if len(row.Cells)<7+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[7].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[7].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Privilege3 = arrInt + + + + + + if len(row.Cells)<8+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) + data.Privilege4 = int32(temp) + + + + + + + + + if len(row.Cells)<9+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) + data.Privilege5 = int32(temp) + + + + + + + + + if len(row.Cells)<10+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) + data.Privilege6 = int32(temp) + + + + + + + + + if len(row.Cells)<11+1{ + break + } + + + + + + + + if row.Cells[11].String() != ""{ + pairs := strings.Split(row.Cells[11].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Privilege7 = resultMap + } + + + if len(row.Cells)<12+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) + data.Privilege7Price = int32(temp) + + + + + + + + + if len(row.Cells)<13+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) + data.ShopId7 = int32(temp) + + + + + + + + + if len(row.Cells)<14+1{ + break + } + + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) + data.Privilege8 = int32(temp) + + + + + + + + + if len(row.Cells)<15+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[15].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[15].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.Param = arrInt + + + + + + if len(row.Cells)<16+1{ + break + } + + + + + arrStr = strings.Split(row.Cells[16].String(), "|") + arrInt = nil + if len(arrStr) > 0 && row.Cells[16].String() != "" { + arrInt = make([]int32, len(arrStr), len(arrStr)) + for i, v := range arrStr { + temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) + arrInt[i] = int32(temp) + } + } + data.RewardOutlineID = arrInt + + + + + + if len(row.Cells)<17+1{ + break + } + + + + + + + + if row.Cells[17].String() != ""{ + pairs := strings.Split(row.Cells[17].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // 错误处理 + fmt.Println("无法转换为int64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Award = resultMap + } + + + if len(row.Cells)<18+1{ + break + } + + + + + + if row.Cells[18].String() != "" { + arrStr = strings.Split(row.Cells[18].String(), "|") + data.ParamName = arrStr + } + + + + + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil{ + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + + +func main(){ + + AgcConvertDB_ActSign(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ActSign.xlsx`,`..\..\data\DB_ActSign.dat`) + + AgcConvertDB_Activity1(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Activity1.xlsx`,`..\..\data\DB_Activity1.dat`) + + AgcConvertDB_AnimalColor(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_AnimalColor.xlsx`,`..\..\data\DB_AnimalColor.dat`) + + AgcConvertDB_ArtilleryRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ArtilleryRate.xlsx`,`..\..\data\DB_ArtilleryRate.dat`) + + AgcConvertDB_ArtillerySkin(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ArtillerySkin.xlsx`,`..\..\data\DB_ArtillerySkin.dat`) + + AgcConvertDB_BlackWhite(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_BlackWhite.xlsx`,`..\..\data\DB_BlackWhite.dat`) + + AgcConvertDB_CardsJD(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CardsJD.xlsx`,`..\..\data\DB_CardsJD.dat`) + + AgcConvertDB_CardsYuLe(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CardsYuLe.xlsx`,`..\..\data\DB_CardsYuLe.dat`) + + AgcConvertDB_ChessBilledRules(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessBilledRules.xlsx`,`..\..\data\DB_ChessBilledRules.dat`) + + AgcConvertDB_ChessMatchRules(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessMatchRules.xlsx`,`..\..\data\DB_ChessMatchRules.dat`) + + AgcConvertDB_ChessRank(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessRank.xlsx`,`..\..\data\DB_ChessRank.dat`) + + AgcConvertDB_ClientVer(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ClientVer.xlsx`,`..\..\data\DB_ClientVer.dat`) + + AgcConvertDB_CollectBox(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CollectBox.xlsx`,`..\..\data\DB_CollectBox.dat`) + + AgcConvertDB_CollectBoxGain(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CollectBoxGain.xlsx`,`..\..\data\DB_CollectBoxGain.dat`) + + AgcConvertDB_CrashSearch(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CrashSearch.xlsx`,`..\..\data\DB_CrashSearch.dat`) + + AgcConvertDB_Createroom(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Createroom.xlsx`,`..\..\data\DB_Createroom.dat`) + + AgcConvertDB_Fish(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Fish.xlsx`,`..\..\data\DB_Fish.dat`) + + AgcConvertDB_FishOut(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishOut.xlsx`,`..\..\data\DB_FishOut.dat`) + + AgcConvertDB_FishPath(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishPath.xlsx`,`..\..\data\DB_FishPath.dat`) + + AgcConvertDB_FishRoom(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishRoom.xlsx`,`..\..\data\DB_FishRoom.dat`) + + AgcConvertDB_FishSkill(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishSkill.xlsx`,`..\..\data\DB_FishSkill.dat`) + + AgcConvertDB_FortuneGod_Odds(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Odds.xlsx`,`..\..\data\DB_FortuneGod_Odds.dat`) + + AgcConvertDB_FortuneGod_TurnRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_TurnRate.xlsx`,`..\..\data\DB_FortuneGod_TurnRate.dat`) + + AgcConvertDB_FortuneGod_Weight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Weight.xlsx`,`..\..\data\DB_FortuneGod_Weight.dat`) + + AgcConvertDB_FortuneGod_WeightCondition(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_WeightCondition.xlsx`,`..\..\data\DB_FortuneGod_WeightCondition.dat`) + + AgcConvertDB_GamMatchLV(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GamMatchLV.xlsx`,`..\..\data\DB_GamMatchLV.dat`) + + AgcConvertDB_GameCoinPool(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameCoinPool.xlsx`,`..\..\data\DB_GameCoinPool.dat`) + + AgcConvertDB_GameFree(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameFree.xlsx`,`..\..\data\DB_GameFree.dat`) + + AgcConvertDB_GameItem(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameItem.xlsx`,`..\..\data\DB_GameItem.dat`) + + AgcConvertDB_GameMatchLevel(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameMatchLevel.xlsx`,`..\..\data\DB_GameMatchLevel.dat`) + + AgcConvertDB_GameRule(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameRule.xlsx`,`..\..\data\DB_GameRule.dat`) + + AgcConvertDB_GameSubsidy(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameSubsidy.xlsx`,`..\..\data\DB_GameSubsidy.dat`) + + AgcConvertDB_Game_Drop(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Drop.xlsx`,`..\..\data\DB_Game_Drop.dat`) + + AgcConvertDB_Game_Introduction(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Introduction.xlsx`,`..\..\data\DB_Game_Introduction.dat`) + + AgcConvertDB_Game_Pet(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Pet.xlsx`,`..\..\data\DB_Game_Pet.dat`) + + AgcConvertDB_Game_Role(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Role.xlsx`,`..\..\data\DB_Game_Role.dat`) + + AgcConvertDB_GiftBox(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GiftBox.xlsx`,`..\..\data\DB_GiftBox.dat`) + + AgcConvertDB_IceAgeElementRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_IceAgeElementRate.xlsx`,`..\..\data\DB_IceAgeElementRate.dat`) + + AgcConvertDB_Legend_Odds(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Odds.xlsx`,`..\..\data\DB_Legend_Odds.dat`) + + AgcConvertDB_Legend_TurnRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_TurnRate.xlsx`,`..\..\data\DB_Legend_TurnRate.dat`) + + AgcConvertDB_Legend_Weight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Weight.xlsx`,`..\..\data\DB_Legend_Weight.dat`) + + AgcConvertDB_Legend_WeightCondition(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_WeightCondition.xlsx`,`..\..\data\DB_Legend_WeightCondition.dat`) + + AgcConvertDB_MatchRank(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_MatchRank.xlsx`,`..\..\data\DB_MatchRank.dat`) + + AgcConvertDB_Name(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Name.xlsx`,`..\..\data\DB_Name.dat`) + + AgcConvertDB_NameBoy(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NameBoy.xlsx`,`..\..\data\DB_NameBoy.dat`) + + AgcConvertDB_NameGirl(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NameGirl.xlsx`,`..\..\data\DB_NameGirl.dat`) + + AgcConvertDB_NewPlayer(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NewPlayer.xlsx`,`..\..\data\DB_NewPlayer.dat`) + + AgcConvertDB_PhoneLottery(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PhoneLottery.xlsx`,`..\..\data\DB_PhoneLottery.dat`) + + AgcConvertDB_PigBank_Diamond(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PigBank_Diamond.xlsx`,`..\..\data\DB_PigBank_Diamond.dat`) + + AgcConvertDB_Pigbank_Prop(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Pigbank_Prop.xlsx`,`..\..\data\DB_Pigbank_Prop.dat`) + + AgcConvertDB_PlayerExp(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerExp.xlsx`,`..\..\data\DB_PlayerExp.dat`) + + AgcConvertDB_PlayerInfo(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerInfo.xlsx`,`..\..\data\DB_PlayerInfo.dat`) + + AgcConvertDB_PlayerType(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerType.xlsx`,`..\..\data\DB_PlayerType.dat`) + + AgcConvertDB_PotOdd(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PotOdd.xlsx`,`..\..\data\DB_PotOdd.dat`) + + AgcConvertDB_PropExchange(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PropExchange.xlsx`,`..\..\data\DB_PropExchange.dat`) + + AgcConvertDB_RankCycle(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankCycle.xlsx`,`..\..\data\DB_RankCycle.dat`) + + AgcConvertDB_RankLevel(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankLevel.xlsx`,`..\..\data\DB_RankLevel.dat`) + + AgcConvertDB_RankReward(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankReward.xlsx`,`..\..\data\DB_RankReward.dat`) + + AgcConvertDB_Sensitive_Words(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Sensitive_Words.xlsx`,`..\..\data\DB_Sensitive_Words.dat`) + + AgcConvertDB_SlotRateWeight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_SlotRateWeight.xlsx`,`..\..\data\DB_SlotRateWeight.dat`) + + AgcConvertDB_SystemChance(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_SystemChance.xlsx`,`..\..\data\DB_SystemChance.dat`) + + AgcConvertDB_Task(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Task.xlsx`,`..\..\data\DB_Task.dat`) + + AgcConvertDB_ThirdPlatformGameMapping(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ThirdPlatformGameMapping.xlsx`,`..\..\data\DB_ThirdPlatformGameMapping.dat`) + + AgcConvertDB_Tips(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Tips.xlsx`,`..\..\data\DB_Tips.dat`) + + AgcConvertDB_VIP(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_VIP.xlsx`,`..\..\data\DB_VIP.dat`) + +} diff --git a/worldsrv/action_bag.go b/worldsrv/action_bag.go index 916df06..e45ca91 100644 --- a/worldsrv/action_bag.go +++ b/worldsrv/action_bag.go @@ -47,11 +47,16 @@ func (this *CSBagInfoHandler) Process(s *netlib.Session, packetid int, data inte if bagInfo != nil { for _, v := range bagInfo.BagItem { item := srvdata.PBDB_GameItemMgr.GetData(v.ItemId) + if item.Type == common.ItemTypeExpireTime && v.ExpireTime < time.Now().Unix() { + continue + } + if item != nil && v.ItemNum > 0 && (tp <= 0 || item.GetType() == tp) /*&& (nowLocation == -1 || (nowLocation < len(item.ShowLocation) && item.ShowLocation[nowLocation] == 1))*/ { pack.Infos = append(pack.Infos, &bag.ItemInfo{ ItemId: v.ItemId, ItemNum: v.ItemNum, ObtainTime: v.ObtainTime, + ExpireTime: v.ExpireTime, }) } } @@ -167,6 +172,7 @@ func (this *CSUpBagInfoHandler) Process(s *netlib.Session, packetid int, data in ItemId: v.ItemId, ItemNum: v.ItemNum, ObtainTime: v.ObtainTime, + ExpireTime: v.ExpireTime, }) } } diff --git a/worldsrv/action_server.go b/worldsrv/action_server.go index 7ba92d6..27d76b7 100644 --- a/worldsrv/action_server.go +++ b/worldsrv/action_server.go @@ -155,11 +155,11 @@ func init() { items := msg.GetItems() if items != nil { for _, dbItem := range dbItemArr { - if itemNum, exist := items[dbItem.Id]; exist { + if item, exist := items[dbItem.Id]; exist { oldItem := BagMgrSingleton.GetItem(p.SnId, dbItem.Id) - diffNum := int64(itemNum) + diffNum := int64(item.ItemNum) if oldItem != nil { - diffNum = int64(itemNum) - oldItem.ItemNum + diffNum = int64(item.ItemNum) - oldItem.ItemNum } if diffNum != 0 { item := &Item{ diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index bb333bb..35bfada 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -50,6 +50,7 @@ type Item struct { //Describe string // 道具描述 //数据库数据 ObtainTime int64 //获取的时间 + ExpireTime int64 //截止到期时间 } type BagInfo struct { @@ -79,6 +80,8 @@ func (this *BagMgr) GetBagInfo(snid int32) *BagInfo { if v, exist := this.PlayerBag[snid]; exist { return v } + + this.RefreshExpireItem(snid) return nil } @@ -89,6 +92,8 @@ func (this *BagMgr) GetItem(snid, itemId int32) *Item { return nil } + this.RefreshExpireItem(snid) + item := &Item{ ItemId: itemId, } @@ -210,12 +215,27 @@ func (this *BagMgr) AddJybBagInfo(p *Player, addItems []*Item, add int64, gainWa changeItems = append(changeItems, v.ItemId) if itm, exist := newBagInfo.BagItem[v.ItemId]; exist { - itm.ItemNum += v.ItemNum + if common.ItemTypeExpireTime == item.Type { + itm.ExpireTime += int64(item.Time*3600) * v.ItemNum + itm.ItemNum = 1 + } else { + itm.ItemNum += v.ItemNum + } } else { - newBagInfo.BagItem[v.ItemId] = &Item{ - ItemId: item.Id, // 物品id - ItemNum: v.ItemNum, // 数量 - ObtainTime: time.Now().Unix(), + if common.ItemTypeExpireTime == item.Type { + newBagInfo.BagItem[v.ItemId] = &Item{ + ItemId: item.Id, // 物品id + ItemNum: 1, // 数量 + ObtainTime: time.Now().Unix(), + ExpireTime: time.Now().Unix() + int64(item.Time*3600)*v.ItemNum, + } + } else { + newBagInfo.BagItem[v.ItemId] = &Item{ + ItemId: item.Id, // 物品id + ItemNum: v.ItemNum, // 数量 + ObtainTime: time.Now().Unix(), + ExpireTime: 0, + } } } if v.ItemId == common.ItemIDWeekScore && v.ItemNum != 0 { @@ -246,6 +266,10 @@ func (this *BagMgr) SaleItem(p *Player, itemId int32, num int64) bool { // SalePlayerItem 出售道具,减少玩家道具数量 func (this *BagMgr) SalePlayerItem(p *Player, item *Item, num int64) bool { + if num < 0 { + return false + } + item.ItemNum -= num p.dirty = true this.SyncBagData(p.SnId, item.ItemId) @@ -426,6 +450,7 @@ func (this *BagMgr) SyncBagData(snid int32, changeItemIds ...int32) { //Location: itemInfo.Location, //Describe: itemInfo.Describe, ObtainTime: itemInfo.ObtainTime, + ExpireTime: itemInfo.ExpireTime, }) if itemInfo.ItemId == VCard { FriendMgrSington.UpdateInfo(p.Platform, p.SnId) @@ -435,6 +460,22 @@ func (this *BagMgr) SyncBagData(snid int32, changeItemIds ...int32) { p.SyncBagData(itemInfos) } +// 刷新时效类道具 +func (this *BagMgr) RefreshExpireItem(snid int32) { + bagInfo := BagMgrSingleton.GetBagInfo(snid) + if bagInfo != nil { + for k, bi := range bagInfo.BagItem { + itemcfg := srvdata.PBDB_GameItemMgr.GetData(bi.ItemId) + if itemcfg != nil { + // 去掉时限到期的道具 + if itemcfg.Type == common.ItemTypeExpireTime && bi.ExpireTime < time.Now().Unix() { + delete(bagInfo.BagItem, k) + } + } + } + } +} + func (this *BagMgr) Update() { } @@ -471,13 +512,22 @@ func (this *BagMgr) Callback(player any, ret *internal.PlayerLoadReplay) { BagItem: make(map[int32]*Item), } for k, bi := range bagInfo.BagItem { - item := srvdata.PBDB_GameItemMgr.GetData(bi.ItemId) - if item != nil { + itemcfg := srvdata.PBDB_GameItemMgr.GetData(bi.ItemId) + if itemcfg != nil { if bi.ItemNum > 0 { + + // 去掉时限到期的道具 + if itemcfg.Type == common.ItemTypeExpireTime { + if bi.ExpireTime < time.Now().Unix() { + continue + } + } + newBagInfo.BagItem[k] = &Item{ ItemId: bi.ItemId, ItemNum: bi.ItemNum, ObtainTime: bi.ObtainTime, + ExpireTime: bi.ExpireTime, } } } else { @@ -531,7 +581,7 @@ func (this *BagMgr) Save(platform string, snid int32, isSync, force bool) { Platform: bagInfo.Platform, } for _, v := range bagInfo.BagItem { - biMap.BagItem = append(biMap.BagItem, &Item{ItemId: v.ItemId, ItemNum: v.ItemNum, ObtainTime: v.ObtainTime}) + biMap.BagItem = append(biMap.BagItem, &Item{ItemId: v.ItemId, ItemNum: v.ItemNum, ObtainTime: v.ObtainTime, ExpireTime: v.ExpireTime}) } var err error @@ -542,7 +592,7 @@ func (this *BagMgr) Save(platform string, snid int32, isSync, force bool) { BagItem: make(map[int32]*model.Item), } for _, v := range biMap.BagItem { - newBagInfo.BagItem[v.ItemId] = &model.Item{ItemId: v.ItemId, ItemNum: v.ItemNum, ObtainTime: v.ObtainTime} + newBagInfo.BagItem[v.ItemId] = &model.Item{ItemId: v.ItemId, ItemNum: v.ItemNum, ObtainTime: v.ObtainTime, ExpireTime: v.ExpireTime} } err = model.UpBagItem(newBagInfo) } diff --git a/worldsrv/player.go b/worldsrv/player.go index cd393ca..2cc09b5 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -1326,6 +1326,7 @@ func (this *Player) GetMessageAttachs(ids []string) { ItemId: msg.Params[i], // 物品id ItemNum: int64(msg.Params[i+1]), // 数量 ObtainTime: time.Now().Unix(), + ExpireTime: time.Now().Unix() + int64(msg.Params[i+1])*3600, }) } if _, code := BagMgrSingleton.AddJybBagInfo(this, items, 0, gainWay, "mail", remark); code != bag.OpResultCode_OPRC_Sucess { // 领取失败 @@ -2178,6 +2179,7 @@ func (this *Player) AddChessScore(num int64) { func (this *Player) OnSecTimer() { FirePlayerSecTimer(this) + //BagMgrSingleton.AddMailByItem(this.Platform, this.SnId, this.Name, this.SnId, 1, []int32{60001, 12}) } func (this *Player) OnMiniTimer() { diff --git a/worldsrv/scene.go b/worldsrv/scene.go index bac8e2f..a796985 100644 --- a/worldsrv/scene.go +++ b/worldsrv/scene.go @@ -522,12 +522,17 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool { // 道具 dbItemArr := srvdata.PBDB_GameItemMgr.Datas.Arr if dbItemArr != nil { - msg.Items = make(map[int32]int64) + msg.Items = make(map[int32]*serverproto.ItemParam) for _, dbItem := range dbItemArr { - msg.Items[dbItem.Id] = 0 + msg.Items[dbItem.Id] = &serverproto.ItemParam{ + ItemNum: 0, + ExpireTime: 0, + } + itemInfo := BagMgrSingleton.GetItem(p.SnId, dbItem.Id) if itemInfo != nil { - msg.Items[dbItem.Id] = itemInfo.ItemNum + msg.Items[dbItem.Id].ItemNum = itemInfo.ItemNum + msg.Items[dbItem.Id].ExpireTime = itemInfo.ExpireTime } } } diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index 57408b8..866083c 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -591,7 +591,7 @@ func (this *ShopMgr) PayAway(shopInfo *model.ShopInfo, p *Player, vipShopId, pos } case ShopTypeItem: //增加道具 - item := &Item{ItemId: shopInfo.ItemId, ItemNum: addTotal, ObtainTime: time.Now().Unix()} + item := &Item{ItemId: shopInfo.ItemId, ItemNum: addTotal, ObtainTime: time.Now().Unix(), ExpireTime: 0} BagMgrSingleton.AddJybBagInfo(p, []*Item{item}, 0, common.GainWay_Shop_Buy, "system", shopName) data := srvdata.PBDB_GameItemMgr.GetData(item.ItemId) if data != nil { diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index be76101..45ea572 100644 Binary files a/xlsx/DB_GameItem.xlsx and b/xlsx/DB_GameItem.xlsx differ diff --git a/xlsx/DB_PigBank_Diamond.xlsx b/xlsx/DB_PigBank_Diamond.xlsx new file mode 100644 index 0000000..70eb7e1 Binary files /dev/null and b/xlsx/DB_PigBank_Diamond.xlsx differ diff --git a/xlsx/DB_Pigbank_Prop.xlsx b/xlsx/DB_Pigbank_Prop.xlsx new file mode 100644 index 0000000..65f038c Binary files /dev/null and b/xlsx/DB_Pigbank_Prop.xlsx differ