From 2805e4ca6c79b5f019616cafdfb164f2c969718e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 29 Jun 2024 15:29:01 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=80=9A=E8=A1=8C=E8=AF=81=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 2 + model/player.go | 1 + protocol/rank/rank.pb.go | 370 ++++++++- protocol/rank/rank.proto | 26 + protocol/task/task.pb.go | 119 +-- protocol/task/task.proto | 5 +- protocol/webapi/common.pb.go | 565 ++++++++++++- protocol/webapi/common.proto | 42 + protocol/welfare/welfare.pb.go | 1376 +++++++++++++++++++++++++++++--- protocol/welfare/welfare.proto | 103 ++- worldsrv/shopmgr.go | 18 +- 11 files changed, 2397 insertions(+), 230 deletions(-) diff --git a/common/constant.go b/common/constant.go index 5cfc959..b168db9 100644 --- a/common/constant.go +++ b/common/constant.go @@ -579,6 +579,8 @@ const ( ItemIDCoffee = 100008 // 咖啡 ItemIDBucket = 100009 // 水桶 ItemIDSlippers = 100010 // 拖鞋 + ItemIDPermit = 100011 // 赛季通行证积分 + ItemIDLong = 50013 // 龙币 ) func ToItemId(id int32) int32 { diff --git a/model/player.go b/model/player.go index b8636d3..6ab9a1d 100644 --- a/model/player.go +++ b/model/player.go @@ -467,6 +467,7 @@ type PlayerData struct { INum int64 // 邀请人数 IMoney int64 // 邀请人充值金额 IScoreTs time.Time // 邀请积分更新时间 + Permit time.Time // 赛季通行证领取时间 } // 七日签到数据 diff --git a/protocol/rank/rank.pb.go b/protocol/rank/rank.pb.go index 00a0c60..74f50d1 100644 --- a/protocol/rank/rank.pb.go +++ b/protocol/rank/rank.pb.go @@ -42,6 +42,9 @@ const ( //等级榜 Rank_PACKET_RANK_CSLevel Rank = 10010 Rank_PACKET_RANK_SCLevel Rank = 10011 + //赛季通行证排行榜 + Rank_PACKET_RANK_CSPermit Rank = 10012 + Rank_PACKET_RANK_SCPermit Rank = 10013 ) // Enum value maps for Rank. @@ -60,6 +63,8 @@ var ( 10009: "PACKET_RANK_SCWinCoin", 10010: "PACKET_RANK_CSLevel", 10011: "PACKET_RANK_SCLevel", + 10012: "PACKET_RANK_CSPermit", + 10013: "PACKET_RANK_SCPermit", } Rank_value = map[string]int32{ "PACKET_RANK_ZERO": 0, @@ -75,6 +80,8 @@ var ( "PACKET_RANK_SCWinCoin": 10009, "PACKET_RANK_CSLevel": 10010, "PACKET_RANK_SCLevel": 10011, + "PACKET_RANK_CSPermit": 10012, + "PACKET_RANK_SCPermit": 10013, } ) @@ -1567,6 +1574,221 @@ func (x *SCPlayerLevelRank) GetLimit() int32 { return 0 } +//PACKET_RANK_CSPermit +type CSPermit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Skip int32 `protobuf:"varint,1,opt,name=Skip,proto3" json:"Skip,omitempty"` // 偏移量 + Limit int32 `protobuf:"varint,2,opt,name=Limit,proto3" json:"Limit,omitempty"` // 请求数量 +} + +func (x *CSPermit) Reset() { + *x = CSPermit{} + if protoimpl.UnsafeEnabled { + mi := &file_rank_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPermit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPermit) ProtoMessage() {} + +func (x *CSPermit) ProtoReflect() protoreflect.Message { + mi := &file_rank_proto_msgTypes[19] + 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 CSPermit.ProtoReflect.Descriptor instead. +func (*CSPermit) Descriptor() ([]byte, []int) { + return file_rank_proto_rawDescGZIP(), []int{19} +} + +func (x *CSPermit) GetSkip() int32 { + if x != nil { + return x.Skip + } + return 0 +} + +func (x *CSPermit) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +type PermitRank struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"` // 玩家id + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 昵称 + Rank int32 `protobuf:"varint,3,opt,name=Rank,proto3" json:"Rank,omitempty"` //段位排名 + Score int64 `protobuf:"varint,4,opt,name=Score,proto3" json:"Score,omitempty"` // 积分 + ModId int32 `protobuf:"varint,5,opt,name=ModId,proto3" json:"ModId,omitempty"` // 头像模型 +} + +func (x *PermitRank) Reset() { + *x = PermitRank{} + if protoimpl.UnsafeEnabled { + mi := &file_rank_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PermitRank) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PermitRank) ProtoMessage() {} + +func (x *PermitRank) ProtoReflect() protoreflect.Message { + mi := &file_rank_proto_msgTypes[20] + 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 PermitRank.ProtoReflect.Descriptor instead. +func (*PermitRank) Descriptor() ([]byte, []int) { + return file_rank_proto_rawDescGZIP(), []int{20} +} + +func (x *PermitRank) GetSnid() int32 { + if x != nil { + return x.Snid + } + return 0 +} + +func (x *PermitRank) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PermitRank) GetRank() int32 { + if x != nil { + return x.Rank + } + return 0 +} + +func (x *PermitRank) GetScore() int64 { + if x != nil { + return x.Score + } + return 0 +} + +func (x *PermitRank) GetModId() int32 { + if x != nil { + return x.ModId + } + return 0 +} + +// PACKET_RANK_SCPermit +type SCPermit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ranks []*PermitRank `protobuf:"bytes,1,rep,name=Ranks,proto3" json:"Ranks,omitempty"` // 排行榜 + Me *PermitRank `protobuf:"bytes,2,opt,name=Me,proto3" json:"Me,omitempty"` // 玩家自己的排行信息 + Skip int32 `protobuf:"varint,3,opt,name=Skip,proto3" json:"Skip,omitempty"` // 偏移量 + IsEndNum bool `protobuf:"varint,4,opt,name=IsEndNum,proto3" json:"IsEndNum,omitempty"` + RankMaxNum int32 `protobuf:"varint,5,opt,name=RankMaxNum,proto3" json:"RankMaxNum,omitempty"` // 排行榜最大上限 +} + +func (x *SCPermit) Reset() { + *x = SCPermit{} + if protoimpl.UnsafeEnabled { + mi := &file_rank_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPermit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPermit) ProtoMessage() {} + +func (x *SCPermit) ProtoReflect() protoreflect.Message { + mi := &file_rank_proto_msgTypes[21] + 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 SCPermit.ProtoReflect.Descriptor instead. +func (*SCPermit) Descriptor() ([]byte, []int) { + return file_rank_proto_rawDescGZIP(), []int{21} +} + +func (x *SCPermit) GetRanks() []*PermitRank { + if x != nil { + return x.Ranks + } + return nil +} + +func (x *SCPermit) GetMe() *PermitRank { + if x != nil { + return x.Me + } + return nil +} + +func (x *SCPermit) GetSkip() int32 { + if x != nil { + return x.Skip + } + return 0 +} + +func (x *SCPermit) GetIsEndNum() bool { + if x != nil { + return x.IsEndNum + } + return false +} + +func (x *SCPermit) GetRankMaxNum() int32 { + if x != nil { + return x.RankMaxNum + } + return 0 +} + var File_rank_proto protoreflect.FileDescriptor var file_rank_proto_rawDesc = []byte{ @@ -1711,40 +1933,65 @@ var file_rank_proto_rawDesc = []byte{ 0x66, 0x6f, 0x52, 0x02, 0x4d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x2a, 0xde, 0x02, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, - 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, - 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, - 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, - 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, - 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, - 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, - 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, - 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, - 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, - 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, - 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, - 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x70, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, - 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, - 0x05, 0x42, 0x24, 0x5a, 0x22, 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, 0x72, 0x61, 0x6e, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x34, 0x0a, 0x08, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x6b, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x74, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x49, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x49, 0x64, 0x22, 0xa4, 0x01, 0x0a, + 0x08, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x05, 0x52, 0x61, 0x6e, + 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x52, 0x61, 0x6e, 0x6b, + 0x73, 0x12, 0x20, 0x0a, 0x02, 0x4d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, + 0x02, 0x4d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x45, 0x6e, 0x64, + 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x45, 0x6e, 0x64, + 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x4e, 0x75, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, + 0x4e, 0x75, 0x6d, 0x2a, 0x94, 0x03, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x10, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, + 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, + 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x90, 0x4e, + 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, + 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x91, 0x4e, 0x12, 0x17, + 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, + 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x93, 0x4e, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, + 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x96, 0x4e, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, + 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, + 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x99, 0x4e, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, + 0x43, 0x53, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x10, 0x9b, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, + 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9c, 0x4e, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, + 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, 0x52, + 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, + 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, + 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x70, + 0x57, 0x65, 0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x05, 0x42, 0x24, 0x5a, 0x22, 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, 0x72, 0x61, 0x6e, 0x6b, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1760,7 +2007,7 @@ func file_rank_proto_rawDescGZIP() []byte { } var file_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 22) var file_rank_proto_goTypes = []interface{}{ (Rank)(0), // 0: rank.Rank (RankInvite)(0), // 1: rank.RankInvite @@ -1783,6 +2030,9 @@ var file_rank_proto_goTypes = []interface{}{ (*CSPlayerLevelRank)(nil), // 18: rank.CSPlayerLevelRank (*PlayerLevelRankInfo)(nil), // 19: rank.PlayerLevelRankInfo (*SCPlayerLevelRank)(nil), // 20: rank.SCPlayerLevelRank + (*CSPermit)(nil), // 21: rank.CSPermit + (*PermitRank)(nil), // 22: rank.PermitRank + (*SCPermit)(nil), // 23: rank.SCPermit } var file_rank_proto_depIdxs = []int32{ 3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank @@ -1796,11 +2046,13 @@ var file_rank_proto_depIdxs = []int32{ 16, // 8: rank.SCWinCoin.Me:type_name -> rank.WinCoinInfo 19, // 9: rank.SCPlayerLevelRank.Ranks:type_name -> rank.PlayerLevelRankInfo 19, // 10: rank.SCPlayerLevelRank.Me:type_name -> rank.PlayerLevelRankInfo - 11, // [11:11] is the sub-list for method output_type - 11, // [11:11] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 22, // 11: rank.SCPermit.Ranks:type_name -> rank.PermitRank + 22, // 12: rank.SCPermit.Me:type_name -> rank.PermitRank + 13, // [13:13] is the sub-list for method output_type + 13, // [13:13] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name } func init() { file_rank_proto_init() } @@ -2037,6 +2289,42 @@ func file_rank_proto_init() { return nil } } + file_rank_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPermit); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rank_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PermitRank); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rank_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPermit); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -2044,7 +2332,7 @@ func file_rank_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rank_proto_rawDesc, NumEnums: 2, - NumMessages: 19, + NumMessages: 22, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/rank/rank.proto b/protocol/rank/rank.proto index f879d5d..2793184 100644 --- a/protocol/rank/rank.proto +++ b/protocol/rank/rank.proto @@ -22,6 +22,9 @@ enum Rank{ //等级榜 PACKET_RANK_CSLevel = 10010; PACKET_RANK_SCLevel = 10011; + //赛季通行证排行榜 + PACKET_RANK_CSPermit = 10012; + PACKET_RANK_SCPermit = 10013; } // 排位榜 @@ -181,4 +184,27 @@ message SCPlayerLevelRank{ PlayerLevelRankInfo Me = 2; // 玩家自己的排行信息 int32 Skip = 3; // 页数 int32 Limit = 4; // 每页数量 +} + +//PACKET_RANK_CSPermit +message CSPermit{ + int32 Skip = 1; // 偏移量 + int32 Limit = 2; // 请求数量 +} + +message PermitRank { + int32 Snid = 1; // 玩家id + string Name = 2; // 昵称 + int32 Rank = 3;//段位排名 + int64 Score = 4; // 积分 + int32 ModId = 5; // 头像模型 +} + +// PACKET_RANK_SCPermit +message SCPermit{ + repeated PermitRank Ranks = 1; // 排行榜 + PermitRank Me = 2; // 玩家自己的排行信息 + int32 Skip = 3; // 偏移量 + bool IsEndNum = 4; + int32 RankMaxNum = 5; // 排行榜最大上限 } \ No newline at end of file diff --git a/protocol/task/task.pb.go b/protocol/task/task.pb.go index ccf4eb6..519d21e 100644 --- a/protocol/task/task.pb.go +++ b/protocol/task/task.pb.go @@ -332,8 +332,8 @@ type CSTaskReward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 - Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 + Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id; 0 表示一键领取 } func (x *CSTaskReward) Reset() { @@ -388,9 +388,10 @@ type SCTaskReward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpCode OpResultCode `protobuf:"varint,1,opt,name=OpCode,proto3,enum=task.OpResultCode" json:"OpCode,omitempty"` // 操作码 - Tp int32 `protobuf:"varint,2,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 - Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id + OpCode OpResultCode `protobuf:"varint,1,opt,name=OpCode,proto3,enum=task.OpResultCode" json:"OpCode,omitempty"` // 操作码 + Tp int32 `protobuf:"varint,2,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 + Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id + Reward map[int64]int64 `protobuf:"bytes,5,rep,name=Reward,proto3" json:"Reward,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 奖励 } func (x *SCTaskReward) Reset() { @@ -446,6 +447,13 @@ func (x *SCTaskReward) GetId() int32 { return 0 } +func (x *SCTaskReward) GetReward() map[int64]int64 { + if x != nil { + return x.Reward + } + return nil +} + // 任务变更通知 // PACKET_SCTaskChange type SCTaskChange struct { @@ -640,45 +648,52 @@ var file_task_proto_rawDesc = []byte{ 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2e, 0x0a, 0x0c, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x0c, 0x53, 0x43, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, + 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, + 0x73, 0x6b, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x53, + 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, + 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 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, 0x42, 0x0a, 0x0c, 0x53, 0x43, + 0x54, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, + 0x0a, 0x0e, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, + 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x61, + 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, - 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x0c, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x0e, 0x43, 0x53, - 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x0e, 0x0a, 0x02, - 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x64, - 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, - 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x70, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, - 0x64, 0x65, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x54, 0x61, 0x73, 0x6b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x11, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, - 0x10, 0xe0, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe1, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x10, 0xe2, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe3, 0x12, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xe4, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe5, - 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x65, - 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe6, 0x12, 0x42, 0x24, 0x5a, 0x22, 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, 0x61, 0x73, 0x6b, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, + 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, + 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe0, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe1, 0x12, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe2, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x10, 0xe3, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x54, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xe4, 0x12, 0x12, 0x16, 0x0a, + 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, + 0x6e, 0x63, 0x10, 0xe5, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe6, 0x12, 0x42, 0x24, 0x5a, + 0x22, 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, + 0x61, 0x73, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -694,7 +709,7 @@ func file_task_proto_rawDescGZIP() []byte { } var file_task_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_task_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_task_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_task_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: task.OpResultCode (TaskPacketID)(0), // 1: task.TaskPacketID @@ -707,18 +722,20 @@ var file_task_proto_goTypes = []interface{}{ (*CSTaskDebugInc)(nil), // 8: task.CSTaskDebugInc (*SCTaskDebugInc)(nil), // 9: task.SCTaskDebugInc nil, // 10: task.TaskData.RewardEntry + nil, // 11: task.SCTaskReward.RewardEntry } var file_task_proto_depIdxs = []int32{ 10, // 0: task.TaskData.Reward:type_name -> task.TaskData.RewardEntry 2, // 1: task.SCTaskList.List:type_name -> task.TaskData 0, // 2: task.SCTaskReward.OpCode:type_name -> task.OpResultCode - 2, // 3: task.SCTaskChange.List:type_name -> task.TaskData - 0, // 4: task.SCTaskDebugInc.OpCode:type_name -> task.OpResultCode - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 11, // 3: task.SCTaskReward.Reward:type_name -> task.SCTaskReward.RewardEntry + 2, // 4: task.SCTaskChange.List:type_name -> task.TaskData + 0, // 5: task.SCTaskDebugInc.OpCode:type_name -> task.OpResultCode + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_task_proto_init() } @@ -830,7 +847,7 @@ func file_task_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_task_proto_rawDesc, NumEnums: 2, - NumMessages: 9, + NumMessages: 10, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/task/task.proto b/protocol/task/task.proto index 4246c53..2f7f359 100644 --- a/protocol/task/task.proto +++ b/protocol/task/task.proto @@ -44,14 +44,15 @@ message SCTaskList{ // 领取任务奖励 // PACKET_CSTaskReward message CSTaskReward{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 - int32 Id = 2; // 任务id + int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 + int32 Id = 2; // 任务id; 0 表示一键领取 } // PACKET_SCTaskReward message SCTaskReward{ OpResultCode OpCode = 1; // 操作码 int32 Tp = 2; // 任务类型 int32 Id = 3; // 任务id + map Reward = 5; // 奖励 } // 任务变更通知 diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 1d31b42..57928f0 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -6203,6 +6203,389 @@ func (x *ActInviteConfig) GetAwards3() []*RankAward { return nil } +// 等级奖励 +type PermitLevelConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rank int32 `protobuf:"varint,1,opt,name=Rank,proto3" json:"Rank,omitempty"` // 等级 + Score int64 `protobuf:"varint,2,opt,name=Score,proto3" json:"Score,omitempty"` // 积分 + Award1 []*ItemInfo `protobuf:"bytes,3,rep,name=Award1,proto3" json:"Award1,omitempty"` // 普通奖励 + Award2 []*ItemInfo `protobuf:"bytes,4,rep,name=Award2,proto3" json:"Award2,omitempty"` // 典藏奖励 +} + +func (x *PermitLevelConfig) Reset() { + *x = PermitLevelConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PermitLevelConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PermitLevelConfig) ProtoMessage() {} + +func (x *PermitLevelConfig) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[61] + 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 PermitLevelConfig.ProtoReflect.Descriptor instead. +func (*PermitLevelConfig) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{61} +} + +func (x *PermitLevelConfig) GetRank() int32 { + if x != nil { + return x.Rank + } + return 0 +} + +func (x *PermitLevelConfig) GetScore() int64 { + if x != nil { + return x.Score + } + return 0 +} + +func (x *PermitLevelConfig) GetAward1() []*ItemInfo { + if x != nil { + return x.Award1 + } + return nil +} + +func (x *PermitLevelConfig) GetAward2() []*ItemInfo { + if x != nil { + return x.Award2 + } + return nil +} + +// 兑换配置 +type PermitExchangeConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 商品id + SortId int32 `protobuf:"varint,2,opt,name=SortId,proto3" json:"SortId,omitempty"` // 排序序号 + Gain []*ItemInfo `protobuf:"bytes,3,rep,name=Gain,proto3" json:"Gain,omitempty"` // 获得商品 + Cost []*ItemInfo `protobuf:"bytes,4,rep,name=Cost,proto3" json:"Cost,omitempty"` // 消耗 + IsPermit bool `protobuf:"varint,5,opt,name=IsPermit,proto3" json:"IsPermit,omitempty"` // 是否需要典藏通行证 + Level int64 `protobuf:"varint,6,opt,name=Level,proto3" json:"Level,omitempty"` // 达到等级 + Times int64 `protobuf:"varint,7,opt,name=Times,proto3" json:"Times,omitempty"` // 最大兑换次数 + IsShow bool `protobuf:"varint,8,opt,name=IsShow,proto3" json:"IsShow,omitempty"` // 开关,true 开启, false 关闭 +} + +func (x *PermitExchangeConfig) Reset() { + *x = PermitExchangeConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PermitExchangeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PermitExchangeConfig) ProtoMessage() {} + +func (x *PermitExchangeConfig) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[62] + 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 PermitExchangeConfig.ProtoReflect.Descriptor instead. +func (*PermitExchangeConfig) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{62} +} + +func (x *PermitExchangeConfig) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PermitExchangeConfig) GetSortId() int32 { + if x != nil { + return x.SortId + } + return 0 +} + +func (x *PermitExchangeConfig) GetGain() []*ItemInfo { + if x != nil { + return x.Gain + } + return nil +} + +func (x *PermitExchangeConfig) GetCost() []*ItemInfo { + if x != nil { + return x.Cost + } + return nil +} + +func (x *PermitExchangeConfig) GetIsPermit() bool { + if x != nil { + return x.IsPermit + } + return false +} + +func (x *PermitExchangeConfig) GetLevel() int64 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *PermitExchangeConfig) GetTimes() int64 { + if x != nil { + return x.Times + } + return 0 +} + +func (x *PermitExchangeConfig) GetIsShow() bool { + if x != nil { + return x.IsShow + } + return false +} + +// 排行配置 +type PermitRankConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Start int32 `protobuf:"varint,1,opt,name=Start,proto3" json:"Start,omitempty"` // 开始排名;第一名为0 + End int32 `protobuf:"varint,2,opt,name=End,proto3" json:"End,omitempty"` // 结束排名 + ItemId []*ItemInfo `protobuf:"bytes,3,rep,name=ItemId,proto3" json:"ItemId,omitempty"` // 奖励 +} + +func (x *PermitRankConfig) Reset() { + *x = PermitRankConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PermitRankConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PermitRankConfig) ProtoMessage() {} + +func (x *PermitRankConfig) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[63] + 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 PermitRankConfig.ProtoReflect.Descriptor instead. +func (*PermitRankConfig) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{63} +} + +func (x *PermitRankConfig) GetStart() int32 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *PermitRankConfig) GetEnd() int32 { + if x != nil { + return x.End + } + return 0 +} + +func (x *PermitRankConfig) GetItemId() []*ItemInfo { + if x != nil { + return x.ItemId + } + return nil +} + +type PermitChannelConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Channel string `protobuf:"bytes,1,opt,name=Channel,proto3" json:"Channel,omitempty"` // 渠道 + LevelConfig []*PermitLevelConfig `protobuf:"bytes,2,rep,name=LevelConfig,proto3" json:"LevelConfig,omitempty"` // 等级奖励 + ExchangeConfig []*PermitExchangeConfig `protobuf:"bytes,3,rep,name=ExchangeConfig,proto3" json:"ExchangeConfig,omitempty"` // 兑换配置 + RankConfig []*PermitRankConfig `protobuf:"bytes,4,rep,name=RankConfig,proto3" json:"RankConfig,omitempty"` // 排行配置 +} + +func (x *PermitChannelConfig) Reset() { + *x = PermitChannelConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PermitChannelConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PermitChannelConfig) ProtoMessage() {} + +func (x *PermitChannelConfig) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[64] + 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 PermitChannelConfig.ProtoReflect.Descriptor instead. +func (*PermitChannelConfig) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{64} +} + +func (x *PermitChannelConfig) GetChannel() string { + if x != nil { + return x.Channel + } + return "" +} + +func (x *PermitChannelConfig) GetLevelConfig() []*PermitLevelConfig { + if x != nil { + return x.LevelConfig + } + return nil +} + +func (x *PermitChannelConfig) GetExchangeConfig() []*PermitExchangeConfig { + if x != nil { + return x.ExchangeConfig + } + return nil +} + +func (x *PermitChannelConfig) GetRankConfig() []*PermitRankConfig { + if x != nil { + return x.RankConfig + } + return nil +} + +// etcd /game/act_permit +type ActPermitConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + StartTs int64 `protobuf:"varint,2,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始日期 + OnChannelName []string `protobuf:"bytes,3,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启渠道 + Configs []*PermitChannelConfig `protobuf:"bytes,4,rep,name=Configs,proto3" json:"Configs,omitempty"` // 渠道配置 +} + +func (x *ActPermitConfig) Reset() { + *x = ActPermitConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActPermitConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActPermitConfig) ProtoMessage() {} + +func (x *ActPermitConfig) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[65] + 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 ActPermitConfig.ProtoReflect.Descriptor instead. +func (*ActPermitConfig) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{65} +} + +func (x *ActPermitConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ActPermitConfig) GetStartTs() int64 { + if x != nil { + return x.StartTs + } + return 0 +} + +func (x *ActPermitConfig) GetOnChannelName() []string { + if x != nil { + return x.OnChannelName + } + return nil +} + +func (x *ActPermitConfig) GetConfigs() []*PermitChannelConfig { + if x != nil { + return x.Configs + } + return nil +} + var File_common_proto protoreflect.FileDescriptor var file_common_proto_rawDesc = []byte{ @@ -7208,10 +7591,66 @@ var file_common_proto_rawDesc = []byte{ 0x53, 0x63, 0x6f, 0x72, 0x65, 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, 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, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, + 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, + 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x22, 0xea, 0x01, 0x0a, 0x14, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x47, + 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, + 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, + 0x6e, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x45, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xec, 0x01, + 0x0a, 0x13, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, + 0x3b, 0x0a, 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0e, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa4, 0x01, 0x0a, + 0x0f, 0x41, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 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, 0x18, 0x0a, 0x07, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, + 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x07, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x73, 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, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -7226,7 +7665,7 @@ func file_common_proto_rawDescGZIP() []byte { return file_common_proto_rawDescData } -var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 67) +var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 72) var file_common_proto_goTypes = []interface{}{ (*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting (*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting @@ -7289,33 +7728,38 @@ var file_common_proto_goTypes = []interface{}{ (*ChannelSwitchConfig)(nil), // 58: webapi.ChannelSwitchConfig (*RankAward)(nil), // 59: webapi.RankAward (*ActInviteConfig)(nil), // 60: webapi.ActInviteConfig - nil, // 61: webapi.Platform.BindTelRewardEntry - nil, // 62: webapi.PlayerData.RankScoreEntry - nil, // 63: webapi.ItemShop.AwardEntry - nil, // 64: webapi.VIPcfg.AwardEntry - nil, // 65: webapi.VIPcfg.Privilege7Entry - nil, // 66: webapi.ActInviteConfig.PayScoreEntry - (*server.DB_GameFree)(nil), // 67: server.DB_GameFree + (*PermitLevelConfig)(nil), // 61: webapi.PermitLevelConfig + (*PermitExchangeConfig)(nil), // 62: webapi.PermitExchangeConfig + (*PermitRankConfig)(nil), // 63: webapi.PermitRankConfig + (*PermitChannelConfig)(nil), // 64: webapi.PermitChannelConfig + (*ActPermitConfig)(nil), // 65: webapi.ActPermitConfig + nil, // 66: webapi.Platform.BindTelRewardEntry + nil, // 67: webapi.PlayerData.RankScoreEntry + nil, // 68: webapi.ItemShop.AwardEntry + nil, // 69: webapi.VIPcfg.AwardEntry + nil, // 70: webapi.VIPcfg.Privilege7Entry + nil, // 71: webapi.ActInviteConfig.PayScoreEntry + (*server.DB_GameFree)(nil), // 72: server.DB_GameFree } var file_common_proto_depIdxs = []int32{ 2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch 3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig 4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame - 61, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry + 66, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus - 67, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree + 72, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree 8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree 0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting 1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting 1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting - 67, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree - 62, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry + 72, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree + 67, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry 29, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo 20, // 13: webapi.OnlineReport.GameCount:type_name -> webapi.OnlineGameCnt 22, // 14: webapi.CommonNoticeList.List:type_name -> webapi.CommonNotice 25, // 15: webapi.ExchangeShop.ExType:type_name -> webapi.ExchangeType 24, // 16: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop - 63, // 17: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry + 68, // 17: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry 27, // 18: webapi.ItemShopList.List:type_name -> webapi.ItemShop 29, // 19: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo 30, // 20: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward @@ -7336,20 +7780,29 @@ var file_common_proto_depIdxs = []int32{ 35, // 35: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate 45, // 36: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree 45, // 37: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree - 64, // 38: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry - 65, // 39: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry + 69, // 38: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry + 70, // 39: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry 48, // 40: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg 35, // 41: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate 52, // 42: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig - 66, // 43: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry + 71, // 43: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry 59, // 44: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward 59, // 45: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward 59, // 46: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward - 47, // [47:47] is the sub-list for method output_type - 47, // [47:47] is the sub-list for method input_type - 47, // [47:47] is the sub-list for extension type_name - 47, // [47:47] is the sub-list for extension extendee - 0, // [0:47] is the sub-list for field type_name + 29, // 47: webapi.PermitLevelConfig.Award1:type_name -> webapi.ItemInfo + 29, // 48: webapi.PermitLevelConfig.Award2:type_name -> webapi.ItemInfo + 29, // 49: webapi.PermitExchangeConfig.Gain:type_name -> webapi.ItemInfo + 29, // 50: webapi.PermitExchangeConfig.Cost:type_name -> webapi.ItemInfo + 29, // 51: webapi.PermitRankConfig.ItemId:type_name -> webapi.ItemInfo + 61, // 52: webapi.PermitChannelConfig.LevelConfig:type_name -> webapi.PermitLevelConfig + 62, // 53: webapi.PermitChannelConfig.ExchangeConfig:type_name -> webapi.PermitExchangeConfig + 63, // 54: webapi.PermitChannelConfig.RankConfig:type_name -> webapi.PermitRankConfig + 64, // 55: webapi.ActPermitConfig.Configs:type_name -> webapi.PermitChannelConfig + 56, // [56:56] is the sub-list for method output_type + 56, // [56:56] is the sub-list for method input_type + 56, // [56:56] is the sub-list for extension type_name + 56, // [56:56] is the sub-list for extension extendee + 0, // [0:56] is the sub-list for field type_name } func init() { file_common_proto_init() } @@ -8090,6 +8543,66 @@ func file_common_proto_init() { return nil } } + file_common_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PermitLevelConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PermitExchangeConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PermitRankConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PermitChannelConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActPermitConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -8097,7 +8610,7 @@ func file_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_proto_rawDesc, NumEnums: 0, - NumMessages: 67, + NumMessages: 72, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 75557ca..8c40ec7 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -685,4 +685,46 @@ message ActInviteConfig { repeated RankAward Awards1 = 6; // 周榜奖励列表 repeated RankAward Awards2 = 7; // 周榜奖励列表 repeated RankAward Awards3 = 8; // 周榜奖励列表 +} + +// 等级奖励 +message PermitLevelConfig{ + int32 Rank = 1; // 等级 + int64 Score = 2; // 积分 + repeated ItemInfo Award1 = 3; // 普通奖励 + repeated ItemInfo Award2 = 4; // 典藏奖励 +} + +// 兑换配置 +message PermitExchangeConfig{ + int32 Id = 1; // 商品id + int32 SortId = 2; // 排序序号 + repeated ItemInfo Gain = 3; // 获得商品 + repeated ItemInfo Cost = 4; // 消耗 + bool IsPermit = 5; // 是否需要典藏通行证 + int64 Level = 6; // 达到等级 + int64 Times = 7; // 最大兑换次数 + bool IsShow = 8; // 开关,true 开启, false 关闭 +} + +// 排行配置 +message PermitRankConfig{ + int32 Start = 1; // 开始排名;第一名为0 + int32 End = 2; // 结束排名 + repeated ItemInfo ItemId = 3; // 奖励 +} + +message PermitChannelConfig{ + string Channel = 1; // 渠道 + repeated PermitLevelConfig LevelConfig = 2; // 等级奖励 + repeated PermitExchangeConfig ExchangeConfig = 3; // 兑换配置 + repeated PermitRankConfig RankConfig = 4; // 排行配置 +} + +// etcd /game/act_permit +message ActPermitConfig{ + string Platform = 1; // 平台 + int64 StartTs = 2; // 开始日期 + repeated string OnChannelName = 3; // 开启渠道 + repeated PermitChannelConfig Configs = 4; // 渠道配置 } \ No newline at end of file diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 651f6f1..4021aa7 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -139,6 +139,14 @@ const ( SPacketID_PACKET_CSDiamondBankGetInfo SPacketID = 2914 //钻石存钱罐信息获取 SPacketID_PACKET_SCDiamondBankGetInfo SPacketID = 2915 //钻石存钱罐信息返回 SPacketID_PACKET_SCDiamondBankTakeDiamond SPacketID = 2916 //钻石存钱罐领取返回 + SPacketID_PACKET_CSPermitInfo SPacketID = 2917 // 通行证奖励 + SPacketID_PACKET_SCPermitInfo SPacketID = 2918 // 通行证奖励 + SPacketID_PACKET_CSPermitExchangeList SPacketID = 2919 // 通行证兑换列表 + SPacketID_PACKET_SCPermitExchangeList SPacketID = 2920 // 通行证兑换列表 + SPacketID_PACKET_CSPermitAward SPacketID = 2921 // 领取通行证奖励 + SPacketID_PACKET_SCPermitAward SPacketID = 2922 // 领取通行证奖励 + SPacketID_PACKET_CSPermitExchange SPacketID = 2923 // 通行证兑换 + SPacketID_PACKET_SCPermitExchange SPacketID = 2924 // 通行证兑换 ) // Enum value maps for SPacketID. @@ -180,6 +188,14 @@ var ( 2914: "PACKET_CSDiamondBankGetInfo", 2915: "PACKET_SCDiamondBankGetInfo", 2916: "PACKET_SCDiamondBankTakeDiamond", + 2917: "PACKET_CSPermitInfo", + 2918: "PACKET_SCPermitInfo", + 2919: "PACKET_CSPermitExchangeList", + 2920: "PACKET_SCPermitExchangeList", + 2921: "PACKET_CSPermitAward", + 2922: "PACKET_SCPermitAward", + 2923: "PACKET_CSPermitExchange", + 2924: "PACKET_SCPermitExchange", } SPacketID_value = map[string]int32{ "PACKET_SHOP_ZERO": 0, @@ -218,6 +234,14 @@ var ( "PACKET_CSDiamondBankGetInfo": 2914, "PACKET_SCDiamondBankGetInfo": 2915, "PACKET_SCDiamondBankTakeDiamond": 2916, + "PACKET_CSPermitInfo": 2917, + "PACKET_SCPermitInfo": 2918, + "PACKET_CSPermitExchangeList": 2919, + "PACKET_SCPermitExchangeList": 2920, + "PACKET_CSPermitAward": 2921, + "PACKET_SCPermitAward": 2922, + "PACKET_CSPermitExchange": 2923, + "PACKET_SCPermitExchange": 2924, } ) @@ -3062,6 +3086,858 @@ func (x *SCDiamondBankTakeDiamond) GetShopId() int32 { return 0 } +// 赛季通行证信息 +//PACKET_CSPermitInfo +type CSPermitInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSPermitInfo) Reset() { + *x = CSPermitInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPermitInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPermitInfo) ProtoMessage() {} + +func (x *CSPermitInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSPermitInfo.ProtoReflect.Descriptor instead. +func (*CSPermitInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{44} +} + +type PropInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //物品ID + ItemNum int64 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //物品数量 +} + +func (x *PropInfo) Reset() { + *x = PropInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PropInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PropInfo) ProtoMessage() {} + +func (x *PropInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[45] + 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 PropInfo.ProtoReflect.Descriptor instead. +func (*PropInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{45} +} + +func (x *PropInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *PropInfo) GetItemNum() int64 { + if x != nil { + return x.ItemNum + } + return 0 +} + +type PropItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Award []*PropInfo `protobuf:"bytes,1,rep,name=Award,proto3" json:"Award,omitempty"` // 奖励 + Status int64 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 奖励状态 0默认 1可领取 2已领取 + Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` // 奖励id; 领奖时使用 +} + +func (x *PropItem) Reset() { + *x = PropItem{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PropItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PropItem) ProtoMessage() {} + +func (x *PropItem) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[46] + 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 PropItem.ProtoReflect.Descriptor instead. +func (*PropItem) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{46} +} + +func (x *PropItem) GetAward() []*PropInfo { + if x != nil { + return x.Award + } + return nil +} + +func (x *PropItem) GetStatus() int64 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *PropItem) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +type PermitAward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exp int64 `protobuf:"varint,1,opt,name=Exp,proto3" json:"Exp,omitempty"` // 赛季经验 + Level int64 `protobuf:"varint,2,opt,name=Level,proto3" json:"Level,omitempty"` // 等级 + Award1 []*PropItem `protobuf:"bytes,3,rep,name=Award1,proto3" json:"Award1,omitempty"` // 普通奖励 + Award2 []*PropItem `protobuf:"bytes,4,rep,name=Award2,proto3" json:"Award2,omitempty"` // 典藏奖励 +} + +func (x *PermitAward) Reset() { + *x = PermitAward{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PermitAward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PermitAward) ProtoMessage() {} + +func (x *PermitAward) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[47] + 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 PermitAward.ProtoReflect.Descriptor instead. +func (*PermitAward) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{47} +} + +func (x *PermitAward) GetExp() int64 { + if x != nil { + return x.Exp + } + return 0 +} + +func (x *PermitAward) GetLevel() int64 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *PermitAward) GetAward1() []*PropItem { + if x != nil { + return x.Award1 + } + return nil +} + +func (x *PermitAward) GetAward2() []*PropItem { + if x != nil { + return x.Award2 + } + return nil +} + +type PermitShow struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShowType int32 `protobuf:"varint,1,opt,name=ShowType,proto3" json:"ShowType,omitempty"` // 类型 + ShowVolume int32 `protobuf:"varint,2,opt,name=ShowVolume,proto3" json:"ShowVolume,omitempty"` // id + Location int32 `protobuf:"varint,3,opt,name=Location,proto3" json:"Location,omitempty"` // 跳转界面 +} + +func (x *PermitShow) Reset() { + *x = PermitShow{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PermitShow) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PermitShow) ProtoMessage() {} + +func (x *PermitShow) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[48] + 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 PermitShow.ProtoReflect.Descriptor instead. +func (*PermitShow) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{48} +} + +func (x *PermitShow) GetShowType() int32 { + if x != nil { + return x.ShowType + } + return 0 +} + +func (x *PermitShow) GetShowVolume() int32 { + if x != nil { + return x.ShowVolume + } + return 0 +} + +func (x *PermitShow) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PermitRankAward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rank int32 `protobuf:"varint,1,opt,name=Rank,proto3" json:"Rank,omitempty"` // 名次 + Award []*PropInfo `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty"` // 奖励 +} + +func (x *PermitRankAward) Reset() { + *x = PermitRankAward{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PermitRankAward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PermitRankAward) ProtoMessage() {} + +func (x *PermitRankAward) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[49] + 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 PermitRankAward.ProtoReflect.Descriptor instead. +func (*PermitRankAward) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{49} +} + +func (x *PermitRankAward) GetRank() int32 { + if x != nil { + return x.Rank + } + return 0 +} + +func (x *PermitRankAward) GetAward() []*PropInfo { + if x != nil { + return x.Award + } + return nil +} + +//PACKET_SCPermitInfo +type SCPermitInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exp int64 `protobuf:"varint,1,opt,name=Exp,proto3" json:"Exp,omitempty"` // 玩家赛季经验 + Level int64 `protobuf:"varint,2,opt,name=Level,proto3" json:"Level,omitempty"` // 玩家等级 + Award []*PermitAward `protobuf:"bytes,3,rep,name=Award,proto3" json:"Award,omitempty"` // 奖励列表 + Timestamp []int64 `protobuf:"varint,4,rep,packed,name=Timestamp,proto3" json:"Timestamp,omitempty"` // 赛季开始和结束时间戳 [开始时间戳,结束时间戳] + ShowList []*PermitShow `protobuf:"bytes,5,rep,name=ShowList,proto3" json:"ShowList,omitempty"` // 展示列表 + IsPermit bool `protobuf:"varint,6,opt,name=IsPermit,proto3" json:"IsPermit,omitempty"` // 是否已购买典藏通行证 + RankAward []*PermitRankAward `protobuf:"bytes,7,rep,name=RankAward,proto3" json:"RankAward,omitempty"` // 排行榜奖励 +} + +func (x *SCPermitInfo) Reset() { + *x = SCPermitInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPermitInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPermitInfo) ProtoMessage() {} + +func (x *SCPermitInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[50] + 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 SCPermitInfo.ProtoReflect.Descriptor instead. +func (*SCPermitInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{50} +} + +func (x *SCPermitInfo) GetExp() int64 { + if x != nil { + return x.Exp + } + return 0 +} + +func (x *SCPermitInfo) GetLevel() int64 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *SCPermitInfo) GetAward() []*PermitAward { + if x != nil { + return x.Award + } + return nil +} + +func (x *SCPermitInfo) GetTimestamp() []int64 { + if x != nil { + return x.Timestamp + } + return nil +} + +func (x *SCPermitInfo) GetShowList() []*PermitShow { + if x != nil { + return x.ShowList + } + return nil +} + +func (x *SCPermitInfo) GetIsPermit() bool { + if x != nil { + return x.IsPermit + } + return false +} + +func (x *SCPermitInfo) GetRankAward() []*PermitRankAward { + if x != nil { + return x.RankAward + } + return nil +} + +// 领取赛季通行证奖励 +//PACKET_CSPermitAward +type CSPermitAward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 奖励id; 0:一键领取 +} + +func (x *CSPermitAward) Reset() { + *x = CSPermitAward{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPermitAward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPermitAward) ProtoMessage() {} + +func (x *CSPermitAward) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[51] + 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 CSPermitAward.ProtoReflect.Descriptor instead. +func (*CSPermitAward) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{51} +} + +func (x *CSPermitAward) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +//PACKET_SCPermitAward +type SCPermitAward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 错误码 + Award1 []*PropInfo `protobuf:"bytes,2,rep,name=Award1,proto3" json:"Award1,omitempty"` // 普通奖励 + Award2 []*PropInfo `protobuf:"bytes,3,rep,name=Award2,proto3" json:"Award2,omitempty"` // 典藏奖励 + Id int32 `protobuf:"varint,4,opt,name=Id,proto3" json:"Id,omitempty"` // 奖励id; 0:一键领取 +} + +func (x *SCPermitAward) Reset() { + *x = SCPermitAward{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPermitAward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPermitAward) ProtoMessage() {} + +func (x *SCPermitAward) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[52] + 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 SCPermitAward.ProtoReflect.Descriptor instead. +func (*SCPermitAward) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{52} +} + +func (x *SCPermitAward) GetOpRetCode() OpResultCode { + if x != nil { + return x.OpRetCode + } + return OpResultCode_OPRC_Sucess +} + +func (x *SCPermitAward) GetAward1() []*PropInfo { + if x != nil { + return x.Award1 + } + return nil +} + +func (x *SCPermitAward) GetAward2() []*PropInfo { + if x != nil { + return x.Award2 + } + return nil +} + +func (x *SCPermitAward) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +// 赛季通行证兑换商城 +//PACKET_CSPermitExchangeList +type CSPermitExchangeList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSPermitExchangeList) Reset() { + *x = CSPermitExchangeList{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPermitExchangeList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPermitExchangeList) ProtoMessage() {} + +func (x *CSPermitExchangeList) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[53] + 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 CSPermitExchangeList.ProtoReflect.Descriptor instead. +func (*CSPermitExchangeList) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{53} +} + +type ShopInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 商品id + Gain []*PropInfo `protobuf:"bytes,2,rep,name=Gain,proto3" json:"Gain,omitempty"` // 获得商品 + Cost []*PropInfo `protobuf:"bytes,3,rep,name=Cost,proto3" json:"Cost,omitempty"` // 消耗商品 + ExchangeTimes int32 `protobuf:"varint,4,opt,name=ExchangeTimes,proto3" json:"ExchangeTimes,omitempty"` // 最大兑换次数 + RemainTimes int32 `protobuf:"varint,5,opt,name=RemainTimes,proto3" json:"RemainTimes,omitempty"` // 剩余兑换次数 + Status int64 `protobuf:"varint,6,opt,name=Status,proto3" json:"Status,omitempty"` // 兑换状态 0默认 1可领取 2已领取 + Level int64 `protobuf:"varint,7,opt,name=Level,proto3" json:"Level,omitempty"` // 兑换所需等级 + NeedPermit bool `protobuf:"varint,8,opt,name=NeedPermit,proto3" json:"NeedPermit,omitempty"` // 需要典藏通行证 +} + +func (x *ShopInfo) Reset() { + *x = ShopInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShopInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShopInfo) ProtoMessage() {} + +func (x *ShopInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[54] + 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 ShopInfo.ProtoReflect.Descriptor instead. +func (*ShopInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{54} +} + +func (x *ShopInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ShopInfo) GetGain() []*PropInfo { + if x != nil { + return x.Gain + } + return nil +} + +func (x *ShopInfo) GetCost() []*PropInfo { + if x != nil { + return x.Cost + } + return nil +} + +func (x *ShopInfo) GetExchangeTimes() int32 { + if x != nil { + return x.ExchangeTimes + } + return 0 +} + +func (x *ShopInfo) GetRemainTimes() int32 { + if x != nil { + return x.RemainTimes + } + return 0 +} + +func (x *ShopInfo) GetStatus() int64 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ShopInfo) GetLevel() int64 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *ShopInfo) GetNeedPermit() bool { + if x != nil { + return x.NeedPermit + } + return false +} + +//PACKET_SCPermitExchangeList +type SCPermitExchangeList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*ShopInfo `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` // 兑换列表 +} + +func (x *SCPermitExchangeList) Reset() { + *x = SCPermitExchangeList{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPermitExchangeList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPermitExchangeList) ProtoMessage() {} + +func (x *SCPermitExchangeList) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[55] + 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 SCPermitExchangeList.ProtoReflect.Descriptor instead. +func (*SCPermitExchangeList) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{55} +} + +func (x *SCPermitExchangeList) GetList() []*ShopInfo { + if x != nil { + return x.List + } + return nil +} + +// 赛季通行证商城兑换 +//PACKET_CSPermitExchange +type CSPermitExchange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 商品id +} + +func (x *CSPermitExchange) Reset() { + *x = CSPermitExchange{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPermitExchange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPermitExchange) ProtoMessage() {} + +func (x *CSPermitExchange) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[56] + 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 CSPermitExchange.ProtoReflect.Descriptor instead. +func (*CSPermitExchange) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{56} +} + +func (x *CSPermitExchange) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +//PACKET_SCPermitExchange +type SCPermitExchange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 错误码 +} + +func (x *SCPermitExchange) Reset() { + *x = SCPermitExchange{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPermitExchange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPermitExchange) ProtoMessage() {} + +func (x *SCPermitExchange) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[57] + 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 SCPermitExchange.ProtoReflect.Descriptor instead. +func (*SCPermitExchange) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{57} +} + +func (x *SCPermitExchange) GetOpRetCode() OpResultCode { + if x != nil { + return x.OpRetCode + } + return OpResultCode_OPRC_Sucess +} + var File_welfare_proto protoreflect.FileDescriptor var file_welfare_proto_rawDesc = []byte{ @@ -3385,98 +4261,202 @@ var file_welfare_proto_rawDesc = []byte{ 0x0a, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, - 0x49, 0x64, 0x2a, 0x86, 0x02, 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, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, - 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x14, - 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x42, 0x69, - 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, - 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, - 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, - 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, - 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4f, 0x76, 0x65, 0x72, - 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x2a, 0xff, 0x08, 0x0a, 0x09, - 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, - 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, - 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, - 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, - 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, - 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, - 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, + 0x49, 0x64, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x3c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 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, + 0x22, 0x5b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x8b, 0x01, + 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, + 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, + 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x22, 0x64, 0x0a, 0x0a, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, + 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, + 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x4e, 0x0a, 0x0f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x22, 0x85, 0x02, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, + 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, + 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x08, 0x53, 0x68, 0x6f, + 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x12, 0x36, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x09, + 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x1f, 0x0a, 0x0d, 0x43, 0x53, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x0d, 0x53, + 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x33, 0x0a, 0x09, + 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0xfe, 0x01, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, + 0x47, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, + 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x22, 0x3d, 0x0a, 0x14, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, + 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0x22, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0x86, 0x02, 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, 0x10, + 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, + 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, + 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, + 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, + 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, + 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, + 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, + 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, + 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, + 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x2a, 0xe9, 0x0a, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, + 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, + 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, + 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, + 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, + 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, + 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, + 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, + 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, + 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, + 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, + 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, + 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, + 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, + 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, + 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, - 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f, 0x0a, - 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, - 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x12, 0x1f, - 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x14, 0x12, - 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9c, 0x14, - 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, - 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9d, - 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9e, - 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9f, - 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, - 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa3, - 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, - 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, - 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, - 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, - 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, - 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, - 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, - 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, - 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 0x10, 0xe1, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0xe2, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe3, 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, - 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, 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, 0x77, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, + 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, + 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, + 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, + 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, + 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, + 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, + 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, + 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, + 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, + 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, + 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, + 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, + 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, + 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x69, 0x67, + 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, + 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, + 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, + 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, + 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, + 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, + 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, + 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 0x12, 0x20, 0x0a, + 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe2, 0x16, 0x12, + 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe3, + 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, + 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe5, + 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe6, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe7, 0x16, 0x12, 0x20, 0x0a, + 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe8, 0x16, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x10, 0xea, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x10, 0xeb, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xec, + 0x16, 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, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -3492,7 +4472,7 @@ func file_welfare_proto_rawDescGZIP() []byte { } var file_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 45) +var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 59) var file_welfare_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: welfare.OpResultCode (SPacketID)(0), // 1: welfare.SPacketID @@ -3540,7 +4520,21 @@ var file_welfare_proto_goTypes = []interface{}{ (*CSDiamondBankGetInfo)(nil), // 43: welfare.CSDiamondBankGetInfo (*SCDiamondBankGetInfo)(nil), // 44: welfare.SCDiamondBankGetInfo (*SCDiamondBankTakeDiamond)(nil), // 45: welfare.SCDiamondBankTakeDiamond - nil, // 46: welfare.SCInviteInfo.PayScoreEntry + (*CSPermitInfo)(nil), // 46: welfare.CSPermitInfo + (*PropInfo)(nil), // 47: welfare.PropInfo + (*PropItem)(nil), // 48: welfare.PropItem + (*PermitAward)(nil), // 49: welfare.PermitAward + (*PermitShow)(nil), // 50: welfare.PermitShow + (*PermitRankAward)(nil), // 51: welfare.PermitRankAward + (*SCPermitInfo)(nil), // 52: welfare.SCPermitInfo + (*CSPermitAward)(nil), // 53: welfare.CSPermitAward + (*SCPermitAward)(nil), // 54: welfare.SCPermitAward + (*CSPermitExchangeList)(nil), // 55: welfare.CSPermitExchangeList + (*ShopInfo)(nil), // 56: welfare.ShopInfo + (*SCPermitExchangeList)(nil), // 57: welfare.SCPermitExchangeList + (*CSPermitExchange)(nil), // 58: welfare.CSPermitExchange + (*SCPermitExchange)(nil), // 59: welfare.SCPermitExchange + nil, // 60: welfare.SCInviteInfo.PayScoreEntry } var file_welfare_proto_depIdxs = []int32{ 0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode @@ -3567,7 +4561,7 @@ var file_welfare_proto_depIdxs = []int32{ 0, // 21: welfare.SCWelfareContinuousPayData.OpRetCode:type_name -> welfare.OpResultCode 23, // 22: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree 0, // 23: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode - 46, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry + 60, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry 35, // 25: welfare.SCInviteInfo.Awards1:type_name -> welfare.RankAward 35, // 26: welfare.SCInviteInfo.Awards2:type_name -> welfare.RankAward 35, // 27: welfare.SCInviteInfo.Awards3:type_name -> welfare.RankAward @@ -3576,11 +4570,25 @@ var file_welfare_proto_depIdxs = []int32{ 0, // 30: welfare.SCPigbankTakeCoin.OpRetCode:type_name -> welfare.OpResultCode 0, // 31: welfare.SCDiamondBankGetInfo.OpRetCode:type_name -> welfare.OpResultCode 0, // 32: welfare.SCDiamondBankTakeDiamond.OpRetCode:type_name -> welfare.OpResultCode - 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 + 47, // 33: welfare.PropItem.Award:type_name -> welfare.PropInfo + 48, // 34: welfare.PermitAward.Award1:type_name -> welfare.PropItem + 48, // 35: welfare.PermitAward.Award2:type_name -> welfare.PropItem + 47, // 36: welfare.PermitRankAward.Award:type_name -> welfare.PropInfo + 49, // 37: welfare.SCPermitInfo.Award:type_name -> welfare.PermitAward + 50, // 38: welfare.SCPermitInfo.ShowList:type_name -> welfare.PermitShow + 51, // 39: welfare.SCPermitInfo.RankAward:type_name -> welfare.PermitRankAward + 0, // 40: welfare.SCPermitAward.OpRetCode:type_name -> welfare.OpResultCode + 47, // 41: welfare.SCPermitAward.Award1:type_name -> welfare.PropInfo + 47, // 42: welfare.SCPermitAward.Award2:type_name -> welfare.PropInfo + 47, // 43: welfare.ShopInfo.Gain:type_name -> welfare.PropInfo + 47, // 44: welfare.ShopInfo.Cost:type_name -> welfare.PropInfo + 56, // 45: welfare.SCPermitExchangeList.List:type_name -> welfare.ShopInfo + 0, // 46: welfare.SCPermitExchange.OpRetCode:type_name -> welfare.OpResultCode + 47, // [47:47] is the sub-list for method output_type + 47, // [47:47] is the sub-list for method input_type + 47, // [47:47] is the sub-list for extension type_name + 47, // [47:47] is the sub-list for extension extendee + 0, // [0:47] is the sub-list for field type_name } func init() { file_welfare_proto_init() } @@ -4117,6 +5125,174 @@ func file_welfare_proto_init() { return nil } } + file_welfare_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPermitInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PropInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PropItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PermitAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PermitShow); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PermitRankAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPermitInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPermitAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPermitAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPermitExchangeList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShopInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPermitExchangeList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPermitExchange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPermitExchange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -4124,7 +5300,7 @@ func file_welfare_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_welfare_proto_rawDesc, NumEnums: 2, - NumMessages: 45, + NumMessages: 59, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index 6388dac..1b88f6a 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -60,8 +60,18 @@ enum SPacketID { PACKET_CSDiamondBankGetInfo = 2914; //钻石存钱罐信息获取 PACKET_SCDiamondBankGetInfo = 2915; //钻石存钱罐信息返回 PACKET_SCDiamondBankTakeDiamond = 2916; //钻石存钱罐领取返回 - - + + PACKET_CSPermitInfo = 2917;// 通行证奖励 + PACKET_SCPermitInfo = 2918;// 通行证奖励 + + PACKET_CSPermitExchangeList = 2919; // 通行证兑换列表 + PACKET_SCPermitExchangeList = 2920; // 通行证兑换列表 + + PACKET_CSPermitAward = 2921; // 领取通行证奖励 + PACKET_SCPermitAward = 2922; // 领取通行证奖励 + + PACKET_CSPermitExchange = 2923; // 通行证兑换 + PACKET_SCPermitExchange = 2924; // 通行证兑换 } //救济金领取 @@ -376,4 +386,93 @@ message SCDiamondBankTakeDiamond{ int64 Price = 6; //原价 int64 NowPrice = 7; //现价 int32 ShopId = 8; //商城ID +} + +// 赛季通行证信息 +//PACKET_CSPermitInfo +message CSPermitInfo{ +} + +message PropInfo{ + int32 ItemId = 1;//物品ID + int64 ItemNum = 2;//物品数量 +} + +message PropItem{ + repeated PropInfo Award = 1; // 奖励 + int64 Status = 2; // 奖励状态 0默认 1可领取 2已领取 + int32 Id = 3; // 奖励id; 领奖时使用 +} + +message PermitAward{ + int64 Exp = 1; // 赛季经验 + int64 Level = 2; // 等级 + repeated PropItem Award1 = 3; // 普通奖励 + repeated PropItem Award2 = 4; // 典藏奖励 +} + +message PermitShow{ + int32 ShowType = 1; // 类型 + int32 ShowVolume = 2; // id + int32 Location = 3; // 跳转界面 +} + +message PermitRankAward{ + int32 Rank = 1; // 名次 + repeated PropInfo Award = 2; // 奖励 +} + +//PACKET_SCPermitInfo +message SCPermitInfo{ + int64 Exp = 1; // 玩家赛季经验 + int64 Level = 2; // 玩家等级 + repeated PermitAward Award = 3; // 奖励列表 + repeated int64 Timestamp = 4; // 赛季开始和结束时间戳 [开始时间戳,结束时间戳] + repeated PermitShow ShowList = 5; // 展示列表 + bool IsPermit = 6; // 是否已购买典藏通行证 + repeated PermitRankAward RankAward = 7; // 排行榜奖励 +} + +// 领取赛季通行证奖励 +//PACKET_CSPermitAward +message CSPermitAward{ + int32 Id = 1; // 奖励id; 0:一键领取 +} +//PACKET_SCPermitAward +message SCPermitAward{ + OpResultCode OpRetCode = 1; // 错误码 + repeated PropInfo Award1 = 2; // 普通奖励 + repeated PropInfo Award2 = 3; // 典藏奖励 + int32 Id = 4; // 奖励id; 0:一键领取 +} + +// 赛季通行证兑换商城 +//PACKET_CSPermitExchangeList +message CSPermitExchangeList{ +} + +message ShopInfo{ + int32 Id = 1; // 商品id + repeated PropInfo Gain = 2; // 获得商品 + repeated PropInfo Cost = 3; // 消耗商品 + int32 ExchangeTimes = 4; // 最大兑换次数 + int32 RemainTimes = 5; // 剩余兑换次数 + int64 Status = 6; // 兑换状态 0默认 1可领取 2已领取 + int64 Level = 7; // 兑换所需等级 + bool NeedPermit = 8; // 需要典藏通行证 +} + +//PACKET_SCPermitExchangeList +message SCPermitExchangeList{ + repeated ShopInfo List = 1; // 兑换列表 +} + +// 赛季通行证商城兑换 +//PACKET_CSPermitExchange +message CSPermitExchange{ + int32 Id = 1; // 商品id +} +//PACKET_SCPermitExchange +message SCPermitExchange{ + OpResultCode OpRetCode = 1; // 错误码 } \ No newline at end of file diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index 01f77d7..a8fac7e 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -42,16 +42,18 @@ const ( // page类型 const ( - ShopPageCoin = 1 //金币页面 - ShopPageDiamond = 2 //钻石页面 - ShopPageItem = 3 //道具页面 - ShopPageVip = 4 //VIP页面 - ShopPagePrivilege = 5 //VIP特权礼包 + ShopPageCoin = 1 //金币页面 + ShopPageDiamond = 2 //钻石页面 + ShopPageItem = 3 //道具页面 + ShopPageVip = 4 //VIP页面 + ShopPagePrivilege = 5 //VIP特权礼包 + ShopPageGift = 7 //礼包页面 + ShopPageDiamondBank = 8 //钻石存储罐 + ShopPagePermit = 9 //赛季通行证 + ShopPagePhoneScore = 61 //手机积分商城 ShopPagePhoneScoreGoogle = 62 - ShopPageGift = 7 //礼包页面 - ShopPageDiamondBank = 8 //钻石存储罐 - ShopPageBackend = 9 //并不是页面,是后台加币记录类型 + ShopPageBackend = 63 //并不是页面,是后台加币记录类型 ) // 商品类型 From 4c7abf167e8811d633ad10e39fc86fde238f17bf Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 2 Jul 2024 14:21:24 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=B5=9B=E5=AD=A3=E9=80=9A=E8=A1=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 29 + common/time.go | 7 + data/DB_GameItem.dat | Bin 8619 -> 8958 bytes data/DB_GameItem.json | 93 ++ data/DB_PassShow.dat | 4 + data/DB_PassShow.json | 16 + data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 2161 -> 2441 bytes data/DB_Task.json | 142 +++ dbproxy/mq/c_rank.go | 28 + dbproxy/svc/l_rankplayerpermit.go | 72 ++ etcd/keyconf.go | 1 + model/config.go | 42 + model/gamedata.go | 4 + model/gameparam.go | 4 + model/player.go | 10 +- model/rank.go | 34 + protocol/server/pbdata.pb.go | 1380 ++++++++++++++++------------- protocol/server/pbdata.proto | 16 + protocol/webapi/common.pb.go | 35 +- protocol/webapi/common.proto | 2 +- protocol/welfare/welfare.pb.go | 600 ++++++++----- protocol/welfare/welfare.proto | 39 +- public | 2 +- ranksrv/action_gatesrv.go | 68 ++ ranksrv/rank/rankpermit.go | 29 + srvdata/db_passshow.go | 77 ++ worldsrv/action_friend.go | 7 + worldsrv/action_game.go | 16 + worldsrv/action_server.go | 9 + worldsrv/action_task.go | 42 +- worldsrv/action_welfare.go | 651 ++++++++++++++ worldsrv/bagmgr.go | 20 + worldsrv/etcd.go | 142 ++- worldsrv/logchannel.go | 1 + worldsrv/main.go | 9 +- worldsrv/permitmgr.go | 76 ++ worldsrv/player.go | 64 +- worldsrv/taskmgr.go | 7 + worldsrv/tournament.go | 12 + worldsrv/trascate_webapi.go | 3 + worldsrv/welfmgr.go | 9 + xlsx/DB_GameItem.xlsx | Bin 23164 -> 23736 bytes xlsx/DB_PassShow.xlsx | Bin 0 -> 12337 bytes xlsx/DB_Task.xlsx | Bin 20513 -> 21800 bytes 45 files changed, 2948 insertions(+), 854 deletions(-) create mode 100644 data/DB_PassShow.dat create mode 100644 data/DB_PassShow.json create mode 100644 dbproxy/svc/l_rankplayerpermit.go create mode 100644 ranksrv/rank/rankpermit.go create mode 100644 srvdata/db_passshow.go create mode 100644 worldsrv/permitmgr.go create mode 100644 xlsx/DB_PassShow.xlsx diff --git a/common/constant.go b/common/constant.go index b168db9..fddeea2 100644 --- a/common/constant.go +++ b/common/constant.go @@ -149,6 +149,16 @@ func IsLocalGame(gameId int) bool { return false } +func IsDaZhong(gameId int) bool { + switch gameId { + case GameId_TienLenSelect, + GameId_TienLenSelect_yl, GameId_TienLenSelect_toend, + GameId_TienLenSelect_yl_toend: + return true + } + return false +} + // 房间编号区间 const ( PrivateSceneStartId = 10000000 @@ -276,6 +286,11 @@ const ( GainWay_PigrankGainDiamond = 90 //存钱罐打开获取钻石 GainWaySign7Add = 91 // 累计签到进阶奖励获得 GainWayItemChange = 92 //背包内使用道具兑换话费 + GainWayPermitAward = 93 // 赛季通行证普通奖励 + GainWayPermitAwardSupper = 93 // 赛季通行证典藏奖励 + GainWayPermitExchangeCost = 94 // 赛季通行证兑换消耗 + GainWayPermitExchangeGain = 95 // 赛季通行证兑换获得 + GainWayItemTaskPermit = 96 // 赛季通行证任务 ) // 后台选择 金币变化类型 的充值 类型id号起始 @@ -678,6 +693,14 @@ const ( TaskTypeTurnplate = 17 // 转盘抽奖次数 TaskTypeInviteRecharge = 18 // 被邀请人充值金额* TaskTypeLoseCoin = 19 // 输的金币数量 + TaskType20 = 20 // 未使用 + TaskTypeOnlineTs = 21 // 在线时长,秒 + TaskTypeBuyPig = 22 // 购买任意存钱罐 + TaskTypeDaZhong = 23 // 大众场胜利 + TaskTypeInvitePlay = 24 // 邀请好友私人桌对局 + TaskTypeJoinMatch = 25 // 参与比赛场 + TaskTypeMatchRank10 = 26 // 比赛场前10名 + TaskTypeCostDiamond = 27 // 消耗钻石数量 ) const ( @@ -693,6 +716,7 @@ const ( TaskActivityTypeNovice = 3 // 新手任务 TaskActivityTypeInvite = 4 // 邀请任务 TaskActivityTypeAchieve = 5 // 成就任务 + TaskActivityTypePermit = 6 // 赛季通行证任务 ) const HeadRange = 3 // 机器人头像id范围 @@ -762,4 +786,9 @@ const ( // 特殊商品id const ( ShopIdWeekCard = 970001 // 周卡 + ShopIdPermit = 990001 // 典藏通行证 ) + +const PermitStartTsKey = "permit_start_ts" + +const PermitTaskScore = 100 diff --git a/common/time.go b/common/time.go index 2afb753..9fd5a72 100644 --- a/common/time.go +++ b/common/time.go @@ -155,6 +155,13 @@ func GetWeekStartTs(ts int64) int64 { return st } +func GetDayStartTs(ts int64) int64 { + now := time.Unix(ts, 0).Local() + year, month, day := now.Date() + today := time.Date(year, month, day, 0, 0, 0, 0, time.Local) + return today.Unix() +} + func GetMonthTimestamp() []int64 { now := time.Now().Local() year, month, _ := now.Date() diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 08348aff54374fb35c99f2e1e6eca2e693d96c37..4a0081f400cd1de9159db854c72976a30fc392f6 100644 GIT binary patch delta 206 zcmZ4O{LghlAMZ3qj-R1IJkPosUNrBW$fwU3J<(2!=XvMOXY0Bkf*Uh-a`6Um+-+kP zVtcu7=F=UGlleGRW#pdruYWpc#mk0SFBbN^Sl{?$$J(c@6QA`idOEdjvn;nROL`i| z>RvV>o)=qZKV7@{`SSHoJKCg}7#Nh885kHegp62#6oVC*j9|=SG$=AdHtWgm-A}s~ rzUbTjbl-G{-uHWYfL1=)JLk!cUC;U^0d0Mi%bCkX)nrwwNE delta 21 dcmez8y4ra{-)42j$y}Rxcr;ly&lN}%0svwh2a^B* diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 619475e..5cd9737 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -32,6 +32,38 @@ "Location": "10001", "Describe": "作用:用于升级,解锁宠物斗鸡;可在角色功能页面使用。\n" }, + { + "Id": 11001, + "Name": "技能碎片", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 1, + "Effect0": [ + 1, + 0, + 1, + 0 + ], + "Effect": [ + 1, + 0, + 1, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "10001", + "Describe": "作用:用于升级,解锁宠物斗鸡特殊技能;可在角色功能页面使用。\n" + }, { "Id": 20001, "Name": "酷帕碎片", @@ -757,6 +789,38 @@ "Location": "0", "Describe": "可在集字活动中兑换物品" }, + { + "Id": 50013, + "Name": "龙币", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1, + 0 + ], + "Effect": [ + 0, + 0, + 1, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "可在通行证中兑换商品" + }, { "Id": 60001, "Name": "tienlen记牌器(1小时)", @@ -1171,6 +1235,35 @@ "Describe": "房间内互动表情", "Num": 1000 }, + { + "Id": 100011, + "Name": "赛季积分", + "ShowLocation": [ + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 18, + "Effect0": [ + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0 + ], + "CompositionMax": 1, + "Location": "0", + "Describe": "通行证中任务获得积分,可作为排行使用" + }, { "Id": 100135, "Name": "圣耀裁决", diff --git a/data/DB_PassShow.dat b/data/DB_PassShow.dat new file mode 100644 index 0000000..a76215f --- /dev/null +++ b/data/DB_PassShow.dat @@ -0,0 +1,4 @@ + + z  + +N N \ No newline at end of file diff --git a/data/DB_PassShow.json b/data/DB_PassShow.json new file mode 100644 index 0000000..f8d8091 --- /dev/null +++ b/data/DB_PassShow.json @@ -0,0 +1,16 @@ +{ + "Arr": [ + { + "Id": 1, + "ShowType": 1, + "ShowVolume": 2000003, + "Location": 20003 + }, + { + "Id": 2, + "ShowType": 2, + "ShowVolume": 10001, + "Location": 10001 + } + ] +} \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 714d1c14d95b60023f792b7304d73b8b95bcfda1..ccee93c7037f4b958dd95972b7255464c9d74ba9 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwevn+wwivlna+&^<77QOtw6Q;8Goj)t|5Sh!+2SilZJ*9bEh>=2;FJ5Yxa V@+jCsC3cQQK#zW5=3<~N1OR2CJT(9S literal 384 zcmd-w<6snElw#w!+Qtl~uR-bSQ2H{Iz5=3^I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwf4?1AY+w-2j1K=+}#gA?qIhP97axMDe2zz%^q7-lfKL3f}IgBb*~80=7> W1z-=t0z!$MV-e7!UzoWVXbS;n0z5SU diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 4077bc2a8a085dec62130fae62b43e19fb04fca6..1d59a76d93d0a015d18f710fcf91dec3a8f5eebc 100644 GIT binary patch delta 545 zcmYk2yGjE=6o#Fd&Fsk-aCXgYqu^*zwi1cPOH>fF3YOV@0t*|TA>IgB1cd2qL{TiP zBo;P8@Cg)s0MRC`kjA@b*CcE=obUhtIp=?q2ZKtC0g)t26miKEDFK|+xxBBj5{EN< z#jaGF=nA#<1fA4LYO4`&q{uR5yKROB4i7aZMb~(~u50vGUz=8=!tzA>v9zumMT^5J zrgde_{pH4^ktKm{e1(WS+}%)2jVbQ7%rG^O(@tvhDA5?@TST`EOCOsly~?aLq2T3- z$po4P++=Tc)Z$K|8x^mputP{V}U!F7&r6Z^)GVtxm7>+aUe{Dh7EZ$ztz>g<6 z5*{IQNHXy2NfSXfk~ANJZC?TcC*oKL!HzHE2yzie34sH= vv.Score { + level = int(vv.Rank) + } else { + break + } + } + break + } + } + + return int64(level) +} + +func (cm *ConfigMgr) GetPermitConfig(plt, channel string) *webapi.PermitChannelConfig { + cfg := cm.GetConfig(plt).ActPermitConfig + if cfg == nil { + return nil + } + + for _, v := range cfg.Configs { + if v.Channel == channel { + return v + } + } + + return nil +} diff --git a/model/gamedata.go b/model/gamedata.go index 6e4ba72..020f8e7 100644 --- a/model/gamedata.go +++ b/model/gamedata.go @@ -184,3 +184,7 @@ func UptIntArrKVGameData(key string, arr []int64) error { } return nil } + +type PermitStartTs struct { + StartTs, EndTs int64 +} diff --git a/model/gameparam.go b/model/gameparam.go index 7af9c99..93aede1 100644 --- a/model/gameparam.go +++ b/model/gameparam.go @@ -80,6 +80,7 @@ type GameParam struct { BackendTimeLocal int //后台时区 GameStaticsFightVersion int // 对战场统计数据版本 TestRankMatchAward bool // 测试段位奖励领取通知,直接改玩家排位积分使玩家获得奖励 + RankPlayerPermitMaxNum int32 // 赛季通行证积分排行榜最大人数 } var GameParamPath = "../data/gameparam.json" @@ -204,4 +205,7 @@ func InitGameParam() { if GameParamData.BackendTimeLocal == 0 { GameParamData.BackendTimeLocal = 8 } + if GameParamData.RankPlayerPermitMaxNum == 0 { + GameParamData.RankPlayerPermitMaxNum = 100 + } } diff --git a/model/player.go b/model/player.go index 6ab9a1d..5cf3793 100644 --- a/model/player.go +++ b/model/player.go @@ -109,6 +109,9 @@ const ( SystemFreeGive_GiveType_TaskAchievement // 成就任务 SystemFreeGive_GiveType_TaskEveryDay // 每日任务 SystemFreeGive_GiveType_TaskWeekActive // 周活跃奖励 + SystemFreeGive_GiveType_PermitAward // 赛季通行证普通奖励 + SystemFreeGive_GiveType_PermitAwardSupper // 赛季通行证典藏奖励 + SystemFreeGive_GiveType_TaskPermit // 赛季通行证任务 ) const ( SystemFreeGive_CoinType_Coin int32 = iota //金币 @@ -468,6 +471,7 @@ type PlayerData struct { IMoney int64 // 邀请人充值金额 IScoreTs time.Time // 邀请积分更新时间 Permit time.Time // 赛季通行证领取时间 + PermitStartTs int64 // 赛季通行证开始时间戳 } // 七日签到数据 @@ -513,7 +517,8 @@ type WelfareData struct { PhoneLotteryTask map[int32]*TaskData // 抽手机任务 PigBank *PigBankData // 存钱罐 DiamondBank *DiamondBankData // 钻石储存罐 - + PermitAward map[int32]int64 // 赛季通行证奖励领取时间 + PermitExchange map[int32][]int64 // 赛季通行证兑换次数, 多次的兑换时间 } func NewWelfareData() *WelfareData { @@ -524,6 +529,8 @@ func NewWelfareData() *WelfareData { PhoneLotteryTask: make(map[int32]*TaskData), PigBank: &PigBankData{}, DiamondBank: &DiamondBankData{}, + PermitAward: make(map[int32]int64), + PermitExchange: make(map[int32][]int64), } } @@ -1082,6 +1089,7 @@ func GetPlayerDataBySnId(plt string, snid int32, correctData, createIfNotExist b ret.Pd.LastLoginTime = ret.Pd.LastLoginTime.Local() ret.Pd.LastLogoutTime = ret.Pd.LastLogoutTime.Local() ret.Pd.IScoreTs = ret.Pd.IScoreTs.Local() + ret.Pd.Permit = ret.Pd.Permit.Local() return ret.Pd, ret.IsNew } diff --git a/model/rank.go b/model/rank.go index 95213d0..f568778 100644 --- a/model/rank.go +++ b/model/rank.go @@ -11,6 +11,7 @@ const ( MQRankPlayerCoin = "log_rankplayercoin" MQRankPlayerInvite = "log_rankplayerinvite" MQRankPlayerLevel = "log_rankplayerlevel" + MQRankPlayerPermit = "log_rankplayerpermit" // 赛季通行证排行榜 ) type PlayerRankScore struct { @@ -275,3 +276,36 @@ func FindPlayerLevelList(args *FindPlayerLevelListArgs) (*FindPlayerLevelListRep } return ret, nil } + +// PermitScore 赛季通行证排行榜 +type PermitScore struct { + Platform string `bson:"-"` + SnId int32 + Name string + Exp int64 + ModId int32 //头像 + StartTs int64 // 赛季开始时间戳 +} + +type FindPlayerPermitListArgs struct { + Platform string + StartTs int64 +} +type FindPlayerPermitListReply struct { + List []*PermitScore +} + +func FindPlayerPermitList(args *FindPlayerPermitListArgs) (*FindPlayerPermitListReply, error) { + if rpcCli == nil { + logger.Logger.Error("model.FindPlayerLevelList rpcCli == nil") + return nil, nil + } + + ret := new(FindPlayerPermitListReply) + err := rpcCli.CallWithTimeout("RankPlayerPermitSvc.Find", args, ret, time.Second*30) + if err != nil { + logger.Logger.Error("GetPlayerLevelList error:", err) + return ret, err + } + return ret, nil +} diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index c497de5..5e59ca3 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -7543,6 +7543,124 @@ func (x *DB_NewPlayerArray) GetArr() []*DB_NewPlayer { return nil } +type DB_PassShow struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + ShowType int32 `protobuf:"varint,2,opt,name=ShowType,proto3" json:"ShowType,omitempty"` + ShowVolume int32 `protobuf:"varint,3,opt,name=ShowVolume,proto3" json:"ShowVolume,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=Location,proto3" json:"Location,omitempty"` +} + +func (x *DB_PassShow) Reset() { + *x = DB_PassShow{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_PassShow) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_PassShow) ProtoMessage() {} + +func (x *DB_PassShow) 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_PassShow.ProtoReflect.Descriptor instead. +func (*DB_PassShow) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{96} +} + +func (x *DB_PassShow) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_PassShow) GetShowType() int32 { + if x != nil { + return x.ShowType + } + return 0 +} + +func (x *DB_PassShow) GetShowVolume() int32 { + if x != nil { + return x.ShowVolume + } + return 0 +} + +func (x *DB_PassShow) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type DB_PassShowArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_PassShow `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_PassShowArray) Reset() { + *x = DB_PassShowArray{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_PassShowArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_PassShowArray) ProtoMessage() {} + +func (x *DB_PassShowArray) 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_PassShowArray.ProtoReflect.Descriptor instead. +func (*DB_PassShowArray) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{97} +} + +func (x *DB_PassShowArray) GetArr() []*DB_PassShow { + if x != nil { + return x.Arr + } + return nil +} + type DB_PetSkill struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7561,7 +7679,7 @@ type DB_PetSkill struct { func (x *DB_PetSkill) Reset() { *x = DB_PetSkill{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[96] + mi := &file_pbdata_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7574,7 +7692,7 @@ func (x *DB_PetSkill) String() string { func (*DB_PetSkill) ProtoMessage() {} func (x *DB_PetSkill) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[96] + mi := &file_pbdata_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7587,7 +7705,7 @@ func (x *DB_PetSkill) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PetSkill.ProtoReflect.Descriptor instead. func (*DB_PetSkill) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{96} + return file_pbdata_proto_rawDescGZIP(), []int{98} } func (x *DB_PetSkill) GetId() int32 { @@ -7657,7 +7775,7 @@ type DB_PetSkillArray struct { func (x *DB_PetSkillArray) Reset() { *x = DB_PetSkillArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[97] + mi := &file_pbdata_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7670,7 +7788,7 @@ func (x *DB_PetSkillArray) String() string { func (*DB_PetSkillArray) ProtoMessage() {} func (x *DB_PetSkillArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[97] + mi := &file_pbdata_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7683,7 +7801,7 @@ func (x *DB_PetSkillArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PetSkillArray.ProtoReflect.Descriptor instead. func (*DB_PetSkillArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{97} + return file_pbdata_proto_rawDescGZIP(), []int{99} } func (x *DB_PetSkillArray) GetArr() []*DB_PetSkill { @@ -7715,7 +7833,7 @@ type DB_PhoneLottery struct { func (x *DB_PhoneLottery) Reset() { *x = DB_PhoneLottery{} 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) } @@ -7728,7 +7846,7 @@ func (x *DB_PhoneLottery) String() string { func (*DB_PhoneLottery) ProtoMessage() {} func (x *DB_PhoneLottery) 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 { @@ -7741,7 +7859,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{98} + return file_pbdata_proto_rawDescGZIP(), []int{100} } func (x *DB_PhoneLottery) GetId() int32 { @@ -7839,7 +7957,7 @@ type DB_PhoneLotteryArray struct { func (x *DB_PhoneLotteryArray) Reset() { *x = DB_PhoneLotteryArray{} 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) } @@ -7852,7 +7970,7 @@ func (x *DB_PhoneLotteryArray) String() string { func (*DB_PhoneLotteryArray) ProtoMessage() {} func (x *DB_PhoneLotteryArray) 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 { @@ -7865,7 +7983,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{99} + return file_pbdata_proto_rawDescGZIP(), []int{101} } func (x *DB_PhoneLotteryArray) GetArr() []*DB_PhoneLottery { @@ -7895,7 +8013,7 @@ type DB_PigBank_Diamond struct { func (x *DB_PigBank_Diamond) Reset() { *x = DB_PigBank_Diamond{} 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) } @@ -7908,7 +8026,7 @@ func (x *DB_PigBank_Diamond) String() string { func (*DB_PigBank_Diamond) ProtoMessage() {} func (x *DB_PigBank_Diamond) 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 { @@ -7921,7 +8039,7 @@ func (x *DB_PigBank_Diamond) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PigBank_Diamond.ProtoReflect.Descriptor instead. func (*DB_PigBank_Diamond) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{100} + return file_pbdata_proto_rawDescGZIP(), []int{102} } func (x *DB_PigBank_Diamond) GetId() int32 { @@ -8005,7 +8123,7 @@ type DB_PigBank_DiamondArray struct { func (x *DB_PigBank_DiamondArray) Reset() { *x = DB_PigBank_DiamondArray{} 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) } @@ -8018,7 +8136,7 @@ func (x *DB_PigBank_DiamondArray) String() string { func (*DB_PigBank_DiamondArray) ProtoMessage() {} func (x *DB_PigBank_DiamondArray) 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 { @@ -8031,7 +8149,7 @@ func (x *DB_PigBank_DiamondArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PigBank_DiamondArray.ProtoReflect.Descriptor instead. func (*DB_PigBank_DiamondArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{101} + return file_pbdata_proto_rawDescGZIP(), []int{103} } func (x *DB_PigBank_DiamondArray) GetArr() []*DB_PigBank_Diamond { @@ -8054,7 +8172,7 @@ type DB_Pigbank_Prop struct { func (x *DB_Pigbank_Prop) Reset() { *x = DB_Pigbank_Prop{} 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) } @@ -8067,7 +8185,7 @@ func (x *DB_Pigbank_Prop) String() string { func (*DB_Pigbank_Prop) ProtoMessage() {} func (x *DB_Pigbank_Prop) 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 { @@ -8080,7 +8198,7 @@ func (x *DB_Pigbank_Prop) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Pigbank_Prop.ProtoReflect.Descriptor instead. func (*DB_Pigbank_Prop) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{102} + return file_pbdata_proto_rawDescGZIP(), []int{104} } func (x *DB_Pigbank_Prop) GetId() int32 { @@ -8115,7 +8233,7 @@ type DB_Pigbank_PropArray struct { func (x *DB_Pigbank_PropArray) Reset() { *x = DB_Pigbank_PropArray{} 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) } @@ -8128,7 +8246,7 @@ func (x *DB_Pigbank_PropArray) String() string { func (*DB_Pigbank_PropArray) ProtoMessage() {} func (x *DB_Pigbank_PropArray) 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 { @@ -8141,7 +8259,7 @@ func (x *DB_Pigbank_PropArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Pigbank_PropArray.ProtoReflect.Descriptor instead. func (*DB_Pigbank_PropArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{103} + return file_pbdata_proto_rawDescGZIP(), []int{105} } func (x *DB_Pigbank_PropArray) GetArr() []*DB_Pigbank_Prop { @@ -8163,7 +8281,7 @@ type DB_PlayerExp struct { func (x *DB_PlayerExp) Reset() { *x = DB_PlayerExp{} 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) } @@ -8176,7 +8294,7 @@ func (x *DB_PlayerExp) String() string { func (*DB_PlayerExp) ProtoMessage() {} func (x *DB_PlayerExp) 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 { @@ -8189,7 +8307,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{104} + return file_pbdata_proto_rawDescGZIP(), []int{106} } func (x *DB_PlayerExp) GetId() int32 { @@ -8217,7 +8335,7 @@ type DB_PlayerExpArray struct { func (x *DB_PlayerExpArray) Reset() { *x = DB_PlayerExpArray{} 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) } @@ -8230,7 +8348,7 @@ func (x *DB_PlayerExpArray) String() string { func (*DB_PlayerExpArray) ProtoMessage() {} func (x *DB_PlayerExpArray) 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 { @@ -8243,7 +8361,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{105} + return file_pbdata_proto_rawDescGZIP(), []int{107} } func (x *DB_PlayerExpArray) GetArr() []*DB_PlayerExp { @@ -8268,7 +8386,7 @@ type DB_PlayerInfo struct { func (x *DB_PlayerInfo) Reset() { *x = DB_PlayerInfo{} 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) } @@ -8281,7 +8399,7 @@ func (x *DB_PlayerInfo) String() string { func (*DB_PlayerInfo) ProtoMessage() {} func (x *DB_PlayerInfo) 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 { @@ -8294,7 +8412,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{106} + return file_pbdata_proto_rawDescGZIP(), []int{108} } func (x *DB_PlayerInfo) GetCity() string { @@ -8343,7 +8461,7 @@ type DB_PlayerInfoArray struct { func (x *DB_PlayerInfoArray) Reset() { *x = DB_PlayerInfoArray{} 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) } @@ -8356,7 +8474,7 @@ func (x *DB_PlayerInfoArray) String() string { func (*DB_PlayerInfoArray) ProtoMessage() {} func (x *DB_PlayerInfoArray) 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 { @@ -8369,7 +8487,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{107} + return file_pbdata_proto_rawDescGZIP(), []int{109} } func (x *DB_PlayerInfoArray) GetArr() []*DB_PlayerInfo { @@ -8407,7 +8525,7 @@ type DB_PlayerType struct { func (x *DB_PlayerType) Reset() { *x = DB_PlayerType{} 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) } @@ -8420,7 +8538,7 @@ func (x *DB_PlayerType) String() string { func (*DB_PlayerType) ProtoMessage() {} func (x *DB_PlayerType) 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 { @@ -8433,7 +8551,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{108} + return file_pbdata_proto_rawDescGZIP(), []int{110} } func (x *DB_PlayerType) GetId() int32 { @@ -8573,7 +8691,7 @@ type DB_PlayerTypeArray struct { func (x *DB_PlayerTypeArray) Reset() { *x = DB_PlayerTypeArray{} 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) } @@ -8586,7 +8704,7 @@ func (x *DB_PlayerTypeArray) String() string { func (*DB_PlayerTypeArray) ProtoMessage() {} func (x *DB_PlayerTypeArray) 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 { @@ -8599,7 +8717,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{109} + return file_pbdata_proto_rawDescGZIP(), []int{111} } func (x *DB_PlayerTypeArray) GetArr() []*DB_PlayerType { @@ -8623,7 +8741,7 @@ type DB_PotOdd struct { func (x *DB_PotOdd) Reset() { *x = DB_PotOdd{} 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) } @@ -8636,7 +8754,7 @@ func (x *DB_PotOdd) String() string { func (*DB_PotOdd) ProtoMessage() {} func (x *DB_PotOdd) 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 { @@ -8649,7 +8767,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{110} + return file_pbdata_proto_rawDescGZIP(), []int{112} } func (x *DB_PotOdd) GetId() int32 { @@ -8691,7 +8809,7 @@ type DB_PotOddArray struct { func (x *DB_PotOddArray) Reset() { *x = DB_PotOddArray{} 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) } @@ -8704,7 +8822,7 @@ func (x *DB_PotOddArray) String() string { func (*DB_PotOddArray) ProtoMessage() {} func (x *DB_PotOddArray) 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 { @@ -8717,7 +8835,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{111} + return file_pbdata_proto_rawDescGZIP(), []int{113} } func (x *DB_PotOddArray) GetArr() []*DB_PotOdd { @@ -8741,7 +8859,7 @@ type DB_PropExchange struct { func (x *DB_PropExchange) Reset() { *x = DB_PropExchange{} 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) } @@ -8754,7 +8872,7 @@ func (x *DB_PropExchange) String() string { func (*DB_PropExchange) ProtoMessage() {} func (x *DB_PropExchange) 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 { @@ -8767,7 +8885,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{112} + return file_pbdata_proto_rawDescGZIP(), []int{114} } func (x *DB_PropExchange) GetId() int32 { @@ -8809,7 +8927,7 @@ type DB_PropExchangeArray struct { func (x *DB_PropExchangeArray) Reset() { *x = DB_PropExchangeArray{} 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) } @@ -8822,7 +8940,7 @@ func (x *DB_PropExchangeArray) String() string { func (*DB_PropExchangeArray) ProtoMessage() {} func (x *DB_PropExchangeArray) 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 { @@ -8835,7 +8953,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{113} + return file_pbdata_proto_rawDescGZIP(), []int{115} } func (x *DB_PropExchangeArray) GetArr() []*DB_PropExchange { @@ -8858,7 +8976,7 @@ type DB_RankCycle struct { func (x *DB_RankCycle) Reset() { *x = DB_RankCycle{} 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) } @@ -8871,7 +8989,7 @@ func (x *DB_RankCycle) String() string { func (*DB_RankCycle) ProtoMessage() {} func (x *DB_RankCycle) 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 { @@ -8884,7 +9002,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{114} + return file_pbdata_proto_rawDescGZIP(), []int{116} } func (x *DB_RankCycle) GetId() int32 { @@ -8919,7 +9037,7 @@ type DB_RankCycleArray struct { func (x *DB_RankCycleArray) Reset() { *x = DB_RankCycleArray{} 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) } @@ -8932,7 +9050,7 @@ func (x *DB_RankCycleArray) String() string { func (*DB_RankCycleArray) ProtoMessage() {} func (x *DB_RankCycleArray) 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 { @@ -8945,7 +9063,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{115} + return file_pbdata_proto_rawDescGZIP(), []int{117} } func (x *DB_RankCycleArray) GetArr() []*DB_RankCycle { @@ -8970,7 +9088,7 @@ type DB_RankLevel struct { func (x *DB_RankLevel) Reset() { *x = DB_RankLevel{} 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) } @@ -8983,7 +9101,7 @@ func (x *DB_RankLevel) String() string { func (*DB_RankLevel) ProtoMessage() {} func (x *DB_RankLevel) 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 { @@ -8996,7 +9114,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{116} + return file_pbdata_proto_rawDescGZIP(), []int{118} } func (x *DB_RankLevel) GetId() int32 { @@ -9045,7 +9163,7 @@ type DB_RankLevelArray struct { func (x *DB_RankLevelArray) Reset() { *x = DB_RankLevelArray{} 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) } @@ -9058,7 +9176,7 @@ func (x *DB_RankLevelArray) String() string { func (*DB_RankLevelArray) ProtoMessage() {} func (x *DB_RankLevelArray) 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 { @@ -9071,7 +9189,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{117} + return file_pbdata_proto_rawDescGZIP(), []int{119} } func (x *DB_RankLevelArray) GetArr() []*DB_RankLevel { @@ -9100,7 +9218,7 @@ type DB_RankReward struct { func (x *DB_RankReward) Reset() { *x = DB_RankReward{} 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) } @@ -9113,7 +9231,7 @@ func (x *DB_RankReward) String() string { func (*DB_RankReward) ProtoMessage() {} func (x *DB_RankReward) 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 { @@ -9126,7 +9244,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{118} + return file_pbdata_proto_rawDescGZIP(), []int{120} } func (x *DB_RankReward) GetId() int32 { @@ -9203,7 +9321,7 @@ type DB_RankRewardArray struct { func (x *DB_RankRewardArray) Reset() { *x = DB_RankRewardArray{} 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) } @@ -9216,7 +9334,7 @@ func (x *DB_RankRewardArray) String() string { func (*DB_RankRewardArray) ProtoMessage() {} func (x *DB_RankRewardArray) 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 { @@ -9229,7 +9347,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{119} + return file_pbdata_proto_rawDescGZIP(), []int{121} } func (x *DB_RankRewardArray) GetArr() []*DB_RankReward { @@ -9251,7 +9369,7 @@ type DB_Sensitive_Words struct { func (x *DB_Sensitive_Words) Reset() { *x = DB_Sensitive_Words{} 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) } @@ -9264,7 +9382,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[120] + mi := &file_pbdata_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9277,7 +9395,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{120} + return file_pbdata_proto_rawDescGZIP(), []int{122} } func (x *DB_Sensitive_Words) GetId() int32 { @@ -9305,7 +9423,7 @@ type DB_Sensitive_WordsArray struct { func (x *DB_Sensitive_WordsArray) Reset() { *x = DB_Sensitive_WordsArray{} 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) } @@ -9318,7 +9436,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[121] + mi := &file_pbdata_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9331,7 +9449,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{121} + return file_pbdata_proto_rawDescGZIP(), []int{123} } func (x *DB_Sensitive_WordsArray) GetArr() []*DB_Sensitive_Words { @@ -9367,7 +9485,7 @@ type DB_SlotRateWeight struct { func (x *DB_SlotRateWeight) Reset() { *x = DB_SlotRateWeight{} 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) } @@ -9380,7 +9498,7 @@ func (x *DB_SlotRateWeight) String() string { func (*DB_SlotRateWeight) ProtoMessage() {} func (x *DB_SlotRateWeight) 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 { @@ -9393,7 +9511,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{122} + return file_pbdata_proto_rawDescGZIP(), []int{124} } func (x *DB_SlotRateWeight) GetId() int32 { @@ -9519,7 +9637,7 @@ type DB_SlotRateWeightArray struct { func (x *DB_SlotRateWeightArray) Reset() { *x = DB_SlotRateWeightArray{} 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) } @@ -9532,7 +9650,7 @@ func (x *DB_SlotRateWeightArray) String() string { func (*DB_SlotRateWeightArray) ProtoMessage() {} func (x *DB_SlotRateWeightArray) 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 { @@ -9545,7 +9663,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{123} + return file_pbdata_proto_rawDescGZIP(), []int{125} } func (x *DB_SlotRateWeightArray) GetArr() []*DB_SlotRateWeight { @@ -9570,7 +9688,7 @@ type DB_SystemChance struct { func (x *DB_SystemChance) Reset() { *x = DB_SystemChance{} 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) } @@ -9583,7 +9701,7 @@ func (x *DB_SystemChance) String() string { func (*DB_SystemChance) ProtoMessage() {} func (x *DB_SystemChance) 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 { @@ -9596,7 +9714,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{124} + return file_pbdata_proto_rawDescGZIP(), []int{126} } func (x *DB_SystemChance) GetId() int32 { @@ -9645,7 +9763,7 @@ type DB_SystemChanceArray struct { func (x *DB_SystemChanceArray) Reset() { *x = DB_SystemChanceArray{} 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) } @@ -9658,7 +9776,7 @@ func (x *DB_SystemChanceArray) String() string { func (*DB_SystemChanceArray) ProtoMessage() {} func (x *DB_SystemChanceArray) 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 { @@ -9671,7 +9789,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{125} + return file_pbdata_proto_rawDescGZIP(), []int{127} } func (x *DB_SystemChanceArray) GetArr() []*DB_SystemChance { @@ -9700,7 +9818,7 @@ type DB_Task struct { func (x *DB_Task) Reset() { *x = DB_Task{} 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) } @@ -9713,7 +9831,7 @@ func (x *DB_Task) String() string { func (*DB_Task) ProtoMessage() {} func (x *DB_Task) 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 { @@ -9726,7 +9844,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{126} + return file_pbdata_proto_rawDescGZIP(), []int{128} } func (x *DB_Task) GetId() int32 { @@ -9803,7 +9921,7 @@ type DB_TaskArray struct { func (x *DB_TaskArray) Reset() { *x = DB_TaskArray{} 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) } @@ -9816,7 +9934,7 @@ func (x *DB_TaskArray) String() string { func (*DB_TaskArray) ProtoMessage() {} func (x *DB_TaskArray) 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 { @@ -9829,7 +9947,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{127} + return file_pbdata_proto_rawDescGZIP(), []int{129} } func (x *DB_TaskArray) GetArr() []*DB_Task { @@ -9856,7 +9974,7 @@ type DB_ThirdPlatformGameMapping struct { func (x *DB_ThirdPlatformGameMapping) Reset() { *x = DB_ThirdPlatformGameMapping{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[128] + mi := &file_pbdata_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9869,7 +9987,7 @@ func (x *DB_ThirdPlatformGameMapping) String() string { func (*DB_ThirdPlatformGameMapping) ProtoMessage() {} func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[128] + mi := &file_pbdata_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9882,7 +10000,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{128} + return file_pbdata_proto_rawDescGZIP(), []int{130} } func (x *DB_ThirdPlatformGameMapping) GetId() int32 { @@ -9945,7 +10063,7 @@ type DB_ThirdPlatformGameMappingArray struct { func (x *DB_ThirdPlatformGameMappingArray) Reset() { *x = DB_ThirdPlatformGameMappingArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[129] + mi := &file_pbdata_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9958,7 +10076,7 @@ func (x *DB_ThirdPlatformGameMappingArray) String() string { func (*DB_ThirdPlatformGameMappingArray) ProtoMessage() {} func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[129] + mi := &file_pbdata_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9971,7 +10089,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{129} + return file_pbdata_proto_rawDescGZIP(), []int{131} } func (x *DB_ThirdPlatformGameMappingArray) GetArr() []*DB_ThirdPlatformGameMapping { @@ -9994,7 +10112,7 @@ type DB_Tips struct { func (x *DB_Tips) Reset() { *x = DB_Tips{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[130] + mi := &file_pbdata_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10007,7 +10125,7 @@ func (x *DB_Tips) String() string { func (*DB_Tips) ProtoMessage() {} func (x *DB_Tips) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[130] + mi := &file_pbdata_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10020,7 +10138,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{130} + return file_pbdata_proto_rawDescGZIP(), []int{132} } func (x *DB_Tips) GetId() int32 { @@ -10055,7 +10173,7 @@ type DB_TipsArray struct { func (x *DB_TipsArray) Reset() { *x = DB_TipsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[131] + mi := &file_pbdata_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10068,7 +10186,7 @@ func (x *DB_TipsArray) String() string { func (*DB_TipsArray) ProtoMessage() {} func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[131] + mi := &file_pbdata_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10081,7 +10199,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{131} + return file_pbdata_proto_rawDescGZIP(), []int{133} } func (x *DB_TipsArray) GetArr() []*DB_Tips { @@ -10120,7 +10238,7 @@ type DB_VIP struct { func (x *DB_VIP) Reset() { *x = DB_VIP{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[132] + mi := &file_pbdata_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10133,7 +10251,7 @@ func (x *DB_VIP) String() string { func (*DB_VIP) ProtoMessage() {} func (x *DB_VIP) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[132] + mi := &file_pbdata_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10146,7 +10264,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{132} + return file_pbdata_proto_rawDescGZIP(), []int{134} } func (x *DB_VIP) GetId() int32 { @@ -10293,7 +10411,7 @@ type DB_VIPArray struct { func (x *DB_VIPArray) Reset() { *x = DB_VIPArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[133] + mi := &file_pbdata_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10306,7 +10424,7 @@ func (x *DB_VIPArray) String() string { func (*DB_VIPArray) ProtoMessage() {} func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[133] + mi := &file_pbdata_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10319,7 +10437,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{133} + return file_pbdata_proto_rawDescGZIP(), []int{135} } func (x *DB_VIPArray) GetArr() []*DB_VIP { @@ -11311,386 +11429,397 @@ var file_pbdata_proto_rawDesc = []byte{ 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, 0xcb, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, - 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x49, 0x74, 0x65, 0x6d, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 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, 0x50, 0x65, 0x74, 0x53, - 0x6b, 0x69, 0x6c, 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, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 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, 0xce, 0x02, 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, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x44, - 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, - 0x28, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 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, 0x5b, 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, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 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, 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, + 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, 0x61, + 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, + 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 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, 0x50, 0x61, 0x73, 0x73, + 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xcb, 0x02, 0x0a, 0x0b, 0x44, 0x42, + 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, + 0x44, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, + 0x44, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x49, 0x74, + 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x74, 0x65, 0x6d, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 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, 0x50, 0x65, + 0x74, 0x53, 0x6b, 0x69, 0x6c, 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, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 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, 0xce, 0x02, 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, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, + 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 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, 0x5b, 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, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, + 0x65, 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, 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, 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, + 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, 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, + 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, 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, 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, - 0xea, 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, 0x26, 0x0a, 0x0e, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x73, 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, + 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, 0xea, 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, 0x26, 0x0a, + 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x73, 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 ( @@ -11705,7 +11834,7 @@ func file_pbdata_proto_rawDescGZIP() []byte { return file_pbdata_proto_rawDescData } -var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 144) +var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 146) var file_pbdata_proto_goTypes = []interface{}{ (*DB_ActSign)(nil), // 0: server.DB_ActSign (*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray @@ -11803,54 +11932,56 @@ var file_pbdata_proto_goTypes = []interface{}{ (*DB_NameGirlArray)(nil), // 93: server.DB_NameGirlArray (*DB_NewPlayer)(nil), // 94: server.DB_NewPlayer (*DB_NewPlayerArray)(nil), // 95: server.DB_NewPlayerArray - (*DB_PetSkill)(nil), // 96: server.DB_PetSkill - (*DB_PetSkillArray)(nil), // 97: server.DB_PetSkillArray - (*DB_PhoneLottery)(nil), // 98: server.DB_PhoneLottery - (*DB_PhoneLotteryArray)(nil), // 99: server.DB_PhoneLotteryArray - (*DB_PigBank_Diamond)(nil), // 100: server.DB_PigBank_Diamond - (*DB_PigBank_DiamondArray)(nil), // 101: server.DB_PigBank_DiamondArray - (*DB_Pigbank_Prop)(nil), // 102: server.DB_Pigbank_Prop - (*DB_Pigbank_PropArray)(nil), // 103: server.DB_Pigbank_PropArray - (*DB_PlayerExp)(nil), // 104: server.DB_PlayerExp - (*DB_PlayerExpArray)(nil), // 105: server.DB_PlayerExpArray - (*DB_PlayerInfo)(nil), // 106: server.DB_PlayerInfo - (*DB_PlayerInfoArray)(nil), // 107: server.DB_PlayerInfoArray - (*DB_PlayerType)(nil), // 108: server.DB_PlayerType - (*DB_PlayerTypeArray)(nil), // 109: server.DB_PlayerTypeArray - (*DB_PotOdd)(nil), // 110: server.DB_PotOdd - (*DB_PotOddArray)(nil), // 111: server.DB_PotOddArray - (*DB_PropExchange)(nil), // 112: server.DB_PropExchange - (*DB_PropExchangeArray)(nil), // 113: server.DB_PropExchangeArray - (*DB_RankCycle)(nil), // 114: server.DB_RankCycle - (*DB_RankCycleArray)(nil), // 115: server.DB_RankCycleArray - (*DB_RankLevel)(nil), // 116: server.DB_RankLevel - (*DB_RankLevelArray)(nil), // 117: server.DB_RankLevelArray - (*DB_RankReward)(nil), // 118: server.DB_RankReward - (*DB_RankRewardArray)(nil), // 119: server.DB_RankRewardArray - (*DB_Sensitive_Words)(nil), // 120: server.DB_Sensitive_Words - (*DB_Sensitive_WordsArray)(nil), // 121: server.DB_Sensitive_WordsArray - (*DB_SlotRateWeight)(nil), // 122: server.DB_SlotRateWeight - (*DB_SlotRateWeightArray)(nil), // 123: server.DB_SlotRateWeightArray - (*DB_SystemChance)(nil), // 124: server.DB_SystemChance - (*DB_SystemChanceArray)(nil), // 125: server.DB_SystemChanceArray - (*DB_Task)(nil), // 126: server.DB_Task - (*DB_TaskArray)(nil), // 127: server.DB_TaskArray - (*DB_ThirdPlatformGameMapping)(nil), // 128: server.DB_ThirdPlatformGameMapping - (*DB_ThirdPlatformGameMappingArray)(nil), // 129: server.DB_ThirdPlatformGameMappingArray - (*DB_Tips)(nil), // 130: server.DB_Tips - (*DB_TipsArray)(nil), // 131: server.DB_TipsArray - (*DB_VIP)(nil), // 132: server.DB_VIP - (*DB_VIPArray)(nil), // 133: server.DB_VIPArray - nil, // 134: server.DB_CollectBox.ItemIDEntry - nil, // 135: server.DB_GiftBox.ItemIDEntry - nil, // 136: server.DB_GiftCard.RewardsEntry - nil, // 137: server.DB_GiftCard.DayRewardsEntry - nil, // 138: server.DB_PetSkill.ItemConsumEntry - nil, // 139: server.DB_PropExchange.CostEntry - nil, // 140: server.DB_PropExchange.GainEntry - nil, // 141: server.DB_Task.AwardEntry - nil, // 142: server.DB_VIP.Privilege7Entry - nil, // 143: server.DB_VIP.AwardEntry + (*DB_PassShow)(nil), // 96: server.DB_PassShow + (*DB_PassShowArray)(nil), // 97: server.DB_PassShowArray + (*DB_PetSkill)(nil), // 98: server.DB_PetSkill + (*DB_PetSkillArray)(nil), // 99: server.DB_PetSkillArray + (*DB_PhoneLottery)(nil), // 100: server.DB_PhoneLottery + (*DB_PhoneLotteryArray)(nil), // 101: server.DB_PhoneLotteryArray + (*DB_PigBank_Diamond)(nil), // 102: server.DB_PigBank_Diamond + (*DB_PigBank_DiamondArray)(nil), // 103: server.DB_PigBank_DiamondArray + (*DB_Pigbank_Prop)(nil), // 104: server.DB_Pigbank_Prop + (*DB_Pigbank_PropArray)(nil), // 105: server.DB_Pigbank_PropArray + (*DB_PlayerExp)(nil), // 106: server.DB_PlayerExp + (*DB_PlayerExpArray)(nil), // 107: server.DB_PlayerExpArray + (*DB_PlayerInfo)(nil), // 108: server.DB_PlayerInfo + (*DB_PlayerInfoArray)(nil), // 109: server.DB_PlayerInfoArray + (*DB_PlayerType)(nil), // 110: server.DB_PlayerType + (*DB_PlayerTypeArray)(nil), // 111: server.DB_PlayerTypeArray + (*DB_PotOdd)(nil), // 112: server.DB_PotOdd + (*DB_PotOddArray)(nil), // 113: server.DB_PotOddArray + (*DB_PropExchange)(nil), // 114: server.DB_PropExchange + (*DB_PropExchangeArray)(nil), // 115: server.DB_PropExchangeArray + (*DB_RankCycle)(nil), // 116: server.DB_RankCycle + (*DB_RankCycleArray)(nil), // 117: server.DB_RankCycleArray + (*DB_RankLevel)(nil), // 118: server.DB_RankLevel + (*DB_RankLevelArray)(nil), // 119: server.DB_RankLevelArray + (*DB_RankReward)(nil), // 120: server.DB_RankReward + (*DB_RankRewardArray)(nil), // 121: server.DB_RankRewardArray + (*DB_Sensitive_Words)(nil), // 122: server.DB_Sensitive_Words + (*DB_Sensitive_WordsArray)(nil), // 123: server.DB_Sensitive_WordsArray + (*DB_SlotRateWeight)(nil), // 124: server.DB_SlotRateWeight + (*DB_SlotRateWeightArray)(nil), // 125: server.DB_SlotRateWeightArray + (*DB_SystemChance)(nil), // 126: server.DB_SystemChance + (*DB_SystemChanceArray)(nil), // 127: server.DB_SystemChanceArray + (*DB_Task)(nil), // 128: server.DB_Task + (*DB_TaskArray)(nil), // 129: server.DB_TaskArray + (*DB_ThirdPlatformGameMapping)(nil), // 130: server.DB_ThirdPlatformGameMapping + (*DB_ThirdPlatformGameMappingArray)(nil), // 131: server.DB_ThirdPlatformGameMappingArray + (*DB_Tips)(nil), // 132: server.DB_Tips + (*DB_TipsArray)(nil), // 133: server.DB_TipsArray + (*DB_VIP)(nil), // 134: server.DB_VIP + (*DB_VIPArray)(nil), // 135: server.DB_VIPArray + nil, // 136: server.DB_CollectBox.ItemIDEntry + nil, // 137: server.DB_GiftBox.ItemIDEntry + nil, // 138: server.DB_GiftCard.RewardsEntry + nil, // 139: server.DB_GiftCard.DayRewardsEntry + nil, // 140: server.DB_PetSkill.ItemConsumEntry + nil, // 141: server.DB_PropExchange.CostEntry + nil, // 142: server.DB_PropExchange.GainEntry + nil, // 143: server.DB_Task.AwardEntry + nil, // 144: server.DB_VIP.Privilege7Entry + nil, // 145: server.DB_VIP.AwardEntry } var file_pbdata_proto_depIdxs = []int32{ 0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign @@ -11865,7 +11996,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 - 134, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry + 136, // 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 @@ -11890,10 +12021,10 @@ 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 - 135, // 37: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry + 137, // 37: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry 72, // 38: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox - 136, // 39: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry - 137, // 40: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry + 138, // 39: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry + 139, // 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 @@ -11905,36 +12036,37 @@ var file_pbdata_proto_depIdxs = []int32{ 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 - 138, // 52: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry - 96, // 53: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill - 98, // 54: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery - 100, // 55: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond - 102, // 56: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop - 104, // 57: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp - 106, // 58: server.DB_PlayerInfoArray.Arr:type_name -> server.DB_PlayerInfo - 108, // 59: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType - 110, // 60: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd - 139, // 61: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry - 140, // 62: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry - 112, // 63: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange - 114, // 64: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 116, // 65: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 118, // 66: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 120, // 67: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 122, // 68: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 124, // 69: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 141, // 70: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 126, // 71: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 128, // 72: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 130, // 73: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 142, // 74: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 143, // 75: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 132, // 76: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 77, // [77:77] is the sub-list for method output_type - 77, // [77:77] is the sub-list for method input_type - 77, // [77:77] is the sub-list for extension type_name - 77, // [77:77] is the sub-list for extension extendee - 0, // [0:77] is the sub-list for field type_name + 96, // 52: server.DB_PassShowArray.Arr:type_name -> server.DB_PassShow + 140, // 53: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry + 98, // 54: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill + 100, // 55: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery + 102, // 56: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond + 104, // 57: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop + 106, // 58: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp + 108, // 59: server.DB_PlayerInfoArray.Arr:type_name -> server.DB_PlayerInfo + 110, // 60: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType + 112, // 61: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd + 141, // 62: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry + 142, // 63: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry + 114, // 64: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 116, // 65: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 118, // 66: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 120, // 67: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 122, // 68: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 124, // 69: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 126, // 70: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 143, // 71: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 128, // 72: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 130, // 73: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 132, // 74: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 144, // 75: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 145, // 76: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 134, // 77: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 78, // [78:78] is the sub-list for method output_type + 78, // [78:78] is the sub-list for method input_type + 78, // [78:78] is the sub-list for extension type_name + 78, // [78:78] is the sub-list for extension extendee + 0, // [0:78] is the sub-list for field type_name } func init() { file_pbdata_proto_init() } @@ -13096,7 +13228,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PetSkill); i { + switch v := v.(*DB_PassShow); i { case 0: return &v.state case 1: @@ -13108,7 +13240,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PetSkillArray); i { + switch v := v.(*DB_PassShowArray); i { case 0: return &v.state case 1: @@ -13120,7 +13252,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PhoneLottery); i { + switch v := v.(*DB_PetSkill); i { case 0: return &v.state case 1: @@ -13132,7 +13264,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PhoneLotteryArray); i { + switch v := v.(*DB_PetSkillArray); i { case 0: return &v.state case 1: @@ -13144,7 +13276,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PigBank_Diamond); i { + switch v := v.(*DB_PhoneLottery); i { case 0: return &v.state case 1: @@ -13156,7 +13288,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PigBank_DiamondArray); i { + switch v := v.(*DB_PhoneLotteryArray); i { case 0: return &v.state case 1: @@ -13168,7 +13300,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Pigbank_Prop); i { + switch v := v.(*DB_PigBank_Diamond); i { case 0: return &v.state case 1: @@ -13180,7 +13312,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Pigbank_PropArray); i { + switch v := v.(*DB_PigBank_DiamondArray); i { case 0: return &v.state case 1: @@ -13192,7 +13324,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[104].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: @@ -13204,7 +13336,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[105].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: @@ -13216,7 +13348,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[106].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: @@ -13228,7 +13360,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[107].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: @@ -13240,7 +13372,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[108].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: @@ -13252,7 +13384,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[109].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: @@ -13264,7 +13396,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[110].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: @@ -13276,7 +13408,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[111].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: @@ -13288,7 +13420,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[112].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: @@ -13300,7 +13432,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[113].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: @@ -13312,7 +13444,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[114].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: @@ -13324,7 +13456,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[115].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: @@ -13336,7 +13468,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[116].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: @@ -13348,7 +13480,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[117].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: @@ -13360,7 +13492,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[118].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: @@ -13372,7 +13504,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[119].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: @@ -13384,7 +13516,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[120].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: @@ -13396,7 +13528,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[121].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: @@ -13408,7 +13540,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[122].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: @@ -13420,7 +13552,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[123].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: @@ -13432,7 +13564,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[124].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: @@ -13444,7 +13576,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[125].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: @@ -13456,7 +13588,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[126].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: @@ -13468,7 +13600,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[127].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: @@ -13480,7 +13612,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[128].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: @@ -13492,7 +13624,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[129].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: @@ -13504,7 +13636,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[130].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: @@ -13516,7 +13648,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[131].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: @@ -13528,7 +13660,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[132].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: @@ -13540,6 +13672,30 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[133].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[134].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[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_VIPArray); i { case 0: return &v.state @@ -13558,7 +13714,7 @@ func file_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 144, + NumMessages: 146, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index ac4ed32..9a7caab 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -1237,6 +1237,22 @@ message DB_NewPlayerArray { repeated DB_NewPlayer Arr = 1; } +message DB_PassShow { + + int32 Id = 1; + + int32 ShowType = 2; + + int32 ShowVolume = 3; + + int32 Location = 4; + +} + +message DB_PassShowArray { + repeated DB_PassShow Arr = 1; +} + message DB_PetSkill { int32 Id = 1; diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 57928f0..f4e7dca 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -6520,10 +6520,10 @@ type ActPermitConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 - StartTs int64 `protobuf:"varint,2,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始日期 - OnChannelName []string `protobuf:"bytes,3,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启渠道 - Configs []*PermitChannelConfig `protobuf:"bytes,4,rep,name=Configs,proto3" json:"Configs,omitempty"` // 渠道配置 + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + StartTs int64 `protobuf:"varint,2,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始日期 + Days int32 `protobuf:"varint,3,opt,name=Days,proto3" json:"Days,omitempty"` // 持续天数 + Configs []*PermitChannelConfig `protobuf:"bytes,4,rep,name=Configs,proto3" json:"Configs,omitempty"` // 渠道配置 } func (x *ActPermitConfig) Reset() { @@ -6572,11 +6572,11 @@ func (x *ActPermitConfig) GetStartTs() int64 { return 0 } -func (x *ActPermitConfig) GetOnChannelName() []string { +func (x *ActPermitConfig) GetDays() int32 { if x != nil { - return x.OnChannelName + return x.Days } - return nil + return 0 } func (x *ActPermitConfig) GetConfigs() []*PermitChannelConfig { @@ -7636,21 +7636,20 @@ var file_common_proto_rawDesc = []byte{ 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa4, 0x01, 0x0a, + 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 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, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, - 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x07, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 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, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x79, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x61, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 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, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 8c40ec7..177ad9e 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -725,6 +725,6 @@ message PermitChannelConfig{ message ActPermitConfig{ string Platform = 1; // 平台 int64 StartTs = 2; // 开始日期 - repeated string OnChannelName = 3; // 开启渠道 + int32 Days = 3; // 持续天数 repeated PermitChannelConfig Configs = 4; // 渠道配置 } \ No newline at end of file diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 4021aa7..8606f7c 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -36,6 +36,11 @@ const ( OpResultCode_OPRC_DiamondLess OpResultCode = 9 // 钻石不足 OpResultCode_OPRC_PigbankNotFull OpResultCode = 10 // 存钱罐未满 OpResultCode_OPRC_PigbankOverTakeTimes OpResultCode = 11 // 存钱罐超过每日领取次数 + OpResultCode_OPRC_ExchangeLimit OpResultCode = 12 // 兑换次数不足 + OpResultCode_OPRC_ExchangeLevelLimit OpResultCode = 13 // 兑换等级不足 + OpResultCode_OPRC_NeedPermit OpResultCode = 14 // 需要典藏通行证 + OpResultCode_OPRC_ErrCost OpResultCode = 15 // 消耗道具不足 + OpResultCode_OPRC_NotFound OpResultCode = 16 // 商品没找到 ) // Enum value maps for OpResultCode. @@ -53,6 +58,11 @@ var ( 9: "OPRC_DiamondLess", 10: "OPRC_PigbankNotFull", 11: "OPRC_PigbankOverTakeTimes", + 12: "OPRC_ExchangeLimit", + 13: "OPRC_ExchangeLevelLimit", + 14: "OPRC_NeedPermit", + 15: "OPRC_ErrCost", + 16: "OPRC_NotFound", } OpResultCode_value = map[string]int32{ "OPRC_Sucess": 0, @@ -67,6 +77,11 @@ var ( "OPRC_DiamondLess": 9, "OPRC_PigbankNotFull": 10, "OPRC_PigbankOverTakeTimes": 11, + "OPRC_ExchangeLimit": 12, + "OPRC_ExchangeLevelLimit": 13, + "OPRC_NeedPermit": 14, + "OPRC_ErrCost": 15, + "OPRC_NotFound": 16, } ) @@ -147,6 +162,8 @@ const ( SPacketID_PACKET_SCPermitAward SPacketID = 2922 // 领取通行证奖励 SPacketID_PACKET_CSPermitExchange SPacketID = 2923 // 通行证兑换 SPacketID_PACKET_SCPermitExchange SPacketID = 2924 // 通行证兑换 + SPacketID_PACKET_CSPermitShop SPacketID = 2925 // 典藏通行证商品信息 + SPacketID_PACKET_SCPermitShop SPacketID = 2956 // 典藏通行证商品信息 ) // Enum value maps for SPacketID. @@ -196,6 +213,8 @@ var ( 2922: "PACKET_SCPermitAward", 2923: "PACKET_CSPermitExchange", 2924: "PACKET_SCPermitExchange", + 2925: "PACKET_CSPermitShop", + 2956: "PACKET_SCPermitShop", } SPacketID_value = map[string]int32{ "PACKET_SHOP_ZERO": 0, @@ -242,6 +261,8 @@ var ( "PACKET_SCPermitAward": 2922, "PACKET_CSPermitExchange": 2923, "PACKET_SCPermitExchange": 2924, + "PACKET_CSPermitShop": 2925, + "PACKET_SCPermitShop": 2956, } ) @@ -3249,10 +3270,10 @@ type PermitAward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Exp int64 `protobuf:"varint,1,opt,name=Exp,proto3" json:"Exp,omitempty"` // 赛季经验 - Level int64 `protobuf:"varint,2,opt,name=Level,proto3" json:"Level,omitempty"` // 等级 - Award1 []*PropItem `protobuf:"bytes,3,rep,name=Award1,proto3" json:"Award1,omitempty"` // 普通奖励 - Award2 []*PropItem `protobuf:"bytes,4,rep,name=Award2,proto3" json:"Award2,omitempty"` // 典藏奖励 + Exp int64 `protobuf:"varint,1,opt,name=Exp,proto3" json:"Exp,omitempty"` // 赛季经验 + Level int64 `protobuf:"varint,2,opt,name=Level,proto3" json:"Level,omitempty"` // 等级 + Award1 *PropItem `protobuf:"bytes,3,opt,name=Award1,proto3" json:"Award1,omitempty"` // 普通奖励 + Award2 *PropItem `protobuf:"bytes,4,opt,name=Award2,proto3" json:"Award2,omitempty"` // 典藏奖励 } func (x *PermitAward) Reset() { @@ -3301,14 +3322,14 @@ func (x *PermitAward) GetLevel() int64 { return 0 } -func (x *PermitAward) GetAward1() []*PropItem { +func (x *PermitAward) GetAward1() *PropItem { if x != nil { return x.Award1 } return nil } -func (x *PermitAward) GetAward2() []*PropItem { +func (x *PermitAward) GetAward2() *PropItem { if x != nil { return x.Award2 } @@ -3383,8 +3404,9 @@ type PermitRankAward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Rank int32 `protobuf:"varint,1,opt,name=Rank,proto3" json:"Rank,omitempty"` // 名次 - Award []*PropInfo `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty"` // 奖励 + Start int32 `protobuf:"varint,1,opt,name=Start,proto3" json:"Start,omitempty"` // 开始排名;第一名为0 + End int32 `protobuf:"varint,2,opt,name=End,proto3" json:"End,omitempty"` // 结束排名 + ItemId []*PropInfo `protobuf:"bytes,3,rep,name=ItemId,proto3" json:"ItemId,omitempty"` // 奖励 } func (x *PermitRankAward) Reset() { @@ -3419,16 +3441,23 @@ func (*PermitRankAward) Descriptor() ([]byte, []int) { return file_welfare_proto_rawDescGZIP(), []int{49} } -func (x *PermitRankAward) GetRank() int32 { +func (x *PermitRankAward) GetStart() int32 { if x != nil { - return x.Rank + return x.Start } return 0 } -func (x *PermitRankAward) GetAward() []*PropInfo { +func (x *PermitRankAward) GetEnd() int32 { if x != nil { - return x.Award + return x.End + } + return 0 +} + +func (x *PermitRankAward) GetItemId() []*PropInfo { + if x != nil { + return x.ItemId } return nil } @@ -3536,7 +3565,8 @@ type CSPermitAward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 奖励id; 0:一键领取 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 0奖励 1普通奖励 2典藏奖励 + Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 奖励id; 0:一键领取 } func (x *CSPermitAward) Reset() { @@ -3571,6 +3601,13 @@ func (*CSPermitAward) Descriptor() ([]byte, []int) { return file_welfare_proto_rawDescGZIP(), []int{51} } +func (x *CSPermitAward) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + func (x *CSPermitAward) GetId() int32 { if x != nil { return x.Id @@ -3588,6 +3625,7 @@ type SCPermitAward struct { Award1 []*PropInfo `protobuf:"bytes,2,rep,name=Award1,proto3" json:"Award1,omitempty"` // 普通奖励 Award2 []*PropInfo `protobuf:"bytes,3,rep,name=Award2,proto3" json:"Award2,omitempty"` // 典藏奖励 Id int32 `protobuf:"varint,4,opt,name=Id,proto3" json:"Id,omitempty"` // 奖励id; 0:一键领取 + Tp int32 `protobuf:"varint,5,opt,name=Tp,proto3" json:"Tp,omitempty"` // 0奖励 1普通奖励 2典藏奖励 } func (x *SCPermitAward) Reset() { @@ -3650,6 +3688,13 @@ func (x *SCPermitAward) GetId() int32 { return 0 } +func (x *SCPermitAward) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + // 赛季通行证兑换商城 //PACKET_CSPermitExchangeList type CSPermitExchangeList struct { @@ -3700,9 +3745,9 @@ type ShopInfo struct { Cost []*PropInfo `protobuf:"bytes,3,rep,name=Cost,proto3" json:"Cost,omitempty"` // 消耗商品 ExchangeTimes int32 `protobuf:"varint,4,opt,name=ExchangeTimes,proto3" json:"ExchangeTimes,omitempty"` // 最大兑换次数 RemainTimes int32 `protobuf:"varint,5,opt,name=RemainTimes,proto3" json:"RemainTimes,omitempty"` // 剩余兑换次数 - Status int64 `protobuf:"varint,6,opt,name=Status,proto3" json:"Status,omitempty"` // 兑换状态 0默认 1可领取 2已领取 - Level int64 `protobuf:"varint,7,opt,name=Level,proto3" json:"Level,omitempty"` // 兑换所需等级 - NeedPermit bool `protobuf:"varint,8,opt,name=NeedPermit,proto3" json:"NeedPermit,omitempty"` // 需要典藏通行证 + Level int64 `protobuf:"varint,6,opt,name=Level,proto3" json:"Level,omitempty"` // 兑换所需等级 + NeedPermit bool `protobuf:"varint,7,opt,name=NeedPermit,proto3" json:"NeedPermit,omitempty"` // 需要典藏通行证 + SortId int32 `protobuf:"varint,8,opt,name=SortId,proto3" json:"SortId,omitempty"` // 序号 } func (x *ShopInfo) Reset() { @@ -3772,13 +3817,6 @@ func (x *ShopInfo) GetRemainTimes() int32 { return 0 } -func (x *ShopInfo) GetStatus() int64 { - if x != nil { - return x.Status - } - return 0 -} - func (x *ShopInfo) GetLevel() int64 { if x != nil { return x.Level @@ -3793,6 +3831,13 @@ func (x *ShopInfo) GetNeedPermit() bool { return false } +func (x *ShopInfo) GetSortId() int32 { + if x != nil { + return x.SortId + } + return 0 +} + //PACKET_SCPermitExchangeList type SCPermitExchangeList struct { state protoimpl.MessageState @@ -3938,6 +3983,117 @@ func (x *SCPermitExchange) GetOpRetCode() OpResultCode { return OpResultCode_OPRC_Sucess } +//PACKET_CSPermitShop +type CSPermitShop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSPermitShop) Reset() { + *x = CSPermitShop{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPermitShop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPermitShop) ProtoMessage() {} + +func (x *CSPermitShop) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[58] + 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 CSPermitShop.ProtoReflect.Descriptor instead. +func (*CSPermitShop) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{58} +} + +//PACKET_SCPermitShop +type SCPermitShop 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"` // 名称 + Consume int32 `protobuf:"varint,3,opt,name=Consume,proto3" json:"Consume,omitempty"` // 购买消耗类型 1金币 2钻石 + Price int64 `protobuf:"varint,4,opt,name=price,proto3" json:"price,omitempty"` // 价格 +} + +func (x *SCPermitShop) Reset() { + *x = SCPermitShop{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPermitShop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPermitShop) ProtoMessage() {} + +func (x *SCPermitShop) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[59] + 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 SCPermitShop.ProtoReflect.Descriptor instead. +func (*SCPermitShop) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{59} +} + +func (x *SCPermitShop) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *SCPermitShop) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SCPermitShop) GetConsume() int32 { + if x != nil { + return x.Consume + } + return 0 +} + +func (x *SCPermitShop) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + var File_welfare_proto protoreflect.FileDescriptor var file_welfare_proto_rawDesc = []byte{ @@ -4276,9 +4432,9 @@ var file_welfare_proto_rawDesc = []byte{ 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, - 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x22, 0x64, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, @@ -4287,176 +4443,196 @@ var file_welfare_proto_rawDesc = []byte{ 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x4e, 0x0a, 0x0f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, - 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x22, 0x85, 0x02, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, - 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x08, 0x53, 0x68, 0x6f, - 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x12, 0x36, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x09, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x1f, 0x0a, 0x0d, 0x43, 0x53, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x0d, 0x53, - 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x33, 0x0a, 0x09, - 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, + 0x6e, 0x22, 0x64, 0x0a, 0x0f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x06, + 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0xfe, 0x01, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, - 0x47, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, - 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x22, 0x3d, 0x0a, 0x14, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0x22, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0x86, 0x02, 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, 0x10, - 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, - 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, - 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, - 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, - 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, - 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, - 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, - 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, - 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, - 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x2a, 0xe9, 0x0a, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, - 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, - 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, - 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, - 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, - 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, - 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, - 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, - 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, - 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, - 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, - 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, - 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, - 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, - 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, - 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, - 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, - 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, - 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, - 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, - 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, - 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, - 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x69, 0x67, - 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, - 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, - 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, - 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, - 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, - 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, - 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, - 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, - 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 0x12, 0x20, 0x0a, - 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe2, 0x16, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, - 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe3, - 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe5, - 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe6, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe7, 0x16, 0x12, 0x20, 0x0a, - 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe8, 0x16, 0x12, - 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x10, 0xea, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x10, 0xeb, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xec, - 0x16, 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, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x85, 0x02, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x53, 0x68, + 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, + 0x77, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, + 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, + 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, + 0x2f, 0x0a, 0x0d, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x22, 0xba, 0x01, 0x0a, 0x0d, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, + 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, + 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x31, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x54, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x16, 0x0a, + 0x14, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xfe, 0x01, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, + 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x6d, + 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, + 0x0a, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x14, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, + 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x22, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x10, 0x53, 0x43, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x33, 0x0a, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 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, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, + 0x6f, 0x70, 0x22, 0x62, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, + 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, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x2a, 0xf5, 0x02, 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, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, + 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, + 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, + 0x64, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, + 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, + 0x08, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, + 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, + 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x12, + 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x65, 0x65, + 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x10, 0x2a, 0x9d, + 0x0b, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, + 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, + 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, + 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, + 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, + 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, + 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, + 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, + 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, + 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, + 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, + 0x9b, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, + 0x10, 0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, + 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, + 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, + 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, + 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, + 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, + 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, + 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, + 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, + 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, + 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, + 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, + 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, + 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, + 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, + 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe2, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe3, 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, + 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x10, 0xe6, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x10, 0xe7, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe8, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x10, 0xe9, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xea, 0x16, 0x12, 0x1c, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xeb, 0x16, 0x12, 0x1c, 0x0a, 0x17, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xec, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, + 0x70, 0x10, 0xed, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x8c, 0x17, 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, + 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4472,7 +4648,7 @@ func file_welfare_proto_rawDescGZIP() []byte { } var file_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 59) +var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 61) var file_welfare_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: welfare.OpResultCode (SPacketID)(0), // 1: welfare.SPacketID @@ -4534,7 +4710,9 @@ var file_welfare_proto_goTypes = []interface{}{ (*SCPermitExchangeList)(nil), // 57: welfare.SCPermitExchangeList (*CSPermitExchange)(nil), // 58: welfare.CSPermitExchange (*SCPermitExchange)(nil), // 59: welfare.SCPermitExchange - nil, // 60: welfare.SCInviteInfo.PayScoreEntry + (*CSPermitShop)(nil), // 60: welfare.CSPermitShop + (*SCPermitShop)(nil), // 61: welfare.SCPermitShop + nil, // 62: welfare.SCInviteInfo.PayScoreEntry } var file_welfare_proto_depIdxs = []int32{ 0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode @@ -4561,7 +4739,7 @@ var file_welfare_proto_depIdxs = []int32{ 0, // 21: welfare.SCWelfareContinuousPayData.OpRetCode:type_name -> welfare.OpResultCode 23, // 22: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree 0, // 23: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode - 60, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry + 62, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry 35, // 25: welfare.SCInviteInfo.Awards1:type_name -> welfare.RankAward 35, // 26: welfare.SCInviteInfo.Awards2:type_name -> welfare.RankAward 35, // 27: welfare.SCInviteInfo.Awards3:type_name -> welfare.RankAward @@ -4573,7 +4751,7 @@ var file_welfare_proto_depIdxs = []int32{ 47, // 33: welfare.PropItem.Award:type_name -> welfare.PropInfo 48, // 34: welfare.PermitAward.Award1:type_name -> welfare.PropItem 48, // 35: welfare.PermitAward.Award2:type_name -> welfare.PropItem - 47, // 36: welfare.PermitRankAward.Award:type_name -> welfare.PropInfo + 47, // 36: welfare.PermitRankAward.ItemId:type_name -> welfare.PropInfo 49, // 37: welfare.SCPermitInfo.Award:type_name -> welfare.PermitAward 50, // 38: welfare.SCPermitInfo.ShowList:type_name -> welfare.PermitShow 51, // 39: welfare.SCPermitInfo.RankAward:type_name -> welfare.PermitRankAward @@ -5293,6 +5471,30 @@ func file_welfare_proto_init() { return nil } } + file_welfare_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPermitShop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPermitShop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -5300,7 +5502,7 @@ func file_welfare_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_welfare_proto_rawDesc, NumEnums: 2, - NumMessages: 59, + NumMessages: 61, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index 1b88f6a..369b3dd 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -15,7 +15,11 @@ enum OpResultCode { OPRC_DiamondLess = 9; // 钻石不足 OPRC_PigbankNotFull = 10; // 存钱罐未满 OPRC_PigbankOverTakeTimes = 11; // 存钱罐超过每日领取次数 - + OPRC_ExchangeLimit = 12; // 兑换次数不足 + OPRC_ExchangeLevelLimit = 13; // 兑换等级不足 + OPRC_NeedPermit = 14; // 需要典藏通行证 + OPRC_ErrCost = 15; // 消耗道具不足 + OPRC_NotFound = 16; // 商品没找到 } // 福利大厅 enum SPacketID { @@ -72,6 +76,9 @@ enum SPacketID { PACKET_CSPermitExchange = 2923; // 通行证兑换 PACKET_SCPermitExchange = 2924; // 通行证兑换 + + PACKET_CSPermitShop = 2925; // 典藏通行证商品信息 + PACKET_SCPermitShop = 2956; // 典藏通行证商品信息 } //救济金领取 @@ -407,8 +414,8 @@ message PropItem{ message PermitAward{ int64 Exp = 1; // 赛季经验 int64 Level = 2; // 等级 - repeated PropItem Award1 = 3; // 普通奖励 - repeated PropItem Award2 = 4; // 典藏奖励 + PropItem Award1 = 3; // 普通奖励 + PropItem Award2 = 4; // 典藏奖励 } message PermitShow{ @@ -418,8 +425,9 @@ message PermitShow{ } message PermitRankAward{ - int32 Rank = 1; // 名次 - repeated PropInfo Award = 2; // 奖励 + int32 Start = 1; // 开始排名;第一名为0 + int32 End = 2; // 结束排名 + repeated PropInfo ItemId = 3; // 奖励 } //PACKET_SCPermitInfo @@ -436,7 +444,8 @@ message SCPermitInfo{ // 领取赛季通行证奖励 //PACKET_CSPermitAward message CSPermitAward{ - int32 Id = 1; // 奖励id; 0:一键领取 + int32 Tp = 1; // 0奖励 1普通奖励 2典藏奖励 + int32 Id = 2; // 奖励id; 0:一键领取 } //PACKET_SCPermitAward message SCPermitAward{ @@ -444,6 +453,7 @@ message SCPermitAward{ repeated PropInfo Award1 = 2; // 普通奖励 repeated PropInfo Award2 = 3; // 典藏奖励 int32 Id = 4; // 奖励id; 0:一键领取 + int32 Tp = 5; // 0奖励 1普通奖励 2典藏奖励 } // 赛季通行证兑换商城 @@ -457,9 +467,9 @@ message ShopInfo{ repeated PropInfo Cost = 3; // 消耗商品 int32 ExchangeTimes = 4; // 最大兑换次数 int32 RemainTimes = 5; // 剩余兑换次数 - int64 Status = 6; // 兑换状态 0默认 1可领取 2已领取 - int64 Level = 7; // 兑换所需等级 - bool NeedPermit = 8; // 需要典藏通行证 + int64 Level = 6; // 兑换所需等级 + bool NeedPermit = 7; // 需要典藏通行证 + int32 SortId = 8; // 序号 } //PACKET_SCPermitExchangeList @@ -475,4 +485,15 @@ message CSPermitExchange{ //PACKET_SCPermitExchange message SCPermitExchange{ OpResultCode OpRetCode = 1; // 错误码 +} + +//PACKET_CSPermitShop +message CSPermitShop{ +} +//PACKET_SCPermitShop +message SCPermitShop{ + int32 Id = 1; // 序号 + string Name = 2; // 名称 + int32 Consume = 3; // 购买消耗类型 1金币 2钻石 + int64 price = 4; // 价格 } \ No newline at end of file diff --git a/public b/public index e3cbc9f..286243f 160000 --- a/public +++ b/public @@ -1 +1 @@ -Subproject commit e3cbc9f58234727bd5f859f86083ad584b66009b +Subproject commit 286243fa926c275ff53b9d1f3ef501a8bd9020c3 diff --git a/ranksrv/action_gatesrv.go b/ranksrv/action_gatesrv.go index 6e2dee5..0f1114e 100644 --- a/ranksrv/action_gatesrv.go +++ b/ranksrv/action_gatesrv.go @@ -26,6 +26,8 @@ func init() { com.Register(int(rankproto.Rank_PACKET_RANK_CSWinCoin), rankproto.CSWinCoin{}, CSWinCoin) //等级榜 com.Register(int(rankproto.Rank_PACKET_RANK_CSLevel), rankproto.CSPlayerLevelRank{}, CSPlayerLevelRank) + // 赛季通行证积分排行 + com.Register(int(rankproto.Rank_PACKET_RANK_CSPermit), rankproto.CSPermit{}, CSPermit) } func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { @@ -477,3 +479,69 @@ func CSPlayerLevelRank(s *netlib.Session, d *rankproto.GateTransmit, packetId in }) return nil } + +func CSPermit(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSPermit data:", data) + msg, ok := data.(*rankproto.CSPermit) + if !ok { + return nil + } + + rank.RankPermitMgrInstance.Take(d.Platform, 0, func(list []*model.PermitScore, err error) { + if err != nil { + logger.Logger.Errorf("CSPermit error: %v", err) + return + } + + start, end := com.SkipLimitToStartEnd(msg.GetSkip(), msg.GetLimit(), len(list)) + + IsEndNum := false + if end == int32(len(list)) { + IsEndNum = true + } + + var i int32 + var ranks []*rankproto.PermitRank + if end > start && int(start) < len(list) { + for _, v := range list[start:end] { + r := &rankproto.PermitRank{ + Snid: v.SnId, + Name: v.Name, + Rank: start + i, + Score: v.Exp, + ModId: v.ModId, + } + ranks = append(ranks, r) + i++ + } + } + + var me *rankproto.PermitRank + for k, v := range list { + if v.SnId == d.Snid { + me = &rankproto.PermitRank{ + Snid: v.SnId, + Name: v.Name, + Score: v.Exp, + Rank: int32(k), + ModId: v.ModId, + } + break + } + } + + f := func() { + pack := &rankproto.SCPermit{ + Ranks: ranks, + Me: me, + Skip: msg.GetSkip(), + IsEndNum: IsEndNum, + RankMaxNum: model.GameParamData.RankPlayerPermitMaxNum, + } + common.SendToGate(sid, int(rankproto.Rank_PACKET_RANK_SCPermit), pack, s) + logger.Logger.Tracef("SCPermit: %v", pack) + } + f() + }) + return nil +} diff --git a/ranksrv/rank/rankpermit.go b/ranksrv/rank/rankpermit.go new file mode 100644 index 0000000..121e4a7 --- /dev/null +++ b/ranksrv/rank/rankpermit.go @@ -0,0 +1,29 @@ +package rank + +import ( + "encoding/json" + "mongo.games.com/game/common" + "mongo.games.com/goserver/core/logger" + + "mongo.games.com/game/model" + "mongo.games.com/game/ranksrv/com" +) + +var RankPermitMgrInstance = com.NewListMgr[*model.PermitScore]( + func() int64 { + return int64(model.GameParamData.RankTimeout) + }, + func(platform string, index int32) ([]*model.PermitScore, error) { + logger.Logger.Tracef("load rank permit platform:%s rankType:%d", platform, index) + se := new(model.PermitStartTs) + b := model.GetStrKVGameData(common.PermitStartTsKey + platform) + json.Unmarshal([]byte(b), se) + seasonList, err := model.FindPlayerPermitList(&model.FindPlayerPermitListArgs{ + Platform: platform, + StartTs: se.StartTs, + }) + if err != nil { + return nil, err + } + return seasonList.List, nil + }) diff --git a/srvdata/db_passshow.go b/srvdata/db_passshow.go new file mode 100644 index 0000000..a43b251 --- /dev/null +++ b/srvdata/db_passshow.go @@ -0,0 +1,77 @@ + +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_PassShowMgr = &DB_PassShowMgr{ + Datas: &server.DB_PassShowArray{}, + pool: make(map[int32]*server.DB_PassShow), + +} + +type DB_PassShowMgr struct { + Datas *server.DB_PassShowArray + pool map[int32]*server.DB_PassShow + +} + +func (this *DB_PassShowMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_PassShowMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_PassShowArray{} + 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_PassShowMgr) 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_PassShowMgr) GetData(id int32) *server.DB_PassShow { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + + +func init() { + DataMgr.register("DB_PassShow.dat", &ProtobufDataLoader{dh: PBDB_PassShowMgr}) +} diff --git a/worldsrv/action_friend.go b/worldsrv/action_friend.go index 5be220e..254752d 100644 --- a/worldsrv/action_friend.go +++ b/worldsrv/action_friend.go @@ -309,6 +309,13 @@ func (this *CSInviteFriendHandler) Process(s *netlib.Session, packetid int, data proto.SetDefaults(pack) player.SendToClient(int(friend.FriendPacketID_PACKET_SCInviteFriend), pack) logger.Logger.Trace("SCInviteFriendHandler: ", pack) + + // 记录邀请记录 + if opRetCode == friend.OpResultCode_OPRC_Sucess { + if p.SnId != player.SnId { + p.TaskInviteList[player.SnId] = p.scene.sceneId + } + } } //不能邀请自己 if p.SnId == friendSnid { diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index b93bdce..96e7e58 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -167,6 +167,22 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in if !scene.PlayerEnter(p, -1, true) { code = gamehall.OpResultCode_Game_OPRC_Error_Game + } else { + // 进入成功 + for _, v := range scene.players { + if v == nil || len(v.TaskInviteList) == 0 || v.SnId == p.SnId { + continue + } + if v.TaskInviteList[p.SnId] == scene.sceneId { + delete(v.TaskInviteList, p.SnId) + TaskSubjectSingleton.Touch(common.TaskTypeInvitePlay, &TaskData{ + SnId: v.SnId, + GameID: scene.gameId, + GameFreeID: scene.dbGameFree.GetId(), + Num: 1, + }) + } + } } failed: diff --git a/worldsrv/action_server.go b/worldsrv/action_server.go index 56bdfb8..15cb360 100644 --- a/worldsrv/action_server.go +++ b/worldsrv/action_server.go @@ -454,6 +454,15 @@ func init() { GameFreeID: scene.dbGameFree.GetId(), Num: 1, }) + // 大众场 + if common.IsDaZhong(scene.gameId) { + TaskSubjectSingleton.Touch(common.TaskTypeDaZhong, &TaskData{ + SnId: player.SnId, + GameID: scene.gameId, + GameFreeID: scene.dbGameFree.GetId(), + Num: 1, + }) + } } // task 游戏局数 TaskSubjectSingleton.Touch(common.TaskTypePlayTimes, &TaskData{ diff --git a/worldsrv/action_task.go b/worldsrv/action_task.go index 761c519..8ae5c59 100644 --- a/worldsrv/action_task.go +++ b/worldsrv/action_task.go @@ -98,6 +98,9 @@ func SendReward(p *Player, m map[int64]int64, tp int32) { case 5: gain = common.GainWayItemTaskAchievement giveType = model.SystemFreeGive_GiveType_TaskAchievement + case 6: + gain = common.GainWayItemTaskPermit + giveType = model.SystemFreeGive_GiveType_TaskPermit } BagMgrSingleton.AddItems(p, items, 0, gain, "system", "任务奖励", 0, 0, false) for _, v := range items { @@ -164,19 +167,46 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64) return nil } + isPermit := p.GetIsPermit() + ret := &taskproto.SCTaskReward{ OpCode: taskproto.OpResultCode_OPRC_Error, Tp: msg.GetTp(), Id: msg.GetId(), + Reward: make(map[int64]int64), } - if IsTaskFinish(p, msg.GetId()) && !IsTaskReward(p, msg.GetId()) { - p.WelfData.Task[msg.GetId()].Ts = time.Now().Unix() - data := srvdata.PBDB_TaskMgr.GetData(msg.GetId()) - if data != nil { - SendReward(p, data.Award, msg.Tp) + f := func(id int32) { + if IsTaskFinish(p, id) && !IsTaskReward(p, id) { + p.WelfData.Task[id].Ts = time.Now().Unix() + data := srvdata.PBDB_TaskMgr.GetData(id) + if data != nil { + SendReward(p, data.Award, msg.Tp) + for k, vv := range data.GetAward() { + ret.Reward[k] = ret.Reward[k] + vv + } + // 赛季通行证积分 + if data.GetActivityType() == common.TaskActivityTypePermit { + ret.Reward[common.ItemIDPermit] = common.PermitTaskScore + if isPermit { + ret.Reward[common.ItemIDPermit] = common.PermitTaskScore * 1.5 + } + BagMgrSingleton.AddItem( + p, common.ItemIDPermit, ret.Reward[common.ItemIDPermit], 0, 0, + "system", "任务获得赛季通行证积分", 0, 0, true) + } + } + ret.OpCode = taskproto.OpResultCode_OPRC_Success } - ret.OpCode = taskproto.OpResultCode_OPRC_Success + } + + if msg.Tp > 0 && msg.Id == 0 { + // 一键领取 + for _, v := range srvdata.TaskMgr.GetActivityType(msg.GetTp()) { + f(v.GetId()) + } + } else { + f(msg.GetId()) } p.SendToClient(int(taskproto.TaskPacketID_PACKET_SCTaskReward), ret) diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 048280a..3bd20fa 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -469,6 +469,646 @@ func CSBindInvite(s *netlib.Session, packetid int, data interface{}, sid int64) return nil } +// IsPermitReward 是否已经领取 +func IsPermitReward(p *Player, id int32) bool { + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + return true + } + + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs + + if p.WelfData != nil && p.WelfData.Task != nil { + ts := p.WelfData.PermitAward[id] + if ts == 0 { + return false + } + if ts >= startTs && ts < endTs { + return true + } + } + return false +} + +// IsPermitCanReward 是否可以领取 +func IsPermitCanReward(p *Player, id int32) bool { + if IsPermitReward(p, id) { + return false + } + + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + return false + } + + exp := int64(0) + item := BagMgrSingleton.GetItem(p.SnId, common.ItemIDPermit) + if item != nil { + exp = item.ItemNum + } + level := PlatformMgrSingleton.GetPermitLevel(p.Platform, p.LastChannel, exp) + + for _, v := range channelConfig.GetLevelConfig() { + if v.GetRank() == id || v.GetRank()*1000 == id { + if v.GetRank() == id { + return level >= int64(v.GetRank()) + } else { + return p.GetIsPermit() && level >= int64(v.GetRank()) + } + } + } + + return false +} + +// SendPermitReward 发赛季通行证奖励 +// tp 1普通,2典藏 +func SendPermitReward(p *Player, m map[int64]int64, tp int32) { + var items []*Item + for k, v := range m { + items = append(items, &Item{ + ItemId: int32(k), + ItemNum: v, + }) + } + gain := int32(0) + giveType := int32(-1) + switch tp { + case 1: + gain = common.GainWayPermitAward + giveType = model.SystemFreeGive_GiveType_PermitAward + case 2: + gain = common.GainWayPermitAwardSupper + giveType = model.SystemFreeGive_GiveType_PermitAwardSupper + } + BagMgrSingleton.AddItems(p, items, 0, gain, "system", "通行证奖励", 0, 0, false) + for _, v := range items { + tp1 := int32(-1) + if v.ItemId == common.ItemIDCoin { + tp1 = model.SystemFreeGive_CoinType_Coin + } else if v.ItemId == common.ItemIDDiamond { + tp1 = model.SystemFreeGive_CoinType_Diamond + } + if !p.IsRob && tp1 >= 0 && giveType >= 0 { + LogChannelSingleton.WriteMQData( + model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, tp1, v.ItemNum)) + } + } +} + +func CSPermitInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSPermitInfo Process recv %v", data) + _, ok := data.(*welfare.CSPermitInfo) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + if p.LastChannel == "" { + logger.Logger.Errorf("CSPermitInfo not channel %v", p.SnId) + return nil + } + + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + logger.Logger.Errorf("CSPermitInfo not channelConfig %v", p.SnId) + return nil + } + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs + if startTs == 0 || endTs == 0 { + logger.Logger.Errorf("CSPermitInfo not startTs %v", p.SnId) + return nil + } + // 赛季积分 + exp := int64(0) + item := BagMgrSingleton.GetItem(p.SnId, common.ItemIDPermit) + if item != nil { + exp = item.ItemNum + } + // 等级 + level := PlatformMgrSingleton.GetPermitLevel(p.Platform, p.LastChannel, exp) + + pack := &welfare.SCPermitInfo{ + Exp: exp, + Level: level, + Timestamp: []int64{startTs, endTs}, + IsPermit: p.GetIsPermit(), + } + // 等级奖励 + for _, v := range channelConfig.GetLevelConfig() { + var a1, a2 []*welfare.PropInfo + for _, vv := range v.GetAward1() { + a1 = append(a1, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + for _, vv := range v.GetAward2() { + a2 = append(a2, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + + status1 := 0 + if IsPermitReward(p, v.GetRank()) { + status1 = 2 + } else { + if IsPermitCanReward(p, v.GetRank()) { + status1 = 1 + } + } + + status2 := 0 + if IsPermitReward(p, v.GetRank()*1000) { + status2 = 2 + } else { + if IsPermitCanReward(p, v.GetRank()*1000) { + status2 = 1 + } + } + + pack.Award = append(pack.Award, &welfare.PermitAward{ + Exp: v.GetScore(), + Level: int64(v.GetRank()), + Award1: &welfare.PropItem{ + Award: a1, + Status: int64(status1), + Id: v.GetRank(), + }, + Award2: &welfare.PropItem{ + Award: a2, + Status: int64(status2), + Id: v.GetRank() * 1000, + }, + }) + } + // 排行奖励 + for _, v := range channelConfig.GetRankConfig() { + var items []*welfare.PropInfo + for _, vv := range v.GetItemId() { + items = append(items, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + pack.RankAward = append(pack.RankAward, &welfare.PermitRankAward{ + Start: v.GetStart(), + End: v.GetEnd(), + ItemId: items, + }) + } + // 客户端轮播配置 + for _, v := range srvdata.PBDB_PassShowMgr.Datas.GetArr() { + pack.ShowList = append(pack.ShowList, &welfare.PermitShow{ + ShowType: v.GetShowType(), + ShowVolume: v.GetShowVolume(), + Location: v.GetLocation(), + }) + } + p.SendToClient(int(welfare.SPacketID_PACKET_SCPermitInfo), pack) + logger.Logger.Tracef("SCPermitInfo: %v", pack) + return nil +} + +func CSPermitAward(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSPermitAward Process recv %v", data) + msg, ok := data.(*welfare.CSPermitAward) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + if p.LastChannel == "" { + logger.Logger.Errorf("CSPermitAward not channel %v", p.SnId) + return nil + } + + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + logger.Logger.Errorf("CSPermitAward not channelConfig %v", p.SnId) + return nil + } + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs + if startTs == 0 || endTs == 0 { + logger.Logger.Errorf("CSPermitAward not startTs %v", p.SnId) + return nil + } + + now := time.Now() + + pack := &welfare.SCPermitAward{ + OpRetCode: welfare.OpResultCode_OPRC_Error, + Tp: msg.GetTp(), + Id: msg.GetId(), + } + + switch msg.GetTp() { + case 0: // 所有 + for _, v := range channelConfig.GetLevelConfig() { + if IsPermitCanReward(p, v.GetRank()) { + for _, vv := range v.GetAward1() { + pack.Award1 = append(pack.Award1, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + p.WelfData.PermitAward[v.GetRank()] = now.Unix() + } + if IsPermitCanReward(p, v.GetRank()*1000) { + for _, vv := range v.GetAward2() { + pack.Award2 = append(pack.Award2, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + p.WelfData.PermitAward[v.GetRank()*1000] = now.Unix() + } + } + + case 1: // 普通 + for _, v := range channelConfig.GetLevelConfig() { + if msg.GetId() == 0 { + if IsPermitCanReward(p, v.GetRank()) { + for _, vv := range v.GetAward1() { + pack.Award1 = append(pack.Award1, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + p.WelfData.PermitAward[v.GetRank()] = now.Unix() + } + } else { + if v.GetRank() == msg.GetId() { + if IsPermitCanReward(p, v.GetRank()) { + for _, vv := range v.GetAward1() { + pack.Award1 = append(pack.Award1, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + p.WelfData.PermitAward[v.GetRank()] = now.Unix() + } else { + pack.OpRetCode = welfare.OpResultCode_OPRC_NoTimes + } + break + } + } + } + + case 2: // 典藏 + for _, v := range channelConfig.GetLevelConfig() { + if msg.GetId() == 0 { + if IsPermitCanReward(p, v.GetRank()*1000) { + for _, vv := range v.GetAward2() { + pack.Award2 = append(pack.Award2, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + p.WelfData.PermitAward[v.GetRank()*1000] = now.Unix() + } + } else { + if v.GetRank() == msg.GetId() { + if IsPermitCanReward(p, v.GetRank()*1000) { + for _, vv := range v.GetAward2() { + pack.Award2 = append(pack.Award2, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + p.WelfData.PermitAward[v.GetRank()*1000] = now.Unix() + } else { + pack.OpRetCode = welfare.OpResultCode_OPRC_NoTimes + } + break + } + } + } + } + + // 奖励合并 + var award1 = map[int32]*welfare.PropInfo{} + var award2 = map[int32]*welfare.PropInfo{} + var awards1 = map[int64]int64{} + var awards2 = map[int64]int64{} + for _, v := range pack.GetAward1() { + e, ok := award1[v.GetItemId()] + if !ok { + e = &welfare.PropInfo{ + ItemId: v.GetItemId(), + ItemNum: v.GetItemNum(), + } + award1[v.GetItemId()] = e + } else { + e.ItemNum = e.GetItemNum() + v.GetItemNum() + } + awards1[int64(v.GetItemId())] = awards1[int64(v.GetItemId())] + v.GetItemNum() + } + for _, v := range pack.GetAward2() { + e, ok := award2[v.GetItemId()] + if !ok { + e = &welfare.PropInfo{ + ItemId: v.GetItemId(), + ItemNum: v.GetItemNum(), + } + award2[v.GetItemId()] = e + } else { + e.ItemNum = e.GetItemNum() + v.GetItemNum() + } + awards2[int64(v.GetItemId())] = awards2[int64(v.GetItemId())] + v.GetItemNum() + } + // 发奖 + SendPermitReward(p, awards1, 1) + SendPermitReward(p, awards2, 2) + pack.Award1 = nil + pack.Award2 = nil + for _, v := range award1 { + pack.Award1 = append(pack.Award1, &welfare.PropInfo{ + ItemId: v.GetItemId(), + ItemNum: v.GetItemNum(), + }) + } + for _, v := range award2 { + pack.Award2 = append(pack.Award2, &welfare.PropInfo{ + ItemId: v.GetItemId(), + ItemNum: v.GetItemNum(), + }) + } + p.SendToClient(int(welfare.SPacketID_PACKET_SCPermitAward), pack) + logger.Logger.Tracef("SCPermitAward: %v", pack) + return nil +} + +// GetPermitExchangeNum 获取已兑换次数 +func GetPermitExchangeNum(p *Player, id int32) int { + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + return 0 + } + + return len(p.WelfData.PermitExchange[id]) +} + +// GetPermitCanExchange 是否可以兑换 +// 1等级不足 2需要典藏通行证 3兑换次数不足 4商品不存在 +func GetPermitCanExchange(p *Player, id int32) (bool, int) { + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + return false, 0 + } + + times := GetPermitExchangeNum(p, id) + exp := int64(0) + item := BagMgrSingleton.GetItem(p.SnId, common.ItemIDPermit) + if item != nil { + exp = item.ItemNum + } + level := PlatformMgrSingleton.GetPermitLevel(p.Platform, p.LastChannel, exp) + + for _, v := range channelConfig.GetExchangeConfig() { + if v.GetId() == id { + // 等级 + if level < v.GetLevel() { + return false, 1 + } + // 通行证 + if v.GetIsPermit() && !p.GetIsPermit() { + return false, 2 + } + // 剩余兑换次数 + if v.GetTimes() > 0 && int64(times) >= v.GetTimes() { + return false, 3 + } + return true, 0 + } + } + + return false, 4 +} + +func CSPermitExchangeList(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSPermitExchangeList Process recv %v", data) + _, ok := data.(*welfare.CSPermitExchangeList) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + if p.LastChannel == "" { + logger.Logger.Errorf("CSPermitExchangeList not channel %v", p.SnId) + return nil + } + + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + logger.Logger.Errorf("CSPermitExchangeList not channelConfig %v", p.SnId) + return nil + } + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs + if startTs == 0 || endTs == 0 { + logger.Logger.Errorf("CSPermitExchangeList not startTs %v", p.SnId) + return nil + } + + pack := &welfare.SCPermitExchangeList{} + + for _, v := range channelConfig.GetExchangeConfig() { + var gain, cost []*welfare.PropInfo + for _, vv := range v.GetGain() { + gain = append(gain, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + for _, vv := range v.GetCost() { + cost = append(cost, &welfare.PropInfo{ + ItemId: vv.GetItemId(), + ItemNum: vv.GetItemNum(), + }) + } + + times := int32(v.GetTimes()) - int32(GetPermitExchangeNum(p, v.GetId())) + + pack.List = append(pack.List, &welfare.ShopInfo{ + Id: v.GetId(), + Gain: gain, + Cost: cost, + ExchangeTimes: int32(v.GetTimes()), + RemainTimes: times, + Level: v.GetLevel(), + NeedPermit: v.GetIsPermit(), + SortId: v.GetSortId(), + }) + } + p.SendToClient(int(welfare.SPacketID_PACKET_SCPermitExchangeList), pack) + logger.Logger.Tracef("SCPermitExchangeList: %v", pack) + return nil +} + +func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSPermitExchange Process recv %v", data) + msg, ok := data.(*welfare.CSPermitExchange) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + if p.LastChannel == "" { + logger.Logger.Errorf("CSPermitExchange not channel %v", p.SnId) + return nil + } + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + logger.Logger.Errorf("CSPermitExchange not channelConfig %v", p.SnId) + return nil + } + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs + if startTs == 0 || endTs == 0 { + logger.Logger.Errorf("CSPermitExchange not startTs %v", p.SnId) + return nil + } + + now := time.Now() + + isExchange, code := GetPermitCanExchange(p, msg.GetId()) + pack := &welfare.SCPermitExchange{ + OpRetCode: welfare.OpResultCode_OPRC_Sucess, + } + send := func(d welfare.OpResultCode) { + // 1等级不足 2需要典藏通行证 3兑换次数不足 4商品不存在 + switch code { + case 1: + pack.OpRetCode = welfare.OpResultCode_OPRC_ExchangeLevelLimit + case 2: + pack.OpRetCode = welfare.OpResultCode_OPRC_NeedPermit + case 3: + pack.OpRetCode = welfare.OpResultCode_OPRC_ExchangeLimit + case 4: + pack.OpRetCode = welfare.OpResultCode_OPRC_NotFound + } + if code == 0 { + pack.OpRetCode = d + } + p.SendToClient(int(welfare.SPacketID_PACKET_SCPermitExchange), pack) + logger.Logger.Tracef("SCPermitExchange: %v", pack) + } + + if isExchange { + var exchangeConfig *webapi_proto.PermitExchangeConfig + for _, v := range channelConfig.GetExchangeConfig() { + if v.GetId() == msg.GetId() { + exchangeConfig = v + break + } + } + if exchangeConfig != nil { + // 检查背包是否足够 + var items []*Item + var costItems []*Item + for k, v := range exchangeConfig.GetCost() { + item := BagMgrSingleton.GetItem(p.SnId, int32(k)) + if item == nil || item.ItemNum < v.GetItemNum() { + send(welfare.OpResultCode_OPRC_ErrCost) + return nil + } + info := srvdata.PBDB_GameItemMgr.GetData(int32(k)) + if info != nil { + costItems = append(costItems, &Item{ + ItemId: int32(k), + ItemNum: v.GetItemNum(), + Name: info.Name, + }) + } + } + for k, v := range exchangeConfig.GetGain() { + info := srvdata.PBDB_GameItemMgr.GetData(int32(k)) + if info != nil { + items = append(items, &Item{ + ItemId: int32(k), + ItemNum: v.GetItemNum(), + Name: info.Name, + }) + } + } + // 扣除背包物品 + for _, item := range costItems { + BagMgrSingleton.AddItem(p, int64(item.ItemId), -item.ItemNum, 0, common.GainWayPermitExchangeCost, "system", "赛季通行证兑换消耗", 0, 0, false) + } + // 增加背包物品 + BagMgrSingleton.AddItems(p, items, 0, common.GainWayPermitExchangeGain, "system", "赛季通行证兑换获得", 0, 0, false) + p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix()) + } + } + + if !isExchange { + pack.OpRetCode = welfare.OpResultCode_OPRC_Error + } + p.SendToClient(int(welfare.SPacketID_PACKET_SCPermitExchange), pack) + logger.Logger.Tracef("SCPermitExchange: %v", pack) + return nil +} + +func CSPermitShop(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSPermitShop Process recv %v", data) + _, ok := data.(*welfare.CSPermitShop) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + if p.LastChannel == "" { + logger.Logger.Errorf("CSPermitShop not channel %v", p.SnId) + return nil + } + channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel) + if channelConfig == nil { + logger.Logger.Errorf("CSPermitShop not channelConfig %v", p.SnId) + return nil + } + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs + if startTs == 0 || endTs == 0 { + logger.Logger.Errorf("CSPermitShop not startTs %v", p.SnId) + return nil + } + + shopInfo := ShopMgrSington.GetShopInfo(common.ShopIdPermit, p) + if shopInfo == nil { + logger.Logger.Errorf("CSPermitShop is null %v", p.SnId) + return nil + } + price := int64(0) + if len(shopInfo.CostArea) > 0 { + price = int64(shopInfo.CostArea[0]) + } + + pack := &welfare.SCPermitShop{ + Id: shopInfo.Id, + Name: shopInfo.Name, + Consume: shopInfo.ConstType, + Price: price, + } + p.SendToClient(int(welfare.SPacketID_PACKET_SCPermitShop), pack) + logger.Logger.Tracef("SCPermitShop: %v", pack) + return nil +} + // ------------------------------------------------ type CSPigBankGetInfoPacketFactory struct { } @@ -647,4 +1287,15 @@ func init() { //领取钻石储存罐 /* common.RegisterHandler(int(welfare.SPacketID_PACKET_CSDiamondBankTakeDiamond), &CSDiamondBankTakeDiamondHandler{}) netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CSDiamondBankTakeDiamond), &CSDiamondBankTakeDiamondPacketFactory{})*/ + + // 赛季通行证信息 + common.Register(int(welfare.SPacketID_PACKET_CSPermitInfo), welfare.CSPermitInfo{}, CSPermitInfo) + // 赛季通行证奖励领取 + common.Register(int(welfare.SPacketID_PACKET_CSPermitAward), welfare.CSPermitAward{}, CSPermitAward) + // 赛季通行证兑换列表 + common.Register(int(welfare.SPacketID_PACKET_CSPermitExchangeList), welfare.CSPermitExchangeList{}, CSPermitExchangeList) + // 赛季通行证兑换 + common.Register(int(welfare.SPacketID_PACKET_CSPermitExchange), welfare.CSPermitExchange{}, CSPermitExchange) + // 赛季典藏通行证商品信息 + common.Register(int(welfare.SPacketID_PACKET_CSPermitShop), welfare.CSPermitShop{}, CSPermitShop) } diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index 8f746f8..cd91af7 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -290,12 +290,32 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int }) } } + if len(changeItems) > 0 { newBagInfo.dirty = true p.dirty = true this.PlayerBag[p.SnId] = newBagInfo this.SyncBagData(p.SnId, changeItems...) } + + for _, v := range changeItems { + if v == common.ItemIDPermit { + item := this.GetItem(p.SnId, v) + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + if item != nil && item.ItemNum > 0 && startTs > 0 { + // 赛季积分排行榜 + LogChannelSingleton.WriteLog(&model.PermitScore{ + Platform: p.Platform, + SnId: p.SnId, + Name: p.Name, + Exp: item.ItemNum, + ModId: p.Roles.ModId, + StartTs: startTs, + }) + } + } + } + if code != bag.OpResultCode_OPRC_Sucess { return newBagInfo, code, false } diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 51faf23..6a791cb 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -2,17 +2,22 @@ package main import ( "context" + "encoding/json" "strconv" "strings" "go.etcd.io/etcd/client/v3" - "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/task" + "mongo.games.com/game/common" "mongo.games.com/game/etcd" + "mongo.games.com/game/model" hallproto "mongo.games.com/game/protocol/gamehall" loginproto "mongo.games.com/game/protocol/login" playerproto "mongo.games.com/game/protocol/player" "mongo.games.com/game/protocol/webapi" + "mongo.games.com/goserver/core/logger" ) func init() { @@ -68,6 +73,8 @@ func init() { etcd.Register(etcd.ETCDKEY_ACT_PHONELOTTERY, webapi.WelfarePhoneLotteryStatus{}, platformConfigEvent) // 邀请活动 etcd.Register(etcd.ETCDKEY_ACT_Invite, webapi.ActInviteConfig{}, platformConfigEvent) + // 赛季通行证 + etcd.Register(etcd.ETCDKEY_ACT_Permit, webapi.ActPermitConfig{}, platformConfigEvent) } func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -199,9 +206,142 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e WelfareMgrSington.UpdatePhoneLotteryStatus(config) case *webapi.ActInviteConfig: PlatformMgrSingleton.GetConfig(config.Platform).ActInviteConfig = config + case *webapi.ActPermitConfig: + break + PlatformMgrSingleton.GetConfig(config.Platform).ActPermitConfig = config + st := new(model.PermitStartTs) + permit := model.GetStrKVGameData(common.PermitStartTsKey + config.Platform) + if permit != "" { + if err := json.Unmarshal([]byte(permit), st); err != nil { + logger.Logger.Errorf("permit startts error: %v", err) + return + } + // 修改循环周期 + endTs := st.StartTs + int64(config.GetDays()*24*3600) + if st.StartTs > 0 && endTs != st.EndTs { + st.EndTs = endTs + } + PlatformMgrSingleton.GetConfig(config.Platform).PermitStartTs = st.StartTs + PlatformMgrSingleton.GetConfig(config.Platform).PermitEndTs = st.EndTs + } else { + startTs := common.GetDayStartTs(config.StartTs) + endTs := startTs + int64(config.Days*24*3600) + st.StartTs = startTs + st.EndTs = endTs + PlatformMgrSingleton.GetConfig(config.Platform).PermitStartTs = startTs + PlatformMgrSingleton.GetConfig(config.Platform).PermitEndTs = endTs + } + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + if st.StartTs <= 0 || st.EndTs <= 0 { + return nil + } + b, err := json.Marshal(st) + if err != nil { + logger.Logger.Errorf("permit startts save error: %v", err) + } else { + logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs) + err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b)) + if err != nil { + logger.Logger.Errorf("permit startts update error:%v", err) + } + } + return nil + }), nil).StartByExecutor("permit_start_ts") + default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } + // test + actConfig := &webapi.ActPermitConfig{ + Platform: "1", + StartTs: 1719646575, + Days: 7, + } + channelConfig := webapi.PermitChannelConfig{ + Channel: "Official", + } + for i := 0; i < 100; i++ { + channelConfig.LevelConfig = append(channelConfig.LevelConfig, &webapi.PermitLevelConfig{ + Rank: int32(i + 1), + Score: int64((i + 1) * 100), + Award1: []*webapi.ItemInfo{ + { + ItemId: common.ItemIDCoin, + ItemNum: 100, + }, + }, + Award2: []*webapi.ItemInfo{ + { + ItemId: common.ItemIDCoin, + ItemNum: 100, + }, + { + ItemId: common.ItemIDDiamond, + ItemNum: 100, + }, + }, + }) + } + itemId := []int32{100001, 100002, 10001, 20001, 20002, 20003} + for i := 0; i < 10; i++ { + level := 0 + if common.RandInt(0, 3) == 0 { + level = common.RandInt(1, 101) + } + channelConfig.ExchangeConfig = append(channelConfig.ExchangeConfig, &webapi.PermitExchangeConfig{ + Id: int32(i + 1), + SortId: int32(100 - i), + Gain: []*webapi.ItemInfo{ + { + ItemId: itemId[common.RandInt(len(itemId))], + ItemNum: 1, + }, + }, + Cost: []*webapi.ItemInfo{{ + ItemId: common.ItemIDLong, + ItemNum: int64(common.RandInt(50, 101)), + }}, + IsPermit: common.RandInt(0, 3) == 0, + Level: int64(level), + Times: int64(common.RandInt(0, 5)), + IsShow: common.RandInt(0, 4) != 0, + }) + } + rankN := 1 + for i := 0; i < 3; i++ { + sub := common.RandInt(0, 3) + items := []*webapi.ItemInfo{ + { + ItemId: common.ItemIDCoin, + ItemNum: 100, + }, + } + if common.RandInt(2) == 0 { + items = append(items, &webapi.ItemInfo{ + ItemId: common.ItemIDDiamond, + ItemNum: 100, + }) + } + channelConfig.RankConfig = append(channelConfig.RankConfig, &webapi.PermitRankConfig{ + Start: int32(rankN), + End: int32(rankN + sub), + ItemId: items, + }) + rankN = rankN + sub + 1 + } + + actConfig.Configs = append(actConfig.Configs, &channelConfig) + webConfig := channelConfig + webConfig.Channel = "Web" + actConfig.Configs = append(actConfig.Configs, &webConfig) + googleConfig := channelConfig + googleConfig.Channel = "GooglePlay" + actConfig.Configs = append(actConfig.Configs, &googleConfig) + PlatformMgrSingleton.GetConfig("1").ActPermitConfig = actConfig + PlatformMgrSingleton.GetConfig("1").PermitStartTs = common.GetDayStartTs(1719646575) + PlatformMgrSingleton.GetConfig("1").PermitEndTs = common.GetDayStartTs(1719646575) + int64(actConfig.GetDays()*24*3600) + logger.Logger.Tracef("==> PermitConfig: %v ", actConfig) + // test } func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { diff --git a/worldsrv/logchannel.go b/worldsrv/logchannel.go index ceecdef..d843e05 100644 --- a/worldsrv/logchannel.go +++ b/worldsrv/logchannel.go @@ -60,4 +60,5 @@ func init() { LogChannelSingleton.RegisterLogCName(mq.BackReliefund, &model.ReliefFundLog{}) LogChannelSingleton.RegisterLogCName(model.EvtInvite, &model.EvtInviteMsg{}) LogChannelSingleton.RegisterLogCName(model.MQRankPlayerLevel, &model.PlayerLevelInfo{}) + LogChannelSingleton.RegisterLogCName(model.MQRankPlayerPermit, &model.PermitScore{}) } diff --git a/worldsrv/main.go b/worldsrv/main.go index 6a8a383..27aa4d9 100644 --- a/worldsrv/main.go +++ b/worldsrv/main.go @@ -29,20 +29,23 @@ func main() { core.LoadPackages("config.json") // core hook core.RegisteHook(core.HOOK_BEFORE_START, func() error { - etcd.Start() model.StartupRPClient(common.CustomConfig.GetString("MgoRpcCliNet"), common.CustomConfig.GetString("MgoRpcCliAddr"), time.Duration(common.CustomConfig.GetInt("MgoRpcCliReconnInterV"))*time.Second) mq.StartConsumer(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true) mq.StartPublisher(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true, common.CustomConfig.GetInt("RMQPublishBacklog")) + err := model.InitGameKVData() + if err != nil { + panic(err) + } - var err error CacheMemory, err = cache.NewCache("memory", `{"interval":60}`) if err != nil { return err } + etcd.Start() gameStateMgr.Init() HorseRaceLampMgrSington.InitHorseRaceLamp() - model.InitGameKVData() + model.GetAllCoinPoolSettingData() MsgMgrSington.InitMsg() return nil diff --git a/worldsrv/permitmgr.go b/worldsrv/permitmgr.go new file mode 100644 index 0000000..1ab39c3 --- /dev/null +++ b/worldsrv/permitmgr.go @@ -0,0 +1,76 @@ +package main + +import ( + "encoding/json" + "time" + + "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/task" + + "mongo.games.com/game/common" + "mongo.games.com/game/model" +) + +var PermitMgrInst = new(PermitMgr) + +type PermitMgr struct { + BaseClockSinker +} + +func (r *PermitMgr) InterestClockEvent() int { + return 1 << CLOCK_EVENT_DAY +} + +func (r *PermitMgr) OnDayTimer() { + logger.Logger.Info("(this *PermitMgr) OnDayTimer") + now := time.Now() + for _, v := range PlatformMgrSingleton.GetPlatforms() { + pl := PlatformMgrSingleton.GetConfig(v.IdStr).ActPermitConfig + if pl == nil { + continue + } + b := model.GetStrKVGameData(common.PermitStartTsKey + v.IdStr) + if b == "" { + logger.Logger.Errorf("(this *PermitMgr) OnDayTimer GetStrKVGameData not found") + continue + } + se := new(model.PermitStartTs) + if err := json.Unmarshal([]byte(b), se); err != nil { + logger.Logger.Errorf("(this *PermitMgr) OnDayTimer json.Unmarshal err:%v", err) + continue + } + if se.StartTs <= now.Unix() && now.Unix() < se.EndTs { + // 在活动内 + continue + } + if now.Unix() < se.StartTs { + // 活动未开始 + continue + } + if now.Unix() >= se.EndTs { + // 活动已结束, 新开始 + se.StartTs = se.EndTs + se.EndTs = se.EndTs + int64(pl.Days*24*3600) + if now.Unix() < se.StartTs || now.Unix() >= se.EndTs { + se.StartTs = common.GetDayStartTs(now.Unix()) + se.EndTs = se.StartTs + int64(pl.Days*24*3600) + } + PlatformMgrSingleton.GetConfig(v.IdStr).PermitStartTs = se.StartTs + PlatformMgrSingleton.GetConfig(v.IdStr).PermitEndTs = se.EndTs + b, err := json.Marshal(se) + if err != nil { + logger.Logger.Errorf("(this *PermitMgr) OnDayTimer json.Marshal err:%v", err) + continue + } + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + model.UptStrKVGameData(common.PermitStartTsKey+v.IdStr, string(b)) + return nil + }), nil).StartByExecutor("permit_start_ts") + } + } +} + +func init() { + ClockMgrSington.RegisteSinker(PermitMgrInst) +} diff --git a/worldsrv/player.go b/worldsrv/player.go index 6bb4f45..4e30568 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -144,9 +144,10 @@ type Player struct { BuildVersion string // app构建版本 AppChannel string // app渠道(玩家本次登录使用的包的渠道类型,换登录包,这个值也会变;玩家model.PlayerData存储的渠道是玩家第一次登录的渠道,不会修改) // 最后玩的游戏id - LastGameId int - GameID []int32 // 最近三天玩的游戏 - ApplyList []int32 //玩家申请好友记录 + LastGameId int + GameID []int32 // 最近三天玩的游戏 + ApplyList []int32 //玩家申请好友记录 + TaskInviteList map[int32]int // 邀请好友私人桌对局 好友id:房间id } func NewPlayer(sid int64, pd *model.PlayerData, s *netlib.Session) *Player { @@ -164,6 +165,7 @@ func NewPlayer(sid int64, pd *model.PlayerData, s *netlib.Session) *Player { thirdBalanceRefreshMark: make(map[string]bool), layered: make(map[int]bool), miniScene: make(map[int32]*Scene), + TaskInviteList: make(map[int32]int), } if p.IsRob { p.RobotRandName() @@ -265,6 +267,9 @@ func (this *Player) OnLogined() { if this.CreateTime.Unix() > this.LastLogoutTime.Unix() { isFirstLogin = true } + if !this.IsRob { + this.ResetPermit() + } // 跨天业务处理 tNow := time.Now() @@ -1891,6 +1896,10 @@ func (this *Player) AddDiamond(num, add int64, gainWay int32, oper, remark strin } else { this.Diamond += num } + TaskSubjectSingleton.Touch(common.TaskTypeCostDiamond, &TaskData{ + SnId: this.SnId, + Num: -num, + }) } this.SendDiffData() @@ -2176,6 +2185,10 @@ func (this *Player) OnSecTimer() { func (this *Player) OnMiniTimer() { FirePlayerMiniTimer(this) + TaskSubjectSingleton.Touch(common.TaskTypeOnlineTs, &TaskData{ + SnId: this.SnId, + Num: 60, + }) } func (this *Player) OnHourTimer() { @@ -2221,6 +2234,9 @@ func (this *Player) OnDayTimer(login, continuous bool, t int) { for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypeEveryDay) { this.WelfData.Task[v.GetId()] = &model.TaskData{} } + for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypePermit) { + this.WelfData.Task[v.GetId()] = &model.TaskData{} + } } } //周卡数据更新 @@ -2243,10 +2259,36 @@ func (this *Player) OnDayTimer(login, continuous bool, t int) { this.GetWeekCardAwary(id) } } + // 赛季通行证活动 + this.ResetPermit() TaskSubjectSingleton.Touch(common.TaskTypeFirstLogin, &TaskData{SnId: this.SnId, Num: 1}) // 首次登录游戏 TaskSubjectSingleton.Touch(common.TaskTypeLogin, &TaskData{SnId: this.SnId, Num: 1}) // 登录游戏 } +func (this *Player) ResetPermit() { + permitStartTs := PlatformMgrSingleton.GetConfig(this.Platform).PermitStartTs + if (this.PermitStartTs == 0 || this.PermitStartTs < permitStartTs) && permitStartTs > 0 { + this.PermitStartTs = permitStartTs + // 清理数据 + bag := BagMgrSingleton.GetBagInfo(this.SnId) + if bag != nil { + delete(bag.BagItem, common.ItemIDPermit) + //todo 上线前删除 + bagInfo := BagMgrSingleton.GetBagInfo(this.SnId) + if bagInfo != nil { + bagInfo.BagItem[common.ItemIDPermit] = &Item{ + ItemId: common.ItemIDPermit, + ItemNum: 845, + ObtainTime: time.Now().Unix(), + } + } + //todo 上线前删除 + } + this.WelfData.PermitAward = make(map[int32]int64) + this.WelfData.PermitExchange = make(map[int32][]int64) + } +} + //func (this *Player) OnTimeDayTotal(continuous bool, t int) { // for k, tgd := range this.TotalGameData { // for i := 0; i < t; i++ { @@ -3873,6 +3915,9 @@ func (this *Player) GetPayGoodsInfo() { if info.PageId == ShopPageDiamondBank { WelfareMgrSington.DiamondBankTakeCoin(this) } + if info.PageId == ShopPagePermit { + this.Permit = info.CreateTs.Local() + } switch info.Remark { case "BlindBox": if len(info.OtherParams) > 0 { @@ -4630,3 +4675,16 @@ func (this *Player) AddItemRecExpireTime(itemId int32, num, add int64, gainWay i this.SendDiffData() } } + +func (this *Player) GetIsPermit() bool { + startTs := PlatformMgrSingleton.GetConfig(this.Platform).PermitStartTs + if startTs == 0 { + return false + } + endTs := PlatformMgrSingleton.GetConfig(this.Platform).PermitEndTs + + if this.Permit.Unix() >= startTs && this.Permit.Unix() < endTs { + return true + } + return false +} diff --git a/worldsrv/taskmgr.go b/worldsrv/taskmgr.go index 08e8153..15cf8f7 100644 --- a/worldsrv/taskmgr.go +++ b/worldsrv/taskmgr.go @@ -246,4 +246,11 @@ func init() { TaskSubjectSingleton.Attach(common.TaskTypeTurnplate, taskHandle) TaskSubjectSingleton.Attach(common.TaskTypeInviteRecharge, taskHandle) TaskSubjectSingleton.Attach(common.TaskTypeLoseCoin, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeOnlineTs, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeBuyPig, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeDaZhong, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeInvitePlay, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeJoinMatch, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeMatchRank10, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeCostDiamond, taskHandle) } diff --git a/worldsrv/tournament.go b/worldsrv/tournament.go index 3ef1854..c024b58 100644 --- a/worldsrv/tournament.go +++ b/worldsrv/tournament.go @@ -716,6 +716,12 @@ func (this *Tournament) Start(platform string, tmId int32) { // 开始比赛,清除报名数据 for _, v := range signInfo.signup { delete(this.singleSignupPlayers, v.SnId) + TaskSubjectSingleton.Touch(common.TaskTypeJoinMatch, &TaskData{ + SnId: v.SnId, + GameID: int(tm.dbGameFree.GetGameId()), + GameFreeID: tm.dbGameFree.GetId(), + Num: 1, + }) } this.signupPlayers[platform][tmId].signup = make(map[int32]*TmPlayer) } @@ -1521,6 +1527,12 @@ func (this *Tournament) MakeMatchLog(platform string, tmId int32, sortId int64) Item: items, Rank: rankId, }) + if rankId >= 10 { + TaskSubjectSingleton.Touch(common.TaskTypeMatchRank10, &TaskData{ + SnId: v.p.SnId, + Num: 1, + }) + } } matchLog.MatchId = tmId matchLog.MatchName = gameMatchDate.MatchName diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index c21e466..32524a2 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -4124,6 +4124,9 @@ func init() { if info.PageId == ShopPageDiamondBank { WelfareMgrSington.DiamondBankTakeCoin(player) } + if info.PageId == ShopPagePermit { + player.Permit = info.CreateTs.Local() + } switch info.Remark { case "BlindBox": if len(info.OtherParams) > 0 { diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index d5891f9..ef3a45a 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -1765,6 +1765,10 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { if p.Diamond >= costDiamond { logger.Logger.Trace("开存钱罐消耗钻石", costDiamond) p.AddDiamond(-costDiamond, 0, common.GainWay_PigrankTakeCoin, "system", "-开存钱罐消耗钻石") + TaskSubjectSingleton.Touch(common.TaskTypeBuyPig, &TaskData{ + SnId: p.SnId, + Num: 1, + }) } else { pack.OpRetCode = welfare.OpResultCode_OPRC_DiamondLess logger.Logger.Trace("钻石不足") @@ -1884,6 +1888,10 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess addDiamond := int64(math.Ceil(p.WelfData.DiamondBank.BankDiamond)) p.AddDiamond(addDiamond, 0, common.GainWay_PigrankGainDiamond, "sys", "存钱罐领取钻石") + TaskSubjectSingleton.Touch(common.TaskTypeBuyPig, &TaskData{ + SnId: p.SnId, + Num: 1, + }) // 领取完之后 设置为0 p.WelfData.DiamondBank.BankDiamond = 0.0 @@ -1954,6 +1962,7 @@ func (this *WelfareMgr) UpdateDiamondBankData(p *Player, coinNum int64, isWin bo } logger.Logger.Tracef("玩家更新钻石存储罐数据 snid = %d,coinNum = %d,isWin = %s,当前钻石存储罐钻石数量:%f,本次增加钻石数量:%f", p.SnId, coinNum, isWin, p.WelfData.DiamondBank.BankDiamond, addDiamond) } + func (this *WelfareMgr) Update() { } diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index a95651b8c8f2a5e40c3fc88b2fea071fb7325454..b6efdb70f7a303288e47c9a07d415389b49c8c01 100644 GIT binary patch delta 18442 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
    |~puwUr|^ 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 diff --git a/xlsx/DB_PassShow.xlsx b/xlsx/DB_PassShow.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3641ac2014469a083ed275bd6f90610a88d66ce6 GIT binary patch literal 12337 zcmeHtWmH_t5-#rUlHl&{1oz-B!QI^h!6i6>;1Vo&g1eJJf@^Shcjpbsy(cH!d(V1* z-&(JK?3vk9Ro(qncU5&)Dae3Bz=1rq5V;k>r_X;kSl}09J0k^0J9{Ta1t1v)@CD3I zGAET(S!qxZ5CKd`ad!mFXq>fD48ljU~;Yq7T+d$ zj6s>j#qfnpM%(XqM8dbHBqv84J{rALIp)IrgZ2gD)i_hPOBFy0}~!w*5KfsT`{@u+2X^! zx$R+1r0uN~79yl?%Mxm8L=TG#6YeZzkRIlMT;+~qdHvxnTXl^w4nA{GT56ON6=f8B zy3?*We>*w$ls6a`QErIS7ahlb2gtL2MAXt4CF_{=$U)0@7&t6FLYe^G%;T6I*6|7K#2&HIJw%`KRd!}sU z1(*@-gi5m-i65oG5=(P)7-tSampQM&I}xh*wt(tRFe7Ecz> zfP7`?LnUVuL5(&I{SIq@+dnl@WgsYpC=Y5RS>&b*yX(yQJ*W7ual*C3R z-!iCgWnnVQU9L@TK%b!f?{)|r2(7#IGYiyvegx_S#9sYh76?dSWM^YzV(aY0{1bS^ zA?Z%07cKBDBB4tIdGq;O*1ShdD17e2(4jUpSd-3V4zK0ILsi@yL!tTih(ej5b_|%( z+bVK^=P4#ECSh#I=1050n@iY9sl}k zYt^`kD#R7#XrultKp$dY8a*9e9^nQ@ARze9C|zx=MSpQIGXTFwsw~=# zF`@XBcRiwbl<%iNHTb0(3kS4-q9Gh})rZZ_ZCsJursUu5y2&YNkPE&aKXcwZ^m&^Z zzu;UQrnS$PHPE%ff)!f>nW*oUeC1J_(Tp8SX(D4Xyz}}+H8$sUsuZ66U8U})zODt$ z?f24CeM6R1FFfZ)OWL$nT;YQfi-^oI9Wa?YQq;5X_{^t>Gb4J3k=od&#M;J->&R;_FlSat;JKp zt@kYFL=m``W<&)mPYKRA*opA1y?2#M$f7@YS}~$X0{sA~RSXZ;Y})Y^Q*isP8|K>B zF=cC=%?FjT|FkBA4BKoq>YiJgQlgTwnZ;9v#nxPG`s}gVk@rjGLZ(jl$KJSr z9M&{VqzviKG7=BWENH62IKnc<&Jip=>o$;=CXgnD`_iJ?O!lquj0=45_+Q!@)O#$&#(15e@*)~wo8qFm^fBT zckjH=%iPy<=-%U{&LnJ;sA>Z}We(kznRsLBbzIrKSbvB6zn4AIuf^BIe|*Ulc+$d>`ONmTmI;; zl%mjQ538&p&eLl(;)R9HD&o`kVlW$wpj`dYX_XNRF4--HIx-AT4mjQ6P*2%$l;03}^)WiAO&GzMvhy3K8Z-fyEu`(c5<~#H*TG6LAkS#@v`W z+E&ovmVJ*M#c;LGmna;j;`O!Xt;9Y{f0)4bdNKf8P(3_>^}2%54yCSZje~FX#(c~M z#_!d#it4&*-pR@*(-CR~_ssy^g9NPWa0~HGRxj|O(aa&VC{;Ffd9qy8w+IErsABci zSDo2P>HH(smB9#xh_E$qcBjGbWVAsPKt(5$4pL5fH%PjaDi& zPQmGjMNUmZ=L;S*X-uO+O96dQ2a8mloPPENV(9{BX7_qZqr|@y0mMBNX}) zDWrQpXJil5TftnWrO$D&ZE~7wHsKC%Io~ZY2qrZv8HpwR0O7Z&X19nzdLyz08Y89{0cW&|W_ZjG6v-M7Er3;zctVI_%U-C-CNlh&_8Kw;Hqve$| z{T^89Nbe2ou~GLv)i;lZXT;5mp$x;Dy#QD{6BqAShR1`JmO&1i!UUSqN}Uu*a@uc- zsj|_?IW%}~WYb?4U`BV3KNRXCP%@_;ctyJ>;pwHsZKA`ljgPG*M`S`zzncu}=r}~r z;zBE4A=lk%tRi;HU?1)i8iP7#oKVm^Vb`-RQPv2WAK1;9g zvoK%P^KczV&Xmth8qV9nH1o>kdQZN)DlM#&z}L7|B9=?;v9SP-7{$Hawpc813@NI* zrK;0X-V8TXGKhbqZ+DD1G zyFA`smSyqdu0lW)Wrp*Q!x&LlHmAR24m2QRs6Z$^$!Gm-dket*(xtt-kmUQ zTv=i7St_==l2N3!RC{rcXM9x6?p>f|p~{P-8(=6sx{b#Z-d8QhE`c4xoD-t!-mJVs zP~~)m25C+8IWHflQpGbYG3z$MZMj%jkxUA&$0HbE4pU`AEDehtX z9BgPKDT^ISOqpyQNN5TJXHa-PaeAoB?~B*u`LK4kTzMKIkRjmd{BQ)F(~rt0y4{84 zeLYa%>wT_xbURkA_v&FT8k^(cmr{`;thfn|rsB5%p@SQ~8)={_yxP^#39)Xq* z9Prj$7`}?{Vm&?Qa(D-b7@=5Q0MSu*(nLKN8V&Pxd{yaCi^6k0FfUvfKQl-dP$uO~ zqs{F4oiCdz!Q5Y&4*Wb)mifZnEgFTg3}D=otZ#%nM=FGlYA1PPyo6#w?JSAb(?4fM zlsgkPaGaji`*~=Wruka#&g+mlyNYrXgAlg)9_!0ZL<7_3z%wCqZ0N6a!4j(9vgX@mxoC_j zNT%3Og}y<&K<9CYYPEDQ6;FZW+E^~MU^gW)q7J`~$yJVw{$nSYJ5Pnp>+u&{@6 z!=Mp1U=r0NebMQMKoF0xLN;y+IRdL=gh0;e@fN+sSf_^r?Q3sCew^k@G!kZHDk;3> zvffxJ1X*^~1)9|dxe+diVsjsQE}ikcRs~LS`S~VATfdJC$j9yxA)}`G?4RoNbx+kg zO$AeR`FP-=oWI!-XIWCyOkjjah_)TK;(?}*!|SN4(t4aThP|+-I7Gv}H2lz>(3uz& zWR68D@+Qep!~~mSn@wZVzgSnjs@y8WfiE8grj9$1wgY@UGzH}VS>ni%+Luq!M$N1G zsJ0|c=Un|e{&G;0%Z4i7JE!TQ!~B(n>6MOS6NaL5rD{pBZAW8WT}sT0iS%#~t^#2b zGcbR}5AXbTd$2dG`vX!xrfCF(X~Egx@$Bj#nn z#=$b4^Lz48#2##xb_!`g&LgKma?Ql%(S^jh;v;EvD>eL z(;dqYl1!8~y{fZn8YxO(a0PSypbl1(_MKT)vk4~GWX5rv-Da7{z8$gLYNlo%AWdco zUrp<9yK4hFt&m$ZU60Xhbvg*Srltumvf6ziUn%xjs{aVt26dU;U$xxlBA&l2SN~!~_jj)jnt*czDC&d7H~2Hj9(6 z);6!fuWtvXqR@v>C^MqQuPzocPg^!kImc+q?OEqMR+bz0hc$ucky04C~+vH6e7neyzp}*QnAK?zv;A zM0hvPj73gxuJh>dPCvWkd18_sUa@MGB8=Po{l36X+t&DCsl_v2HarX-U0;2ui|qaB zcIpjsnft+mU5T>I)DWc4o-0$NgZ6c84R&tcc3bEEFZET=Joy`q=*>T?gtxc=#1{(t zOM`iL@bC4hT$*C>*-ZFb$YOcR-IhO*$aHPhOhK~S$}Gl|y*-_&9<|wKcfJb%^SU@E zjBZ-02D@&T_uj1`!zNXv({ssSB)&QP7~Km>Yr2d@>#|HyA0rKGqZ_8MBWE%A%F}Pv z=l;f#^xWeCzR&PbY!3S%*p*^I@6&7M2;1V3Qyn~G)c~p-+R|@F^xIL}f~<-Pfjk+j z*GeGfAylihWj|_r&{t3OTD>1o1YE3dM9j$o6~;!`=R`XwZ#h7)-q4}pVke%hc;DQu z{>VHSdgaS0MF8*ZDWA$-YU(n-}W&?%Uvrll-x)(_{$j-t_7GD&V9=F-*TqUF}p zP#MhSR5z^Dt2DaOVVcKGg%F_5KCDL*OC116Rv(<Ug2lwGg)+p%V}B>`8(EwQ|tIxK0M2{n;2uq=j48wn-QHR8@3lM^O>@0SBMt zmKE{cKyzL|Qy0vOJ0f@D*UVPS(cz%0*w>c#P^GEWi)!w>zPxn?uTTMh;4qqsWVxA* zC~;kHGbgkb$0EvU;MRopIxlg+F?|uSi$IL?J{Al=vQCC~!n0XdnWkE+w9Kk+WBsF$ z&zs^2TAI&_eRxIhFRX}Kv>2xPq~A;=lqd^Q`HGk(uI~pY$F?Rgv7XeTna*AJwXmz# zyf77iQ0w^KvnZWZj62oDWT8^~w^zr;Di@`=STHqOskqnLu&kuMv<3?b*dUWiHF*DG zd=%)6fKFyA;Xk`$plgy^Hbm3XBl)O>2-tySiaOiRF*?I{2WKlf^9NBY(uypzA@C^M zZZly16zYRYPB+~?qoa%zWne>}5{(31=tXlQ0+|&`fM}AN+jgVxqJ;KtC3b(VJ=yy|fay7V+ZxHD^Hbs|q6($N52&#_CeV)UhXVsfU#j-nOFd)jOom8*&Nz7XYO zta#dGm6wNF^=L&bk(kuq?C4zfsUM93@dG-$mFg6*QsXZ{}ahB?weOX4&0J9k`Q+!;e}YamXtiT6o~ z)>1R3+i|6n43U^WchbHRQ_uj7<|>v#Mbbz{We_X;i!w_T+m=v*|Lbc0yrh#s>S|Sa zX3Q69BK(lJj$RpH(J=TlWbNeAxcIMKrIiK(=#sE8lS!aM*sA*Ddvz~zSo14$m|PH% zoQlYlXO@@>q*;+P(jtfS&m|Jb_0LTbV11Nay)$!RudNP=tV@}l>9j}&K9*U4 zzsH^)@7-;!kPA$J5A0(g`A;5>6|H~2#CNdStuE+c=#7W;G_@gUW_Lc$^VrUH`@!zn zrdE~m{kz{FDZ`3DWKVKAOSyHlQkhX`wh4(GJ2DDKPZ0;PFJ#OBWOPyprok}-q zU=nj9?Nu|TLm>HChP5(*fEUNx6Ate+;)pnBu8Nn_d6I@uw~AOW1an^3ckNdnTa%hE zXG0O#8KuQ_d7?Pn0v+=oeOP=hDnmht)6teV6*ktJZdTz@SgyIS{BQU^K()#-%d?s~ z-}-Ea#IlVeXMb=HdEg^gjLsHn29pk`^a$S76kTE!xvm>>AoImc79PfK?<9Z=ShJwi=4dSHW?=GA9;Bt4s8^4$-yYT2G z8X^rZBC)`pG3I>I{$sCGKorB>=RGlMgYV56se-NJB`hN%y*|@QpRhNI0~()nOem!v zj$g;;AklaEF`)pM?*Ou;py$+n zYkQR%aM3V0!eNqwk0(2KimyA2z`n79#q~BpgrZ)AK}D#Tdd^t?Il0sL)OSKB#1LJsA9&tZe;aoX#JLgA~=*b9m1O*)MrJvIF$ zw~BupU5x}@6_%KG8o}LAgV{iAbnPpx`#~NO!sC#6lA8wbreZLy1rVOTlRASl>D(lh zP3lK$7XHzO8sILA01zwb3WJ_&V@6qF9ijbz7_BKA`a`r_frHPHo!Ai_NO#mT5!8dJ zPd-?J7p-}PF)sE6_%11k-x-V}OgG!weXXNR5j0h_yvw=`(fYHCfh&ePq@nN*;tdHF zIL8~Huo9p!Qx{^>zl6yG#{vFe5Q#>jzJ&QsV+&Kin+3&?<7f9jDo`qaiA@aZc_Qp2 zt&ND4kuV*uMji(II2zopvqQex(c*VngQ#6el}#q_#c%x%I)a?(Io7fYnIxv153tMn zXp)r)hEpr&&l!AV3x6j~x@g-cz&%|&d5Mfrtw6g!0oP!f0Dpe6;FDcadwFpg=_y5D z?F$zxq*pP^uXxt~mcC4dak3YCU;j(tR-*`X3-xBmx8T0T+^G~6C*g648Ehe&69JA- zToJ8RQ#a2pBmB;%GhJf7N`nib1bel+ zan+1=>{$?#c%=%Xg1L&{uG@a6pBv2Jbh6ZK6DL-crWY-NfW`8IAl$6G!YT`eVNQI! zJU(U3X_zVtWymJkWk#J%*ARVII7Ekp<}f2LGlP!$wf#E=0Wqow(a6NERd{I5u$Z*y zpw5Aelm*hD0^sAj_O#nRT%@mfk~FkTxa%N$aP{bb#!=k&B+_pq(?Xe)a+*IcFHu^F zsnJe0TX&M!(e!HdGM+`sJNix#CLWdZor>+N?HXm`A#IlJaa1a@rZ5b#$2;7zSy7&D zEW7@o*Ug;0mOVT|&TOGy(3?4)2i&ig$1mI6p#K?(M`HuPuYe%&Lx6xF{{reMQ(|am zXZ7;}Pq{s6h6$xveMdl}B_Li9%O8fe0>vfIBsH>P z$~h~K)VsWyqQ2e?&Y>YY)4k(;X7nv|<&^$8fa_F8=z45~N6YE)tn4(dVJ_l;5smSn z_g%7uH?PONrH*vy~^OzSIV3+?=tl&r*+3uY#g7VarW>&Z-;qdCh~apOPST95C2c zAym}9z|I8_;&j!Jq!G0vVjK~E0xjpsf`(y;MmV>4O2Q#N{R(635S%}bL5o~wiHh%{sz>ujW&ymYLw z=BbwNqm!>UQWw3A8}a9fbeZ#`n*3c9{RQoMTw4^6yxleC{UuA9C%`>a z>^mSDcTNm%0|PerKFlzX#lG=Y8fFRMrH;24*;Y{y%;aSkE8rF|A`ReZwpFn0I}!hu zNuVIh*S$a!>eUG4z!lVVZD&`sJGjK3oFg*CO1q{Ko9<#AgBcOvoip8vaxMl1#XaQc z@~Z#PO**8c)RZ1kOeZKwIeczir`3Tj8K5Ia7*3uwa4k4Cw%O4hJEC3HFUb=~{%QA- zj0MoOmgw<{T~E^SgudAAf2St@b(Q+x;3T>_z`X^+I1bFH-~m5@2J9Ev-*@LvberS* zEjyobDnSncNpIxp0eCrM+X8p!M`*67J9Yo09gY9E*sY$)4%UC=brUaDb zhED$|1`Z6s5Ppa4Y~`-ChOwUl zfSu{FBvMN7viCX862Xf>+}g{m;4sMzOTvB(fgL} z+?_%OA(b7s+TWDhzZPb@C+HHQq-cBH{5dD7Z9rjJQydyJ;7{~OtV+5EpHeg7NC z7KBpWLqKrrfCiBC7s&s?@jC(hYc0q0T7okp2p$5_9^s#SjRXv@9ASfWL~cMkCh44; z^y@87E?uaC5Fk9a6=%odYZ~8YP9#^pX2vmh0S^y|w1o@syBwR{f&7307qx*i-If69 zI)6HL(Zia+L$>-sR8<-U+=zM`Q*o~+Lln@Jt#*^dpMbXkiv9x`4`)iYvfX>=oo%}c zv>6fM9NzeL%FagXkFST6{kP@<{2?d$kQw()Luabd#VUQ^*x*_@x4pe@nkTBUkG?A3 zX3BBgq?XY|_{5i%JvLe_tt`%S{^<-lBA0jG1F^UVZt|!5duTEh)`=1ajIT|upzRvQFKh;*~XsO{$C zgRkl61r%*gJR}5N+JFY7O(jH$bJ3Tvh__LC+R=3FR3&ILnmyBaF^D&{oXy8G;1nu0 z%tjs&4`EIpxN-anPxZHrSNu_9Z96}B5t|vpHO<-z*l$}y;A?*!*S}vtp)f2nI;r>s zz^8=I(L8DLC>J$(?OqN~O@g})UyMXV&zX#Y_95O$WR!XWIY2`R;hQfc#IQ#6m&h0; zlXbAuj@6gze8N=nQ4-UW&B})&*+jTuD2svFS!u!%{--_Ej-FcU-lSQ3gNtqPR z3$%3xEq7aa;JomXv;4a{?9|zaO&ziCxx?e)EBEu$9ba$-8Bj2cpV7^)a?t1611b;% z6od%)bf@~Sy8I>Jzh`-#%>1wRR9PBB_S@+H+39n$|HSjF)2hFCer}w9>g>r5{%TL1 zJ+;48y#CqW^P1Nu;$Qty{+;b#6|m1CdS1Etn>!P@?EmWY-*ueN*`Jph{${5Kn(5!{ ze-$47)1-kM|7uT@4h6$*xp4a#N zmQ(m^ynj^t{nOx|iqC$vr`bvamltrhe=9}%Q_Ihb(VjSejofaKUv3^PT>*D&K=KrViVu2t4=l|~<>YtN;o<;rLW8L4`e&bT&+dM@R8y~A%QUx5qz&x!q%^0V6I|6WQq e5b6IS5W9|#cKg1cLSLkRBf?he87P4>RKd+&bpqvv#= z?&_-Qr>g6;6y$@KRe;y!f&+Ti`7mt2!N8m$z`)SKz`(3rE!8|+-8@+>T|KN>{G6SF zQ&biE+3=z-!#4}|HmJ|PPE2_}MduK~sbIO1`?o@8HBn7F^Y)@{%U|ti*P6WYaNHSY zw5+bF34Q%;nk#atm~x?I-OG%}=(#Sg9+3~mH5oNmgd#wC*T;iUWeG5-V_KXN=d3Hs za&e{Z$`|5wbGU(s1DZjq&V0Tpj2N20#1hoiIm<`r-wcbLH~rHzm`!20hd4y3B96E#7*%!>ur|$b}Nxq#hvEW*f-fUWo(OR z5?%Q)H>&NUSFLMmYP()0Ehxy(Qo6n|dGyh+_^E?%=3 zsycm%LZy!B*MIi^{eJ&?bM3 zd1H%(nI?(1R2b2=uXF#NS}j@@HT->`4LhYfX#jGj_!=eN(2;0>nyk8umsIWaA46YJ7OEdw?;rFND6>s1RK_eOV}6Gl)&-mA$#>t^Eg8+JbH)cNqC06R4D^4 z)@R>YOHPMad>V~OCVuwc<^q{b2akx`cp_5xd%z(`(v`d;*7mpTJFhXf@K;A`h|~7? z`8*&$58i7(}dVLhAL->UwqZLBF3+@QipO4)TY z%hr9Z9*(A;>;U|H>bs>}$_Ae66jd2w$erL__sKngT?f}%%fcYt9E+N&kY0g80bOM` z!>OXK;-{?=#}o17mh>)Vp2W8F(Z%(~{h5u8?k$@S@}lS~T;aelm76NE8`03TE6-J< zD^x8wN}+u_d^!ll^w3~ngkV5(Wn!Q_3<_WhuOozCjNAL?Dv$kX)9@%bZ5#Kuk#FS1 z-$NF~Dr8o^Qh*w82)=O)Q zxH+qNV*3e^;BpE*l6{_y{jExyGI;H1CM+6xh?)z6htQaTTyZW(YP63=?*&B*F>oJX zFoly?_D)PUpFT zg)+VQCkn&t&`(u_mfHo|$u%AiOP(Dh?ECbe6u@---z0#lK*ou~exNi~QAuilu8u`c zp`2wIe-%=QPR z<5Y*{LM^q6*AXsu{K%Wpx%!HHL>1UO*0E`u^^s}>0m@u8%PnpxaP#~i5$&QoX7|HB z_pxQ0v8dv0?z_1|vX2U|0g$i&m~{`VfG+krTyDNM2%Hjq9uf;!I(7JORL8miMLdln^boyjnb?%tmJ^6Z*t-EOcE{_+LrLRPP4-(bwSnkWj<3P z)knO#ui(IGDFWa#92tt}fw8;-F&NlwJ{TAt81PyZ8`z@?4M@u|)THDGez@ed_zl^+ z@8T3O-d@!CJ%a&(wC+^u@}e15iI+W8e>d~};N`xuVvOl{oN3vH1?G8NOQ9r)K`{k2 z=-05QX)fx!LCt2KPOT{_Y+eE?>gU?W%IMNXQd895FE8T&V-k`sSDaeZPlxlTH>ca1 zKOg%6K`)Ph7r>2U^ZV}Gp+`Hv8@kEncarxtrwtKO;_l7gM&Fn=M5{MG*G}BD8GL8r zxyU;umA!O5-QOv2zPkzH5)u&+4bT_rCeetTJPo#}A|cJYNMEdc5jFi>ONh{5BErh! z@_H$nx3NLJB1-xY`&ei4>aobM3;)4S`7_JL)?D1>{xKk=JHS-fMP$9!B*D(^fuS~` zW=p{ILODP8M}U6S@2A`I??zj^zV6>eg+-m;U08Ktn%189zK6U$-<_Vn&Au@vQe@=! z4o-Uj-+z76?>1uP`PA=fx`LE?TI6a)gEiOOcZ1Ipm#5p8mGOkSyHge|?lZdq_qF?uf-xdVd$NGkK`o5%9iQ8a+N)8?75%IA3YH zyFZ(lcM%Iyn)l%xX}vbr81C_RM0)AL1iz4<{wvTX>We86$y#gU#5T;ho&bP%bYb)D zRr)-Y6EB3IZQIGwYcw8|V*?Wt`%O!X9M2ho3p*WBXRirbcW{>M(^NSSUk2g2zv-KZ< zV8M5fyY$MK$Fr2WPyMBy`1y(}()J4an2#%T_>2jKEMsW>Yj_02kWT0SrZRGVPT6O~&z&Ol?^MB`exQ6=+R3_Lm2bxq%s7 z#$k>ZCTXKqS?tzDr)9g=Wq$1!x9T}oXR~zUY`V@<$r^S%heXniE8EpQbZP|h`shm3L0wioeY=Re5q5$GKo4MlKoyhR zK#Kn|{->8+9lPhCIpv(>Nw+CPWW4z+88a=WgjRf7DIuQmBlw84gR* zypBI)A(Y}Y2ue5<#$zu}C+If&bwcGEJ(j<>B=K4nx|IDzROvZLOL$_0HXQz6BXrD$STqCR{_}eebT|#EdvaC?`2W_9ME#U0QZ1B+OkL01K|0DU;Hj1dv z^|p$hRi)xazqz5zyaFS5k%HK$Osm|*6Q6qP6ZcEgYRy9vh2?(Lx$1lhAsY&o9A!(c z=B(x54jy4;xcHE!FVz-oWtdss!$1e|S+%-NarV>LSbPd$37dj_>L?w+yG-mu*6uiJ zamG6Tu)}nEzP2?L_UQuCC(R_AZMCbOrjIwM>q`#OIr-Yc{F?PHssi!0cr-aB zax=XSzzG|L=W=BM9^FR(FDgE;MlCN^Gs7!3;G_gUP<-YGW0J?IwqALYhII)6m68Cl z;dzdi$6@g)wf0OG%k~LOmbSn0V2AK25yhB*Vscf)yiLw{>OE(cw^L1{iq2SvMeyh% zcJb4K0_W#&tjT}y=$#&(IOpq;UR4>8!BtE13s6-_>&38eu78MTzMvm#MO?*m>h!fL zZ?($OGsn9@VnKD@!EAI9TK~{zyITdrYF&3EL1)>A;cC{uw7wWm7G24l2eq*cSEq)(wFje&8Vj2zP|u89|O zk40X0F%PMy>VO~n)Q5%-imf1*3SU;BpgEdg5ZORmn4mx#lT*jW7~jrIkdBO&Bq#iR z!FTHXRZjppY%8HF)v)$I6wv@)E={~>dn{sQQq<#&Z{Os~q)IH-QJ|v1$h0R;RD zup}@FIXF^=q-M7=-uuTA(=ZKaoupar9wwuc#x@P?X$pc44s}MWwf;R|kzo@t4RqD4B*BmzPSf0r^}O@ZoV1JZ%nc2R^8xh`_I>fm5YTU0_n~C# z0hMeVz%p_)uDE=&y@kquLklkQXF_M*BTV=jG@Q32)%c5BkhfY}@&7S8*TS?bSAQZ# zUMx^1o>1(5*=Q4|0|^x+LpJtMaB8X%a#|G2Wl1mhYfYg&?LR|@)wcW&2MySpz(Sg* zq8`sG7lL+p)~xT4zd2>W-Z99QK$w^d7q%?LgXTgg5F_VG8M=w&JM5S6CDsI5~WE`e}#G&=svq*LLM zL)oqM^zoj`PRG|Agjg&$RI#vt30oq18Stni3o|;gMg}g+kK;(?7CkxxV#!?hB(%uH9G;GJ|8PN*@1Jw?^}qk%$G-JJYeNJRpZ^?3IVhHorj9ms zhJtbRl~nN#4t|bEj!&2Tt4Jhm!KqF$ejqqJkuX)ST$Hn(L3x7)GDeD+tv(CyOEubv zF;D!7itjH?36Swb7J?8qj-v5-ln2lgd?+u`D)%Z6QLXlgke!~%-k<=CFz{ww7FR|bPSQdUp zOFkDu*}i9Uk-`N79KPT86x`)q_+KrJWixcp%dSkQ*8&MNX;j{b3g+FgzMMnHuR+Iu zA?Lx}6Di-Xdr7pBT{lVYI!LlbbY&+6isgKXr@9NJLbr9nSmUacq32xz$ICT&XSjX;rHepcTi9AC?cl2Zl}yI*6qij566g(DUdqgd@NcmGcD^77$TYD z^zGB3lBu5kx`Rb8!WC=QECdu0M)YLd*ZB{gFlMz*-_nPi-7k3t#^cK_@~G}&&^ZBG z@ft2o5qJa)0`w0YAF;?kNDjo1bE0{c<2YKL^`c3Vhh`}5bM2$m6ZDh6ehHun{xEP= z;z!?V@*fXnaU|t>Ng#P49JUmcoJj>rC71hnsTdJb4Zn%!Ju&|VByNw*P}g7j*Y zyEW3X+K`LEW1qwOsGhh`4~Q-JJntlJp+%e`!0Xpvcgv;&{rT+u@5bXq|}!KUNW zq_Tt%nh~7NCkuM)JURXfGc zA<$Y+631Q1+vus+Xys)}#j^DQ$VVy~c>7v>9E;Bg&|;B8Gpf;}W0;(}=OOzjQNYGUWP?B=9eupv@W2`QH#upc#20c zF_^mVmRHG8s(dk=7!d^onqFXw44zTFpgAL&Rf`PBR@nhu;cjpLpBPjl>z$-}=RBNY z)H2u!RCi$EG59M4<(|txV-*yMN)c;DMceLbo=>am>c6ClbZd+@#58t5Kbl#%E9|S%{ zaw-j_ornPC(DnGFiW@?kT^%E*k(uYdWjd*T+8}U`!DA+(D2|fdpU(Kn1_~zs6aUL0 z=8#_~Beugfl?Bqe&(>w(c>rBc_1#03~!TKVE!P$ zDV{I#W%}`g!1Z1cpCnDzlBNIZ?=dg4mq{Bh^BxIkg+(SzwyGt&Y*==M#l@%FZSK&k zq+@b`UIG!B<$(;s@%I9p@s&9D_5?bv_8Z6%_C^V~!QZxlOeMbEs3iSw?%cfqv%lM& z+;?a&81VRcodBA|#c@xk<$}b?lw0HWbMB3~wI0)%Mal57!u(ey3TeD;G%M|(_&Vpw z1vrDO00|wi0hjnCdI&k&`%n=15A8_*u*6V4E|G>hkR_ruBg?BmqL$Hiad*6CbFtp> z{9K#0arByYjvpHy;+spb#Q@yHs^~g|C4mqkPDCMrruXt7bCmChqz_Ks$qTX`iJW=L zf#3j>1CMx4J8y#-NSi&PwyOI0|k>q82A2lyR6D3;5kY%5|!#=7Ra9Nc=tEOgEQHZ2Kusf z!q$}yD`5l-m`!hDeD)|hue;;Vgq5Q)d27noW*3xj>w~6BN6vH@h;ZytVl` z>KYcSP7eJe+-{pn-u~8H@+-^deXT_Qds!AOyl`P#8Gv31ggT=qFU~4v$nKC)DlI77 zglSVFEkj@L=RIg)FK=_kEejvnKf?)w$KqQuiH7?PG&lVB+aLxphvFh01iN|Z^@1j? zk04-#NGx`T=PPKe)VTVbCp>4vJm>Rc*21xHg=~VP7+HjcgMS?hd zc1y21odX^_EYdPb`@C9aNr$y}c(f`{6pH|ieU%agJvGjd^_QgZ+d2j3@roq-KfdT_ z0U&t$8k0YUVsSvNR*A6mX0_eH z2LFhvOi30tUj-b(Gc+EEtQJdIrv3;tUD*h*CzKazN}{6N=McO6&nGn1#|ex_nvZLc zDRbj_+0Z0n81<4_)ZUAwYjyxw&Y-hnmz#^D;Cx)I%*a@_es+qn&}M%L^Dul%H%Me| zSv#$q91l1;(Y1-UBbKqxq$F9x<}5|mf5QqnmsepMFV`N4Sdq)!9@ABfc+vM;#(f#V z{Ox|#NEv43KkE5lDU}cIc=;7xIH?@|F@CNL`?pqhA3#G=omg(QY`aF7!n0lH?~}fU zU$eT&4o9>V0fTK?OdsyIaPvrzfQ2M zpy1Dlu8)FLp$1aLTxc@@F^Z*QDG9q?eco@BGEx?+b=AbF&2e(Xh-KmL6Y$a$ei7lc zNpz3x-o)V0+cs<`5J6~7WwbhUoq74&R56$$KaQChZch+QEVc}GC5U~!Z9IS#F`bR< z(vnL_T{BEn6= z&UoNU5yg+p-yAVv2x%T==WBQT$X+g-*C&TC)gK7CP80d!rmON4ouFODhUBv$T&lQ$ z383_k?*{ze;>`$h4%vmF%ES-hEg4s!1nSlYxdP{u0I%XTJ6Q6dCHORH0JS7d0Y#)+ zoSe0K{5=c&_y@Gu_{g#q?tQdv$`J+5V>+rx*^833|9)n|7g!E-!-KGmc8{ep0hx$L z9*~{^nh+wdKGI?oj;jA52XKqSBe&xrv`2D5D_Dq$>A?R=1cA2g^Q~sAm~yiJA1)-O z4gPnJ#zXcRq|}^oN+b!p)ZM1?pRh@)%+-zHs5bov$a|nCpi4rHxs)U@Cb7ft#;7@p z4V(e^pvd~pC8Yew$SGt-t@$?ov#<~YfXjirFqR$>7L#I@vA;%NJ$U_`?xJ@8Q^fWT%91*^{wa+MdD7p(SM<3<&a-QPm-yO77 zF+Y5eVONI+$J5!nRMG3;nx_D{m+Lpj&FF2PXa@<5{V-l52Ax*Guge5-*Z^<8^~(~t z(Sgcef!_eZnhS(YD0A(ja$~x|u5|dW%_>VPUE!ogktgO1Cg;AY(|L2y@Q0oJlBZd& zBB8gp)g%Q!`2FY{85W3d$JwV8g^@TvVrRN0i0iyfyrT1n)B_&Sh_SRWTPo;v4VTOP zqBK?d9ZWi{f}7xHnp>qNzO;FGXSBz}zy zP^i|*lgkL4_LV_-x^AvBn@Z_=$-fTpgf<;`WR~>whwZp;l?&#BDiw1)ka*jJU6t;1 zgzs_3$<-(4S_SfJNSxpU{^;UdbMv(1y8szx?R)vA195@&q>#b=SfloMS1mp>p62yQ zp1&(MfOGR~^cPngabx~-l_Mc`w+n6qb8bhCbH6g91#XTxeVbx&o zuQE8}hx0prbhQDse`YWJAKu@$s=={7`j%7{|+=G_$VEyVw-J7gp) z*rYjr?DewY@w-dNyM3^8=i@uo{uX$_G3ReCq{C9OqfY=})osXht~I1CinHz^Z^yN-RDkCbr_Zghz4j-M2nv&1C@^!Fk6HuFY30Y$+VfSA_H z8^*bSpSCGGDyI1U6uJAl>C%f2=jM7?&csJ^2ihVqi8?vn?2zo^6}J~}9`6uaoLG-K zI{R0~X@LMmIh28RliE+G?WS1qKP+a*l3_fSOr8s>eSamrWHom{Zg!Y8Zlq61cio%N zqGtYP%Jq@o>4)CG@ujbQ+v|*ee64ogyzZ-g88f9&(rM_q2;>h68mX?T7~7O)lY9Ff z8@maPA2)XVNcdZO{737=>QBj#@(<32Z<-g;ng^nQXWmuP^Lt!<5>-efhb}nGO-EKq zZJrz6U*wD+-+(T|u!2x`wOFZ0Y^%S=-7R{8uM^Z&fh%Q_e zfqDcmGY>LpN@O9zbvEvIv4A66!^3P-Qfk^D_}GQJSm%x0`LP!PtsZ>p%ddKeHiRt# zAIylsh>HaHXiH#^fc<3AEQwLXG>yphk;Sw*6<$E$stAiZ?*VkM@rlP>eH|lCr^b?- zQDObjsm0)trTHxUXBZmoCA+^$a;5|U=S2gqgS~IRc{1j1VX>nL%6Ic?38Ovg>+&67 zUdrk|0!5xX^bnlQpDI(5OPo@v2J2o-sg=-HK@XWyLjEcnrx$D#sS*!%F6Nt{-Kaw#m<;1Gw+L7U;o*^> zEZo1c3|Iyq!c#$6G*DI|x(lth3MR5Re|mJC1T9(3p683MMOhl193srP9DBix6Bp~C znxc9V9@3X-3yG3tJAlcjf`!8TWNtf|IQTT1qUMf#mEf%@TlyEJFmtS5_^KTF((Bbp z2g?KVy0h2EUEJ?%^_ci-v}a0w*L~{9mjQB^F5&Du%4L{5UvORRNQ$|(VX6la=hYS% z85U%2caWR?B)_;t*bH z0R1vnp>ev)kCHP1M0GsIR~p1HhU*j8MK9~La`BVs$lVj+b{VJk3MVI{4&s1E$D)i0 zGCH6bs_`W*yKHtMdr@M5l%e-5yeN=)FAeQ_Sb?o`>nQ={>N|PO;w!&~|0*QFTh$D` z7J_ZJOe51Kn-6_zOkX+S7cE{!@>xREO^YT@rC_I(QUrsYTHdtKa+MwFTzjRqN@O7T zldZB-F872!_8743I7gY|U>?GznYK+yhWa>XImSOT6#qvt^X!LqC8+@0PjUV^pnQ`g z{*4hWMak8Jo6=$C`&(?UQY(NhN7}6AaV~S3nIpTgK`zIAwO-{BCNo_Q>41H4838r3t2>;%mq}8g%sQh*IN=f8{DXD<0SE4lIEYCb({Ucspmr)xxLMyeXlN zVwN@(Y>iJ_Dsdr~C8iH^4T2TCR^7Ty=`d4IYlPKzI4lFVx@;z)i~6F6uXKRPPRr#x z6Kd2tuXZ`|kW$l_V^YaLo#Ah-KB0@jC#Ucx?FxSJjRU$S(JjO-qGX}p9xCGST!TtG zf1&<4gwrTa{~ZPZp=8K=j06VO>j?&i3_5$~=fvvi@$LL9XDp+ns^i9VzEmj>9+p!!>~5= zv+0r#7We1AyYD8R&(P^Y7<;(u^Jn2RzN>`|#za)7qFF-B!tH#cYAv48{sevob`;#` zbt+aoIlQ7l7hA*Nuy2#V-aL8PkF~ zsB>-QL6YrPvk^UCj3OUwjN;XLPo!u}ONb=b3YAh)E-Bb#{xt`ns zk|t#;)fmso`JozJRx*t&GN_@MKSZ~E9$!qPeDA4-yUuAatO<;7N>wJOpf{mydb#xj zaljlPWSB&fhrREM3^lvY*>7Vr>psy$|1^@mjMc!-^Ar^T1GdBuYNbTL+w*>e6o$}* z-uWHhPvVr^4#c(bqz)g2 z${U{1E)|W~sCpfb_IQ&=B6~5%DodSn$>KX$lx-1a)NrVP?Oig0R0e`l?8|lb+*^$ek6b_mK_h!`+ETKMr{n zpcyj9tXv{z%2iRaU%l`sp4op}ruY z?tM<>@(6?#R|C-7yEBakW!*uZF*p|OZt&^Hnq9MjvUkz4Q%lpAFWs*KBd+sb0M+pf zW$N;T6}JzIVnIbFt_$-z+M2U0;5DytV^z0bauhR?Uyb_W_6{));$VdAo|6AoATugF z$xL83mj1W0I2z2lg%ji^Pk7FhyuZq`r_sR1HU3r*H`!Tc&{*gYFH-`5-t9T)GtSEW z9mc8B`FTA;87sDvU97rindD)4;h^V8kPX;8-W`0iSdTK&wctUtQS$3X+w&ycv_gFNe$IJ=6C%rbm-bkuhZEaOi^^PJ4*v^3GCNKb)kX;6eYN zR+buR>hwp4iwNZh)HF;i><`Z4sFU>w6oGRK89~WEr@fbK#nJ)r1x$I=tRWg?tHNel;-QPA7PKt?%AEs?M?82;W;g)McXYX@blpj9rxti*j$Q%0a}%_r~v?fvy1o-Ff?s8h6&T&M_;81gN6ko&$PY9 zSeA|Ep%EgSBl!Vmu-YXrBRUe=c*y<*bRC+<6GLfk6*9bvHIWr`*yit;nOd8fNWRF1 zrGgIr&qw;SxHB1{x+X$;_;k5Lbi-o)CKq6AOy7U%v!qg;JZ=S zP9LZEt@-*sTCy$_%eYsIt-m%&1e?q;=$aOo)JVAReS@GqIH+{c#nR=_qt671fmFE{=UBbdsg3_*^zvo>T{YPwha?fYll9@UasnH4}RZ z<3vTgc>o=N`;{kZ)V-Lx{2WxJkDC6HF~4N09+B{R=Yb^d=buDz$`9I2e{Caz(gc(= zGr3&$wt*6HgN4}DK(ztK!E<4~KNX4oG^w(74@6Di>teCH>@^5CMXaDs@B@`BG_-ZY z%68Rt!?tT+8lbLw=nPdpI3bg=0ycFgn}TYI9`;Y4$Tkh#X;{~1?|UgO)EhnZ&LRoc zQOVEX#k!{K>&(iLuL?ieyYUGN9=O|FPW>|TShpEAecWtyx-}+?GyElsPyjR;RD)}} z>OyuvD3QM?*g`?FA`(FKb}@;pcAAC}G1X(WvP3E@ri-cLYyW(==Srmm1l%ep|CCP3 zbz4NNN4P^iJ3*JhO7gx*8clIu6@DW;R?rIBPvN>0;#_(|-qt-XHZe>_BTvKl{Yg7ma}Ol%D?1d9b^~z`8YSO@}v-9?06< zzJtZAxE8mon;->ex+V>O3VX&FafHoY^0~l_tz^bi+9yRr zQDcvY>)t>H57e!7k(*C`%#@0JFC0=~s121+RiN}I(~^s35CN=7VN;w-6FVfr^B1ee zuQ6WY6CX4A+iq=iwx5j1KgC9`fj{3|vv+;`Qu~$dBg@TIf>E3{z<|gR4t%;u>)Obu z1x`$1h)gWh9s!Q*OIxWr88@yV=a7f=on;3D#rHud-{sk_w?*u`*Lo)ih$CZU!4eMI zUXnlT^gKdrhf~Ag_-sGBPv_$N6oc^-OG8Y9Hb1V3(TuUC%Wwi~LXy`hTOern(DGy`#J^u z3ZLp_E0&Z}9&I<0k?1IQDa#{!yV+TaYBC;jy9AW{V4VFyID*V<{%+Zpb{KTIMJVKU zJCIg90D?tD_3{f=D*wylrs`$)B|H^{}{hWcnj`qp1Wxyp}5 zY#fa=GfuKD2zYx+B!TXJKuVTd2i)vos=4^Qe58vv`7~&Msu9HI9=j=XT%wT;SJRxd zbbtZ=Wy$KZNkl|UvAO3*Fcp?$I8~TBF-x-}5%QIRo$dO0nI+ z7m?)$*heO(XFj1MdCz3$zMXEIJ>cf@1weyQBwIK>g6Lfd`h*KL{YE z7MN^1L7XeZcB<97@mwKjPk$jwxYfHxL~Ro{BOA0W)8!*XZ{()8k?ihUjv1+zPbNIU zo{*7ZaT*1Rsf1&HZ&;8T>$8NRLX!AXAtQN?wb1irUkRFm1t6y0D4D)Aj5#$65_+1W&O)Jwyzch<|5*uBc?Acfh6Mx5 zCjm|f5djP}S7oq5E|q>q3~Y-ei!`EnnLS;Sk2!{EEXv zi9c}pIO@iS-id{>j=}kT9pl?DmaIgp^gDG{90s}sG`qho9hCxz> zpe{f*ZR|YG1GK#p*+Yf5y>AN1Q<4?Vk@5qf!Qam=bSH?J(q^xoEVlCdt;TcE=e+!h z_a0kl(*<4+4;gUP>_h60I{FIKC4^UrueL`#q9_|XebZVVT)eqJ34|q*HOp$bMUTR8 zc{P6(XW@pCAwPMXGiw%hvl?k;KI#%40y{uU)YEmMJ;u4 zC(<*WdNfUXQ@#~v!qs|QDrLgwU|!4fkAz3dL@z{vlYGl!_qr>Zt4OxyA7Zh!au;tt zt*oZBNL)*C6DXErSR1eWo$QkDfzQK96|D@UlG&- zW=`|d2P{%8D-3v-ymKogIOtiaSf~KzbBQH_Xy4_8)*M*t*;jJZtO~bezV@?+w#@?Z zg91M)arSAQ%9Sx9L!s{a$kEgDWBDSFvV~J6C6@5`$RcWz0tyrga3lT{^Z|Eqt1rf) zWqA83^=>h-l}2a7p>J+&^+3vFfbFIuJ%8z_q#x?COOie;% z%Z4Pxii?V|97M-}6C3Yf6`oTqp8M)JU*~?)6#oS~bj?1h%dDFGP`7><@6z`WyjI%1 zzS1H7n&4A>YxI_fN9uRfFfm6(FGQh#`rz z2A^JR%F*k`bu#NiT0&8CfT*r>`e(e04WAc9Is=jC*i-h`z>D*R*WqVZwOz6FFmQ_2N? zy;omWjogU3;tUhzP_&W5x&39<{W{S*o2Vo(8Io?y@Tn{McyxOiHaI*}(x49BEo*3S z>gS?3)U^v##5x?AR0rS+jJiWDL;MGsy=o0%iGLA?w8PX!09beAbU>x6(DdUNElFo4 zuRDLEKMgn;$=&nEmWP6FkG=wirVCOzj6&Q`aH>hUrVUuvKDH!iqmyitf?)pG@3`J>6>|OQ^tjHTcVA8033LV|?^J*2^ zxmC>_MTTRGFW4603wAYEA~n*CdrXtag}>7>Lt+6Yta8NN^9Knx74!HhC2;JoW(?R= zL(&*h&SQOAuo@TydgqcG8AgzTE$M{Mx4u;6mRpK@Fg28ZQsCD!8vzO$OR~{rY=h2$ zG{Gy`!{2w7fxm14)nL2K_r+DhA}6oQA$nr0h*TY%9Mp^ER8i6DXv}ffcnO+BTTTd% zR58lni=0TaZfY>5z4CN`~mru#pAwNF{m8^uw#nWL6Rrl;U!GwZQ!$kNk z-(5dnI*&LgMz!BRZe3QtG>u!?A1#phb*xDEa_%&Tru0bySl28y0~e^8-W;&=-D8rl zcpA8aIT)d4W!pL&8=2|OUC1X_P$u=v-$(?h;&x@9pS$zTrWQ(@n{gdZr2t)s<&ikJ zcSE_EMhmg(%R};|Ej;rE#6$LAhbl4}{Ezbz7wnFr@&hcF3z4Z*=LViXAjcXM(0^&E zq)Zs&EOSo--uR=1;^;{zr)8;+nS1M*GV}pa#jUaT>B9?e z?k9?rx|w|)h5P=7IIR~6k1uRqt}sueN0-mV$MGzZ)Y3sp%M30z;-MZ`kLr4E;SW#jSi|J{=*nYZe6BQ3pM6f zboHuyn9)W4TCUtUPLn$CUAXCrj<3{n-K=a3Wjwd3gr7gO!IrPp>zaioujovF#&tV+ zBtixL`1FGi`lEN}fm5ledsZPaZu#2!HDGR!{NY0aq6YFq*tN1tes!)W)YQ~VNi|mJ z_Q)s@^G63OnXxR@NujHAtr1>me7c%0X)F?7P}$G9W`xqSP1Q+IB*96jgd zM^zy0QIv$Nvv6-b4BD7p&0=&uiD`+Aelq03lUA906nI;T7YttX6;StDxJ0sX7jR|s zvce|_WY@75mMKx)|gm||e_HESe=i!-PZ+K>mI*C9-L7xEdx2HDMS z&J-1@FtW;otT9O9?1G*~V0525?AYSExh>9uD|GMrDEL0SL`qu^P zEkzt~YT%=y7;GrizgB;Nbt*(a10@s)Dn+1!5;ugRBCtS72D|`xq$CV}4Wv;fCH&_- zW6+{8=m!o)21*HmX38u?|BaHs!2aCl{`33my_p!WLYao>e;1wqTS18vc&5w`5yk|h zRpEvxV*;9}P!s*Z$sOp1J`spR)PGU?H@#L_V4jK~_$hEzMG(SI3HV(W2gstz08#Ph rks1h4MI-v>HPgRZ|HTY0{Qq4##U}da4(H!1rPF{aF~GR1{we%_BIag= delta 15155 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