From 8b6110246bd76384606933a65cfc85b134e23509 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Fri, 3 Mar 2023 10:50:59 +0800 Subject: [PATCH 1/3] update --- modules/hero/module.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/hero/module.go b/modules/hero/module.go index 437c9b740..aa7667602 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -322,10 +322,12 @@ func (this *Hero) KungFuHero(session comm.IUserSession, heroObjID string, bKongf var ( _hero *pb.DBHero _changeHero []*pb.DBHero // 变化的英雄 + model *db.DBModel // 跨服对象 + err error ) if this.IsCross() { - if model, err := this.GetDBModuleByUid(session.GetUserId(), this.modelHero.TableName, this.modelHero.Expired); err == nil { + if model, err = this.GetDBModuleByUid(session.GetUserId(), this.modelHero.TableName, this.modelHero.Expired); err == nil { if err := model.GetListObj(session.GetUserId(), heroObjID, _hero); err != nil { this.Errorf("err:%v", err) return @@ -357,7 +359,7 @@ func (this *Hero) KungFuHero(session comm.IUserSession, heroObjID string, bKongf } if this.IsCross() { - if model, err := this.GetDBModuleByUid(session.GetUserId(), this.modelHero.TableName, this.modelHero.Expired); err == nil { + if model != nil { if err := model.ChangeList(session.GetUserId(), heroObjID, _heroMap); err != nil { this.Errorf("err:%v", err) code = pb.ErrorCode_DBError From 6d43e69f5fcb75d6471df7c5fd136fde67493e6a Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Fri, 3 Mar 2023 10:53:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/json/game_combatlevel.json | 3 +- bin/json/game_worldtask.json | 188 +++++++++++++++++++- sys/configure/structs/Game.WorldTaskData.go | 15 ++ 3 files changed, 200 insertions(+), 6 deletions(-) diff --git a/bin/json/game_combatlevel.json b/bin/json/game_combatlevel.json index 96b79ac8a..45d93c522 100644 --- a/bin/json/game_combatlevel.json +++ b/bin/json/game_combatlevel.json @@ -177,8 +177,7 @@ "levelname": "Save the holy tree", "passformatList": [], "passdroplist": [ - 10301, - 10302 + 10301 ], "award": [ { diff --git a/bin/json/game_worldtask.json b/bin/json/game_worldtask.json index 15afe4784..c78b560dd 100644 --- a/bin/json/game_worldtask.json +++ b/bin/json/game_worldtask.json @@ -24,6 +24,11 @@ "旧时光1-指挥部杰克", "150" ], + "receivenpc": [ + "scenes_boundary_01", + "旧时光1-指挥部杰克", + "150" + ], "getafter_event": [ 2, 300001 @@ -58,6 +63,11 @@ "旧时光1-住所主角", "715" ], + "receivenpc": [ + "display_platform_04_02", + "旧时光1-住所主角", + "715" + ], "getafter_event": [ 2, 300003 @@ -92,6 +102,11 @@ "旧时光1-住所平先生", "715" ], + "receivenpc": [ + "display_platform_04_02", + "旧时光1-住所平先生", + "715" + ], "getafter_event": [ 2, 300004 @@ -126,6 +141,11 @@ "旧时光1-住所平先生", "715" ], + "receivenpc": [ + "display_platform_04_02", + "旧时光1-住所平先生", + "715" + ], "getafter_event": [ 2, 300005 @@ -160,6 +180,11 @@ "旧时光1-指挥部阿宝", "150" ], + "receivenpc": [ + "scenes_boundary_01_recordtask", + "旧时光1-指挥部阿宝", + "150" + ], "getafter_event": [ 2, 300008 @@ -194,6 +219,11 @@ "旧时光1-指挥部杰克", "150" ], + "receivenpc": [ + "scenes_boundary_01_recordtask", + "旧时光1-指挥部杰克", + "150" + ], "getafter_event": [ 2, 300011 @@ -228,6 +258,11 @@ "旧时光1-森林小道阿宝", "717" ], + "receivenpc": [ + "dreamwork_jungle_playershow_01", + "旧时光1-森林小道阿宝", + "717" + ], "getafter_event": [ 2, 300012 @@ -262,6 +297,11 @@ "旧时光1-森林小道 阿宝", "717" ], + "receivenpc": [ + "dreamwork_jungle_playershow_01", + "旧时光1-森林小道 阿宝", + "717" + ], "getafter_event": [ 2, 300013 @@ -296,6 +336,11 @@ "旧时光1-竹林豺狼小怪", "716" ], + "receivenpc": [ + "scenesfight_03_02", + "旧时光1-竹林豺狼小怪", + "716" + ], "getafter_event": [ 2, 300014 @@ -330,6 +375,11 @@ "旧时光1-竹林阿宝", "716" ], + "receivenpc": [ + "scenesfight_03_02", + "旧时光1-竹林阿宝", + "716" + ], "getafter_event": [ 2, 300015 @@ -364,6 +414,11 @@ "旧时光1-指挥部杰克", "150" ], + "receivenpc": [ + "scenes_boundary_01_recordtask", + "旧时光1-指挥部杰克", + "150" + ], "getafter_event": [ 2, 300019 @@ -398,6 +453,11 @@ "0新手引导-杰克-中轴城常驻待机", "901" ], + "receivenpc": [ + "bossfight_pt_02", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], "getafter_event": [ 2, 401 @@ -432,12 +492,17 @@ "0新手引导-杰克-中轴城常驻待机", "901" ], + "receivenpc": [ + "bossfight_pt_02", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], "getafter_event": [ 2, 402 ], "completetask": 0, - "auto_accept": 1, + "auto_accept": 0, "overtips": 1, "reword": [] }, @@ -466,6 +531,11 @@ "1.新手引导-花朵-中轴城", "901" ], + "receivenpc": [ + "bossfight_pt_02", + "1.新手引导-花朵-中轴城", + "901" + ], "getafter_event": [ 2, 403 @@ -500,6 +570,11 @@ "1.新手引导-花朵-中轴城", "901" ], + "receivenpc": [ + "bossfight_pt_02", + "1.新手引导-花朵-中轴城", + "901" + ], "getafter_event": [ 2, 404 @@ -534,6 +609,11 @@ "0新手引导-杰克-中轴城常驻待机", "901" ], + "receivenpc": [ + "bossfight_pt_02", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], "getafter_event": [ 2, 406 @@ -568,6 +648,11 @@ "3新手引导-波比-正常待机-中轴城", "901" ], + "receivenpc": [ + "bossfight_pt_02", + "3新手引导-波比-正常待机-中轴城", + "901" + ], "getafter_event": [ 2, 407 @@ -602,6 +687,11 @@ "2新手引导-邦尼兔-正常待机-中轴城", "901" ], + "receivenpc": [ + "bossfight_pt_02", + "2新手引导-邦尼兔-正常待机-中轴城", + "901" + ], "getafter_event": [ 2, 408 @@ -640,7 +730,12 @@ "npc": [ "bossfight_pt_02", "新手引导-波比-右屏圣树1", - "153" + "901" + ], + "receivenpc": [ + "bossfight_pt_02", + "新手引导-波比-右屏圣树1", + "901" ], "getafter_event": [ 2, @@ -676,6 +771,11 @@ "新手引导-波比-右屏圣树2", "718" ], + "receivenpc": [ + "scenes_kongfupanda_01", + "新手引导-波比-右屏圣树2", + "718" + ], "getafter_event": [ 2, 411 @@ -710,6 +810,11 @@ "新手引导-豺狼人-右屏圣树", "718" ], + "receivenpc": [ + "scenes_kongfupanda_01", + "新手引导-豺狼人-右屏圣树", + "718" + ], "getafter_event": [ 2, 412 @@ -750,6 +855,11 @@ "新手引导-豺狼人-右屏圣树", "718" ], + "receivenpc": [ + "scenes_kongfupanda_01", + "新手引导-豺狼人-右屏圣树", + "718" + ], "getafter_event": [ 2, 413 @@ -784,6 +894,11 @@ "新手引导-圣树下的黑洞", "718" ], + "receivenpc": [ + "scenes_kongfupanda_01", + "新手引导-圣树下的黑洞", + "718" + ], "getafter_event": [ 5, 10008 @@ -818,6 +933,11 @@ "新手引导-波比-犀牛守卫", "718" ], + "receivenpc": [ + "scenes_kongfupanda_01", + "新手引导-波比-犀牛守卫", + "718" + ], "getafter_event": [ 2, 416 @@ -852,6 +972,11 @@ "新手引导-波比-右屏圣树3", "718" ], + "receivenpc": [ + "scenes_kongfupanda_01", + "新手引导-波比-右屏圣树3", + "718" + ], "getafter_event": [ 9, 0 @@ -886,6 +1011,11 @@ "新手引导-波比-右屏圣树3", "718" ], + "receivenpc": [ + "scenes_kongfupanda_01", + "新手引导-波比-右屏圣树3", + "718" + ], "getafter_event": [ 2, 420 @@ -899,7 +1029,7 @@ "key": 20150, "lock": 1, "ontxe": 20140, - "id_after": 20160, + "id_after": 0, "group": 2, "des": 2, "icon": "", @@ -916,6 +1046,11 @@ "text": "新手引导" }, "npc": [ + "scenes_boundary_01_recordtask", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], + "receivenpc": [ "scenes_boundary_01_recordtask", "0新手引导-杰克-中轴城常驻待机", "150" @@ -932,7 +1067,7 @@ { "key": 20160, "lock": 1, - "ontxe": 20150, + "ontxe": 20151, "id_after": 20170, "group": 2, "des": 2, @@ -950,6 +1085,11 @@ "text": "新手引导" }, "npc": [ + "scenes_boundary_01_recordtask", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], + "receivenpc": [ "scenes_boundary_01_recordtask", "0新手引导-杰克-中轴城常驻待机", "150" @@ -984,6 +1124,11 @@ "text": "新手引导" }, "npc": [ + "scenes_boundary_01_recordtask", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], + "receivenpc": [ "scenes_boundary_01_recordtask", "0新手引导-杰克-中轴城常驻待机", "150" @@ -1018,6 +1163,11 @@ "text": "新手引导" }, "npc": [ + "scenes_boundary_01_recordtask", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], + "receivenpc": [ "scenes_boundary_01_recordtask", "0新手引导-杰克-中轴城常驻待机", "150" @@ -1062,6 +1212,11 @@ "暴夫纳特铁匠铺", "139" ], + "receivenpc": [ + "scenes_smithy_01", + "暴夫纳特铁匠铺", + "139" + ], "getafter_event": [ 2, 427 @@ -1096,6 +1251,11 @@ "暴夫纳特铁匠铺", "139" ], + "receivenpc": [ + "scenes_smithy_01", + "暴夫纳特铁匠铺", + "139" + ], "getafter_event": [ 2, 428 @@ -1126,6 +1286,11 @@ "text": "新手引导" }, "npc": [ + "scenes_boundary_01_recordtask", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], + "receivenpc": [ "scenes_boundary_01_recordtask", "0新手引导-杰克-中轴城常驻待机", "150" @@ -1160,6 +1325,11 @@ "text": "新手引导" }, "npc": [ + "scenes_boundary_01_recordtask", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], + "receivenpc": [ "scenes_boundary_01_recordtask", "0新手引导-杰克-中轴城常驻待机", "150" @@ -1194,6 +1364,11 @@ "text": "新手引导" }, "npc": [ + "scenes_boundary_01_recordtask", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], + "receivenpc": [ "scenes_boundary_01_recordtask", "0新手引导-杰克-中轴城常驻待机", "150" @@ -1228,6 +1403,11 @@ "text": "新手引导" }, "npc": [ + "scenes_boundary_01_recordtask", + "0新手引导-杰克-中轴城常驻待机", + "901" + ], + "receivenpc": [ "scenes_boundary_01_recordtask", "0新手引导-杰克-中轴城常驻待机", "150" diff --git a/sys/configure/structs/Game.WorldTaskData.go b/sys/configure/structs/Game.WorldTaskData.go index 82ee4ef1a..f03174de3 100644 --- a/sys/configure/structs/Game.WorldTaskData.go +++ b/sys/configure/structs/Game.WorldTaskData.go @@ -22,6 +22,7 @@ type GameWorldTaskData struct { TaskName string TaskDisplay string Npc []string + Receivenpc []string GetafterEvent []int32 Completetask int32 AutoAccept int32 @@ -60,6 +61,20 @@ func (_v *GameWorldTaskData)Deserialize(_buf map[string]interface{}) (err error) } } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["receivenpc"].([]interface{}); !_ok_ { err = errors.New("receivenpc error"); return } + + _v.Receivenpc = make([]string, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ string + { if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } } + _v.Receivenpc = append(_v.Receivenpc, _list_v_) + } + } + { var _arr_ []interface{} var _ok_ bool From 139f47f7f2acfc159526a68d258ebed1089d45e3 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Fri, 3 Mar 2023 14:41:15 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=8B=B1=E9=9B=84?= =?UTF-8?q?=E5=9C=A8=E8=B0=81=E5=AE=B6=E7=BB=83=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- comm/imodule.go | 2 +- modules/hero/module.go | 8 +- modules/martialhall/api_practice.go | 2 +- modules/martialhall/api_receive.go | 2 +- modules/practice/api_expulsion.go | 4 +- modules/practice/api_loot.go | 2 +- modules/practice/api_practice.go | 2 +- modules/practice/api_receive.go | 2 +- modules/user/module.go | 2 +- pb/hero_db.pb.go | 148 +++++++++++++++------------- 10 files changed, 94 insertions(+), 80 deletions(-) diff --git a/comm/imodule.go b/comm/imodule.go index aa01f2f09..008a5c5ea 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -71,7 +71,7 @@ type ( // 英雄加经验 AddHeroExp(session IUserSession, heroObjID string, exp int32) (curAddExp int32, code pb.ErrorCode) // 英雄练功 - KungFuHero(session IUserSession, heroObjID string, bKongfu bool) (code pb.ErrorCode) + KungFuHero(session IUserSession, heroObjID string, bKongfu bool, kongfuUid string) (code pb.ErrorCode) //Create Monster CreateMonster(heroCid string, star, lv int32) (hero *pb.DBHero) diff --git a/modules/hero/module.go b/modules/hero/module.go index aa7667602..70ce980c5 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -318,7 +318,7 @@ func (this *Hero) AddHeroExp(session comm.IUserSession, heroObjID string, exp in } // 英雄练功 -func (this *Hero) KungFuHero(session comm.IUserSession, heroObjID string, bKongfu bool) (code pb.ErrorCode) { +func (this *Hero) KungFuHero(session comm.IUserSession, heroObjID string, bKongfu bool, kongfuUid string) (code pb.ErrorCode) { var ( _hero *pb.DBHero _changeHero []*pb.DBHero // 变化的英雄 @@ -348,14 +348,17 @@ func (this *Hero) KungFuHero(session comm.IUserSession, heroObjID string, bKongf if !bKongfu && _hero.Status == pb.HeroType_HeroTypeNil { return } + _hero.KongfuUid = kongfuUid if bKongfu { _hero.Status = pb.HeroType_HeroTypeKongFu } else { _hero.Status = pb.HeroType_HeroTypeNil + _hero.KongfuUid = "" } _heroMap := map[string]interface{}{ - "status": _hero.Status, + "status": _hero.Status, + "kongfuUid": _hero.KongfuUid, } if this.IsCross() { @@ -388,6 +391,7 @@ func (this *Hero) CreateMonster(heroCid string, star, lv int32) (hero *pb.DBHero // 只通过唯一id 查询英雄信息 func (this *Hero) QueryCrossHeroinfo(oid string) (hero *pb.DBHero, err error) { if this.IsCross() { + for _, tag := range db.GetServerTags() { conn, err1 := db.ServerDBConn(tag) // 遍历连接对象 if err1 != nil { diff --git a/modules/martialhall/api_practice.go b/modules/martialhall/api_practice.go index a894d3bc3..ed1ef801f 100644 --- a/modules/martialhall/api_practice.go +++ b/modules/martialhall/api_practice.go @@ -82,7 +82,7 @@ func (this *apiComp) Practice(session comm.IUserSession, req *pb.MartialhallPrac if code = this.module.ConsumeRes(session, sale, true); code != pb.ErrorCode_Success { return } - if code = this.module.ModuleHero.KungFuHero(session, req.Hero, true); code != pb.ErrorCode_Success { + if code = this.module.ModuleHero.KungFuHero(session, req.Hero, true, ""); code != pb.ErrorCode_Success { return } pillar.State = pb.PillarState_Useing diff --git a/modules/martialhall/api_receive.go b/modules/martialhall/api_receive.go index 450b6ba53..1c6fb5558 100644 --- a/modules/martialhall/api_receive.go +++ b/modules/martialhall/api_receive.go @@ -69,7 +69,7 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.MartialhallRecei if _, code = this.module.ModuleHero.AddHeroExp(session, pillar.Hero, pillar.Reward); code != pb.ErrorCode_Success { return } - if code = this.module.ModuleHero.KungFuHero(session, pillar.Hero, false); code != pb.ErrorCode_Success { + if code = this.module.ModuleHero.KungFuHero(session, pillar.Hero, false, ""); code != pb.ErrorCode_Success { return } pillar.Hero = "" diff --git a/modules/practice/api_expulsion.go b/modules/practice/api_expulsion.go index e07273af1..4a741e3ac 100644 --- a/modules/practice/api_expulsion.go +++ b/modules/practice/api_expulsion.go @@ -186,14 +186,14 @@ func (this *apiComp) Expulsion(session comm.IUserSession, req *pb.PracticeExpuls if code = this.module.DispenseRes(_session, append(ants1, ants2...), true); code != pb.ErrorCode_Success { return } - if code = this.module.ModuleHero.KungFuHero(_session, pillar.Hero, false); code != pb.ErrorCode_Success { + if code = this.module.ModuleHero.KungFuHero(_session, pillar.Hero, false, ""); code != pb.ErrorCode_Success { return } } else { if _, code = this.module.ModuleHero.AddHeroExp(_session, pillar.Hero, exp); code != pb.ErrorCode_Success { return } - if code = this.module.ModuleHero.KungFuHero(_session, pillar.Hero, false); code != pb.ErrorCode_Success { + if code = this.module.ModuleHero.KungFuHero(_session, pillar.Hero, false, ""); code != pb.ErrorCode_Success { return } res := make([]*pb.UserAssets, 0) diff --git a/modules/practice/api_loot.go b/modules/practice/api_loot.go index 934f7a92d..6a8dc47a4 100644 --- a/modules/practice/api_loot.go +++ b/modules/practice/api_loot.go @@ -42,7 +42,7 @@ func (this *apiComp) Loot(session comm.IUserSession, req *pb.PracticeLootReq) (c code = pb.ErrorCode_ConfigNoFound return } - if code = this.module.ModuleHero.KungFuHero(session, req.Hero, true); code != pb.ErrorCode_Success { + if code = this.module.ModuleHero.KungFuHero(session, req.Hero, true, ""); code != pb.ErrorCode_Success { return } if req.Teacher != "" { diff --git a/modules/practice/api_practice.go b/modules/practice/api_practice.go index eb7492807..1be93365c 100644 --- a/modules/practice/api_practice.go +++ b/modules/practice/api_practice.go @@ -60,7 +60,7 @@ func (this *apiComp) Practice(session comm.IUserSession, req *pb.PracticePractic code = pb.ErrorCode_ConfigNoFound return } - if code = this.module.ModuleHero.KungFuHero(session, req.Hero, true); code != pb.ErrorCode_Success { + if code = this.module.ModuleHero.KungFuHero(session, req.Hero, true, ""); code != pb.ErrorCode_Success { return } if req.Teacher != "" { diff --git a/modules/practice/api_receive.go b/modules/practice/api_receive.go index 46933bc88..093cc1c5e 100644 --- a/modules/practice/api_receive.go +++ b/modules/practice/api_receive.go @@ -88,7 +88,7 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.PracticeReceiveR return } } - if code = this.module.ModuleHero.KungFuHero(session, pillar.Hero, false); code != pb.ErrorCode_Success { + if code = this.module.ModuleHero.KungFuHero(session, pillar.Hero, false, ""); code != pb.ErrorCode_Success { return } //计算经验收益 diff --git a/modules/user/module.go b/modules/user/module.go index c398423fa..eb0941fdb 100644 --- a/modules/user/module.go +++ b/modules/user/module.go @@ -656,7 +656,6 @@ func (this *User) RpcGetCrossUserSession(ctx context.Context, req *pb.UIdReq, re if err != mongo.ErrNoDocuments { return err } - return nil } return nil } @@ -664,6 +663,7 @@ func (this *User) RpcGetCrossUserSession(ctx context.Context, req *pb.UIdReq, re func (this *User) RpcQueryUser(ctx context.Context, req *pb.NameReq, reply *pb.UserDataListResp) error { return this.queryUserFromRemoteDb(req.Name, reply) } + func (this *User) CheckTujianHero(session comm.IUserSession, heros []string) []bool { sz := make([]bool, len(heros)) index := 0 diff --git a/pb/hero_db.pb.go b/pb/hero_db.pb.go index 185f83750..bc6e5c1f4 100644 --- a/pb/hero_db.pb.go +++ b/pb/hero_db.pb.go @@ -100,6 +100,7 @@ type DBHero struct { EquipSkill []*SkillData `protobuf:"bytes,27,rep,name=equipSkill,proto3" json:"equipSkill" bson:"equipSkill"` //装备技能 HoroscopeProperty map[string]int32 `protobuf:"bytes,28,rep,name=horoscopeProperty,proto3" json:"horoscopeProperty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"horoscopeProperty"` ////星座属性加成 Fulllvenr int32 `protobuf:"varint,29,opt,name=fulllvenr,proto3" json:"fulllvenr" bson:"fulllvenr"` ////满级登记分组 武馆使用 + KongfuUid string `protobuf:"bytes,30,opt,name=kongfuUid,proto3" json:"kongfuUid"` //@go_tags(`bson:"kongfuUid"`)// 英雄在谁家练功 } func (x *DBHero) Reset() { @@ -337,6 +338,13 @@ func (x *DBHero) GetFulllvenr() int32 { return 0 } +func (x *DBHero) GetKongfuUid() string { + if x != nil { + return x.KongfuUid + } + return "" +} + //英雄扩展数据 type DBHeroRecord struct { state protoimpl.MessageState @@ -566,7 +574,7 @@ var File_hero_hero_db_proto protoreflect.FileDescriptor var file_hero_hero_db_proto_rawDesc = []byte{ 0x0a, 0x12, 0x68, 0x65, 0x72, 0x6f, 0x2f, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xa9, 0x0a, 0x0a, 0x06, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x22, 0xc7, 0x0a, 0x0a, 0x06, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, @@ -628,78 +636,80 @@ var file_hero_hero_db_proto_rawDesc = []byte{ 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x68, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x6c, 0x76, 0x65, 0x6e, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x75, 0x6c, 0x6c, - 0x6c, 0x76, 0x65, 0x6e, 0x72, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x4a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb2, 0x04, 0x0a, - 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x34, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x35, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x35, 0x12, 0x14, 0x0a, 0x05, 0x6d, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x74, 0x69, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x72, 0x61, 0x77, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x72, 0x61, 0x77, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x3a, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x09, 0x73, - 0x74, 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x74, - 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x79, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x65, 0x62, 0x75, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x6e, 0x65, 0x62, 0x75, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x74, - 0x65, 0x6e, 0x62, 0x75, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x65, 0x6e, - 0x62, 0x75, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x65, 0x76, 0x69, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x65, 0x76, 0x69, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x65, 0x76, 0x69, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x65, 0x76, 0x69, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x31, 0x1a, 0x3c, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, + 0x6c, 0x76, 0x65, 0x6e, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x6f, 0x6e, 0x67, 0x66, 0x75, 0x55, + 0x69, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x6f, 0x6e, 0x67, 0x66, 0x75, + 0x55, 0x69, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x3f, 0x0a, 0x11, 0x4a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xb6, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, - 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, - 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, - 0x42, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x6c, 0x65, - 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x1a, - 0x39, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x2f, 0x0a, 0x08, 0x48, 0x65, - 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x4e, 0x69, 0x6c, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x4b, 0x6f, 0x6e, 0x67, 0x46, 0x75, 0x10, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, - 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb2, 0x04, 0x0a, 0x0c, 0x44, + 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x34, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x35, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x35, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x72, 0x61, 0x77, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x64, 0x72, 0x61, 0x77, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, + 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x44, + 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x35, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x35, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x79, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x65, 0x62, 0x75, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x6f, 0x6e, 0x65, 0x62, 0x75, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, + 0x62, 0x75, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x62, 0x75, + 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x65, 0x76, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x65, 0x76, 0x69, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x65, 0x76, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x31, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x65, 0x76, 0x69, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x31, 0x1a, 0x3c, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xb6, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x61, + 0x6c, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x48, + 0x65, 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x1a, 0x39, 0x0a, + 0x0b, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x2f, 0x0a, 0x08, 0x48, 0x65, 0x72, 0x6f, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x4e, 0x69, 0x6c, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x4b, 0x6f, 0x6e, 0x67, 0x46, 0x75, 0x10, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (