[修改]车站EMP继电器组合缺少蜂鸣器等元素时不再报错;

[新增]车站电子元件组合构建逻辑
This commit is contained in:
thesai 2024-06-26 17:27:47 +08:00
parent f94033ca44
commit c5f139267a
10 changed files with 519 additions and 411 deletions

View File

@ -108,3 +108,27 @@ func NewDYPEntity(w ecs.World, station *repository.Station) error {
}
return nil
}
// NewLsEntity 创建零散继电器实体
func NewLsEntity(w ecs.World, station *repository.Station) error {
data := GetWorldData(w)
repo := data.Repo
for _, ecc := range station.DeviceEcc() {
if ecc.DeviceType != proto.DeviceType_DeviceType_LS {
continue
}
for _, eg := range ecc.Egs {
if eg.Code != "LS" {
continue
}
for _, componentId := range eg.ComponentIds {
relay := repo.FindById(componentId)
if relay == nil {
return fmt.Errorf("零散继电器实体构建错误: 找不到id=%s的继电器", componentId)
}
NewRelayEntity(w, relay.(*repository.Relay), data.EntityMap)
}
}
}
return nil
}

View File

@ -195,13 +195,16 @@ func LoadEMPEntity(w ecs.World, entry *ecs.Entry, datas []*repository.Electronic
}
}
if emp.Alarm == nil || emp.QBA == nil || emp.SDA == nil {
return fmt.Errorf("EMP组合初始化出错,请检查IBP地图组合数据")
slog.Warn("EMP组合缺少元素将不添加EMP电路组件")
return nil
}
for code, e := range emp.EMPJMap {
if e.EMPFA_BTN == nil || e.EMPD == nil || len(e.EMP_BTNS) == 0 {
return fmt.Errorf("组合[%s]还原按钮未关联,请检查IBP地图组合数据", code)
slog.Warn(fmt.Sprintf("组合[%s]还原按钮未关联,请检查IBP地图组合数据", code))
return nil
} else if e.EMPJ == nil {
return fmt.Errorf("组合[%s]继电器未关联,请检查继电器地图组合数据", code)
slog.Warn(fmt.Sprintf("组合[%s]继电器未关联,请检查继电器地图组合数据", code))
return nil
}
}
entry.AddComponent(component.EmpElectronicType, unsafe.Pointer(emp))

View File

@ -61,5 +61,10 @@ func Load(w ecs.World, repo *repository.Repository) error {
if err != nil {
return err
}
//加载站台(继电器)
err = LoadPlatform(w)
if err != nil {
return err
}
return err
}

22
entity/platform.go Normal file
View File

@ -0,0 +1,22 @@
package entity
import (
"joylink.club/ecs"
"joylink.club/rtsssimulation/repository"
)
func LoadPlatform(w ecs.World) error {
wd := GetWorldData(w)
for _, platform := range wd.Repo.PlatformList() {
for _, group := range platform.ComponentGroups() {
for _, component := range group.Components() {
relay, ok := component.(*repository.Relay)
if !ok {
continue
}
NewRelayEntity(w, relay, wd.EntityMap)
}
}
}
return nil
}

View File

@ -24,6 +24,10 @@ func LoadStations(w ecs.World) error {
if err != nil {
return err
}
err = NewLsEntity(w, station)
if err != nil {
return err
}
entry := NewStationEntity(w, station.Id(), data)
err = LoadSPKEntity(w, entry, station.SpksComponents(), data) // 人员防护
if err != nil {

View File

@ -227,6 +227,7 @@ enum DeviceType {
DeviceType_Xcj = 25; //
DeviceType_CkmPsl = 26; //PSL
DeviceType_TrackCircuit = 27; //
DeviceType_LS = 28; //
//--------ISCS [300,500]------
//ISCS门磁
@ -544,6 +545,7 @@ message Platform {
string stationId = 3;
string physicalSectionId = 4;
PlatformDirection direction = 5;
repeated ElectronicComponentGroup electronicComponentGroups = 6; //
}
//

View File

@ -55,6 +55,7 @@ const (
DeviceType_DeviceType_Xcj DeviceType = 25 //洗车机
DeviceType_DeviceType_CkmPsl DeviceType = 26 //车库门PSL
DeviceType_DeviceType_TrackCircuit DeviceType = 27 //轨道电路
DeviceType_DeviceType_LS DeviceType = 28 //零散设备
// ISCS门磁
DeviceType_DeviceType_DoorSensor DeviceType = 323
// ISCS进闸机
@ -226,6 +227,7 @@ var (
25: "DeviceType_Xcj",
26: "DeviceType_CkmPsl",
27: "DeviceType_TrackCircuit",
28: "DeviceType_LS",
323: "DeviceType_DoorSensor",
324: "DeviceType_EntranceGate",
325: "DeviceType_ExitGate",
@ -325,6 +327,7 @@ var (
"DeviceType_Xcj": 25,
"DeviceType_CkmPsl": 26,
"DeviceType_TrackCircuit": 27,
"DeviceType_LS": 28,
"DeviceType_DoorSensor": 323,
"DeviceType_EntranceGate": 324,
"DeviceType_ExitGate": 325,
@ -3487,11 +3490,12 @@ type Platform struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
StationId string `protobuf:"bytes,3,opt,name=stationId,proto3" json:"stationId,omitempty"`
PhysicalSectionId string `protobuf:"bytes,4,opt,name=physicalSectionId,proto3" json:"physicalSectionId,omitempty"`
Direction Platform_PlatformDirection `protobuf:"varint,5,opt,name=direction,proto3,enum=model.Platform_PlatformDirection" json:"direction,omitempty"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
StationId string `protobuf:"bytes,3,opt,name=stationId,proto3" json:"stationId,omitempty"`
PhysicalSectionId string `protobuf:"bytes,4,opt,name=physicalSectionId,proto3" json:"physicalSectionId,omitempty"`
Direction Platform_PlatformDirection `protobuf:"varint,5,opt,name=direction,proto3,enum=model.Platform_PlatformDirection" json:"direction,omitempty"`
ElectronicComponentGroups []*ElectronicComponentGroup `protobuf:"bytes,6,rep,name=electronicComponentGroups,proto3" json:"electronicComponentGroups,omitempty"` //关联的电子元件组合
}
func (x *Platform) Reset() {
@ -3561,6 +3565,13 @@ func (x *Platform) GetDirection() Platform_PlatformDirection {
return Platform_Unknown
}
func (x *Platform) GetElectronicComponentGroups() []*ElectronicComponentGroup {
if x != nil {
return x.ElectronicComponentGroups
}
return nil
}
// 报警器
type Key struct {
state protoimpl.MessageState
@ -6045,7 +6056,7 @@ var file_model_proto_rawDesc = []byte{
0x6b, 0x6d, 0x61, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x70, 0x6c, 0x61, 0x49, 0x64, 0x18,
0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x70, 0x6c, 0x61, 0x49, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x6d, 0x6d, 0x73, 0x61, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d,
0x6d, 0x73, 0x61, 0x49, 0x64, 0x22, 0xef, 0x01, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x6d, 0x73, 0x61, 0x49, 0x64, 0x22, 0xce, 0x02, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
@ -6057,397 +6068,404 @@ var file_model_proto_rawDesc = []byte{
0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e,
0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a,
0x04, 0x44, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x22, 0x3d, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x65, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x67, 0x65, 0x61, 0x72, 0x22, 0xf2, 0x01, 0x0a, 0x15, 0x43, 0x65, 0x6e, 0x74, 0x72,
0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66,
0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24,
0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18,
0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64,
0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x63, 0x6a, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6a, 0x44,
0x61, 0x74, 0x61, 0x52, 0x06, 0x63, 0x6a, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x71,
0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f,
0x64, 0x65, 0x6c, 0x2e, 0x51, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x71, 0x64, 0x4c, 0x69,
0x73, 0x74, 0x12, 0x47, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64,
0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x69, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x6f, 0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x11, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x5d, 0x0a, 0x06, 0x43,
0x6a, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6f, 0x6c, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x09, 0x72, 0x65, 0x66,
0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6a, 0x44, 0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x52,
0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x43, 0x6a,
0x44, 0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61,
0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x79,
0x49, 0x64, 0x12, 0x0c, 0x0a, 0x01, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x01, 0x71,
0x22, 0x4a, 0x0a, 0x06, 0x51, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f,
0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03,
0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12, 0x1c,
0x0a, 0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x22, 0x48, 0x0a, 0x08,
0x41, 0x73, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75,
0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14,
0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73,
0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x44, 0x0a, 0x12, 0x43, 0x69, 0x53, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03,
0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x1c,
0x0a, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xbc, 0x03, 0x0a,
0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74,
0x61, 0x72, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61,
0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73,
0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64,
0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x66,
0x6c, 0x69, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x73, 0x18,
0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x69,
0x6e, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f,
0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74,
0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65,
0x12, 0x38, 0x0a, 0x08, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65,
0x2e, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x52, 0x08, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x1a, 0x39, 0x0a, 0x0f, 0x54, 0x75,
0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6e,
0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x22, 0x54, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79,
0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x49, 0x4e, 0x47, 0x10,
0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x50, 0x41, 0x52, 0x54, 0x55, 0x52, 0x45, 0x10, 0x01,
0x12, 0x0c, 0x0a, 0x08, 0x53, 0x48, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x08,
0x0a, 0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x4e, 0x47,
0x5f, 0x53, 0x48, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x22, 0x7c, 0x0a, 0x04, 0x50,
0x69, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x41,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x41,
0x12, 0x27, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f,
0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x22, 0x43, 0x0a, 0x0b, 0x50, 0x69, 0x70,
0x65, 0x46, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03,
0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x22, 0x34,
0x0a, 0x0e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72,
0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69,
0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73,
0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45,
0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65,
0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f,
0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75,
0x70, 0x73, 0x22, 0x32, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x69,
0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f,
0x77, 0x6e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,
0x44, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x22, 0x3d, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x65, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x67, 0x65, 0x61, 0x72, 0x22, 0xf2, 0x01, 0x0a, 0x15, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61,
0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x12,
0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24, 0x0a,
0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02,
0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65,
0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x63, 0x6a, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6a, 0x44, 0x61,
0x74, 0x61, 0x52, 0x06, 0x63, 0x6a, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x71, 0x64,
0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64,
0x65, 0x6c, 0x2e, 0x51, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x71, 0x64, 0x4c, 0x69, 0x73,
0x74, 0x12, 0x47, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65,
0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x69, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x11, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x43, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x5d, 0x0a, 0x06, 0x43, 0x6a,
0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x52,
0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f,
0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6a, 0x44, 0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09,
0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x43, 0x6a, 0x44,
0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x79,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x49,
0x64, 0x12, 0x0c, 0x0a, 0x01, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x01, 0x71, 0x22,
0x4a, 0x0a, 0x06, 0x51, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, 0x77,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x63,
0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12, 0x1c, 0x0a,
0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
0x52, 0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x22, 0x48, 0x0a, 0x08, 0x41,
0x73, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x0a,
0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74,
0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x44, 0x0a, 0x12, 0x43, 0x69, 0x53, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x72,
0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x1c, 0x0a,
0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xbc, 0x03, 0x0a, 0x05,
0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61,
0x72, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72,
0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x74,
0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76,
0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x6c,
0x69, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x73, 0x18, 0x06,
0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x69, 0x6e,
0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x75,
0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65,
0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
0x38, 0x0a, 0x08, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e,
0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52,
0x08, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x1a, 0x39, 0x0a, 0x0f, 0x54, 0x75, 0x72,
0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06,
0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6e, 0x6f,
0x72, 0x6d, 0x61, 0x6c, 0x22, 0x54, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70,
0x65, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x00,
0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x50, 0x41, 0x52, 0x54, 0x55, 0x52, 0x45, 0x10, 0x01, 0x12,
0x0c, 0x0a, 0x08, 0x53, 0x48, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a,
0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x4e, 0x47, 0x5f,
0x53, 0x48, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x22, 0x7c, 0x0a, 0x04, 0x50, 0x69,
0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x12,
0x27, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72,
0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x22, 0x43, 0x0a, 0x0b, 0x50, 0x69, 0x70, 0x65,
0x46, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73,
0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x22, 0x34, 0x0a,
0x0e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x12,
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63,
0x6f, 0x64, 0x65, 0x22, 0x39, 0x0a, 0x13, 0x54, 0x68, 0x72, 0x65, 0x65, 0x50, 0x6f, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x34,
0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x63, 0x61, 0x72, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x22, 0x39, 0x0a, 0x13, 0x54, 0x68, 0x72, 0x65, 0x65, 0x50, 0x6f, 0x73,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x63, 0x6f, 0x64, 0x65, 0x22, 0x2f, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x74, 0x69, 0x66, 0x69, 0x65,
0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x32, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e,
0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x58, 0x0a, 0x12, 0x56, 0x6f, 0x6c,
0x74, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x12,
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63,
0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x02, 0x65, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x02, 0x65, 0x32, 0x22, 0x6b, 0x0a, 0x0b, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x73, 0x78, 0x18, 0x03, 0x20, 0x01,
0x28, 0x08, 0x52, 0x02, 0x73, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x63, 0x18, 0x04, 0x20, 0x01,
0x28, 0x08, 0x52, 0x02, 0x61, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x74, 0x61, 0x67,
0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65,
0x22, 0x37, 0x0a, 0x11, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72,
0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x0e, 0x45, 0x61, 0x72,
0x74, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63,
0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22,
0x34, 0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x63, 0x61, 0x72, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63,
0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x2f, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x74, 0x69, 0x66, 0x69,
0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x32, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x58, 0x0a, 0x12, 0x56, 0x6f,
0x6c, 0x74, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72,
0x33, 0x0a, 0x0d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x02, 0x65, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x02, 0x65, 0x32, 0x22, 0x6b, 0x0a, 0x0b, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x63, 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x0b, 0x57, 0x69, 0x72, 0x65, 0x43, 0x61, 0x62, 0x69,
0x6e, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x73, 0x78, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x52, 0x02, 0x73, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x63, 0x18, 0x04, 0x20,
0x01, 0x28, 0x08, 0x52, 0x02, 0x61, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x74, 0x61, 0x67,
0x65, 0x22, 0x37, 0x0a, 0x11, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x72,
0x72, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x0b, 0x41, 0x69, 0x72, 0x50,
0x61, 0x76, 0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x70,
0x61, 0x76, 0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x69, 0x72, 0x50, 0x61, 0x76,
0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x61, 0x76, 0x69,
0x6c, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
0x12, 0x13, 0x0a, 0x0f, 0x45, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 0x50, 0x61, 0x76, 0x69, 0x6c,
0x69, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x69, 0x72, 0x53, 0x75, 0x70, 0x70,
0x6c, 0x79, 0x50, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x22, 0xc9, 0x01, 0x0a,
0x05, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x0e, 0x45, 0x61,
0x72, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x76, 0x61,
0x6c, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65,
0x52, 0x09, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x04, 0x54,
0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x43,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x00, 0x12, 0x14, 0x0a,
0x10, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x41, 0x69, 0x72, 0x56, 0x61, 0x6c, 0x76,
0x65, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x41, 0x69, 0x72, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16,
0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x42, 0x75, 0x74, 0x74, 0x65, 0x72, 0x66, 0x6c,
0x79, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x03, 0x22, 0x36, 0x0a, 0x10, 0x47, 0x61, 0x73, 0x4d,
0x69, 0x78, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x22, 0x33, 0x0a, 0x0d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x77, 0x69, 0x74, 0x63,
0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x0b, 0x57, 0x69, 0x72, 0x65, 0x43, 0x61, 0x62,
0x69, 0x6e, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x0b, 0x41, 0x69, 0x72,
0x50, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x22, 0x3f, 0x0a, 0x19, 0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41,
0x69, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x22, 0x3b, 0x0a, 0x15, 0x41, 0x69, 0x72, 0x50, 0x75, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x30,
0x0a, 0x0a, 0x41, 0x69, 0x72, 0x43, 0x75, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x22, 0xa3, 0x01, 0x0a, 0x03, 0x46, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x0c,
0x70, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x69, 0x72, 0x50, 0x61,
0x76, 0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x61, 0x76,
0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x54, 0x79, 0x70,
0x65, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 0x50, 0x61, 0x76, 0x69,
0x6c, 0x69, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x69, 0x72, 0x53, 0x75, 0x70,
0x70, 0x6c, 0x79, 0x50, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x22, 0xc9, 0x01,
0x0a, 0x05, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x76,
0x61, 0x6c, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11,
0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x2e, 0x54, 0x79, 0x70,
0x65, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x04,
0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x00, 0x12, 0x14,
0x0a, 0x10, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x41, 0x69, 0x72, 0x56, 0x61, 0x6c,
0x76, 0x65, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x41, 0x69, 0x72, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x02, 0x12, 0x1a, 0x0a,
0x16, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x42, 0x75, 0x74, 0x74, 0x65, 0x72, 0x66,
0x6c, 0x79, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x03, 0x22, 0x36, 0x0a, 0x10, 0x47, 0x61, 0x73,
0x4d, 0x69, 0x78, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x22, 0x3f, 0x0a, 0x19, 0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x41, 0x69, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x22, 0x3b, 0x0a, 0x15, 0x41, 0x69, 0x72, 0x50, 0x75, 0x72, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63,
0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22,
0x30, 0x0a, 0x0a, 0x41, 0x69, 0x72, 0x43, 0x75, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x22, 0xa3, 0x01, 0x0a, 0x03, 0x46, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a,
0x07, 0x66, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f,
0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x61, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52,
0x07, 0x66, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4d, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
0x12, 0x0d, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x61, 0x6e, 0x10, 0x00, 0x12,
0x0f, 0x0a, 0x0b, 0x46, 0x63, 0x42, 0x79, 0x70, 0x61, 0x73, 0x73, 0x46, 0x61, 0x6e, 0x10, 0x01,
0x12, 0x10, 0x0a, 0x0c, 0x53, 0x6f, 0x66, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x61, 0x6e,
0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x48, 0x69, 0x67, 0x68, 0x4c, 0x6f, 0x77, 0x53, 0x70, 0x65,
0x65, 0x64, 0x46, 0x61, 0x6e, 0x10, 0x03, 0x22, 0x34, 0x0a, 0x0e, 0x47, 0x61, 0x73, 0x45, 0x6e,
0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x74, 0x0a,
0x03, 0x43, 0x6b, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e,
0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e,
0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e,
0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72,
0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x73, 0x22, 0x96, 0x01, 0x0a, 0x03, 0x58, 0x63, 0x6a, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5d, 0x0a, 0x19, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x07,
0x66, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x61, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07,
0x66, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4d, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12,
0x0d, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x61, 0x6e, 0x10, 0x00, 0x12, 0x0f,
0x0a, 0x0b, 0x46, 0x63, 0x42, 0x79, 0x70, 0x61, 0x73, 0x73, 0x46, 0x61, 0x6e, 0x10, 0x01, 0x12,
0x10, 0x0a, 0x0c, 0x53, 0x6f, 0x66, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x61, 0x6e, 0x10,
0x02, 0x12, 0x13, 0x0a, 0x0f, 0x48, 0x69, 0x67, 0x68, 0x4c, 0x6f, 0x77, 0x53, 0x70, 0x65, 0x65,
0x64, 0x46, 0x61, 0x6e, 0x10, 0x03, 0x22, 0x34, 0x0a, 0x0e, 0x47, 0x61, 0x73, 0x45, 0x6e, 0x76,
0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x74, 0x0a, 0x03,
0x43, 0x6b, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69,
0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45,
0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65,
0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69,
0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x75,
0x6d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x0b, 0x6e, 0x75, 0x6d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0xdd, 0x16, 0x0a,
0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77,
0x6e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x16,
0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x75, 0x72,
0x6e, 0x6f, 0x75, 0x74, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x10, 0x04, 0x12, 0x1a, 0x0a,
0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x72, 0x61, 0x6e,
0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x10, 0x06, 0x12,
0x21, 0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65,
0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x4c, 0x69, 0x6e, 0x6b, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x09,
0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x52,
0x65, 0x6c, 0x61, 0x79, 0x10, 0x0a, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72,
0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x75, 0x74, 0x74, 0x6f,
0x6e, 0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x10, 0x0e, 0x12,
0x12, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x73,
0x64, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6b, 0x78, 0x10, 0x11, 0x12,
0x12, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4b, 0x65,
0x79, 0x10, 0x12, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0x13, 0x12, 0x1f, 0x0a, 0x1b,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x61,
0x6c, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x10, 0x14, 0x12, 0x17, 0x0a,
0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x72, 0x65, 0x61,
0x6b, 0x65, 0x72, 0x73, 0x10, 0x15, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e,
0x10, 0x16, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6b, 0x6d, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x58, 0x63, 0x6a, 0x10, 0x19,
0x12, 0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43,
0x6b, 0x6d, 0x50, 0x73, 0x6c, 0x10, 0x1a, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x69, 0x72, 0x63, 0x75,
0x69, 0x74, 0x10, 0x1b, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x44, 0x6f, 0x6f, 0x72, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10, 0xc3, 0x02,
0x12, 0x1c, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45,
0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x10, 0xc4, 0x02, 0x12, 0x18,
0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x78, 0x69,
0x74, 0x47, 0x61, 0x74, 0x65, 0x10, 0xc5, 0x02, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x77, 0x6f, 0x57, 0x61, 0x79, 0x47, 0x61, 0x74,
0x65, 0x10, 0xc6, 0x02, 0x12, 0x24, 0x0a, 0x1f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67,
0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x10, 0xc7, 0x02, 0x12, 0x25, 0x0a, 0x20, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65, 0x6d, 0x69, 0x41, 0x75, 0x74,
0x6f, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x10, 0xc8,
0x02, 0x12, 0x25, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4d, 0x61,
0x63, 0x68, 0x69, 0x6e, 0x65, 0x10, 0xc9, 0x02, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x69, 0x72, 0x43, 0x75, 0x72, 0x74, 0x61, 0x69,
0x6e, 0x10, 0xca, 0x02, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x43, 0x68, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74, 0x10, 0xcb,
0x02, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x43, 0x69, 0x76, 0x69, 0x6c, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x73, 0x65, 0x44, 0x6f, 0x6f, 0x72,
0x10, 0xcc, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x45, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x10, 0xcd, 0x02, 0x12, 0x18,
0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x6c, 0x65,
0x76, 0x61, 0x74, 0x6f, 0x72, 0x10, 0xce, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79,
0x4c, 0x69, 0x67, 0x68, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xcf, 0x02, 0x12, 0x13, 0x0a, 0x0e, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x61, 0x6e, 0x10, 0xd0, 0x02,
0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41,
0x69, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x10, 0xd1, 0x02,
0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46,
0x6c, 0x6f, 0x77, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x10, 0xd2, 0x02, 0x12, 0x20, 0x0a, 0x1b,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x67, 0x68, 0x74,
0x69, 0x6e, 0x67, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x10, 0xd3, 0x02, 0x12, 0x23,
0x0a, 0x1e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x6f, 0x77,
0x65, 0x72, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65,
0x10, 0xd4, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x45, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x47, 0x75, 0x69, 0x64, 0x61,
0x6e, 0x63, 0x65, 0x10, 0xd5, 0x02, 0x12, 0x22, 0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x47,
0x75, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x10, 0xd6, 0x02, 0x12, 0x29, 0x0a, 0x24, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x45, 0x76, 0x61, 0x63, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e,
0x63, 0x65, 0x10, 0xd7, 0x02, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x77, 0x69, 0x74, 0x63,
0x68, 0x10, 0xd8, 0x02, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x50, 0x6c, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72,
0x10, 0xd9, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x57, 0x61, 0x74, 0x65, 0x72, 0x50, 0x75, 0x6d, 0x70, 0x10, 0xda, 0x02, 0x12, 0x19,
0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x61, 0x74,
0x65, 0x72, 0x54, 0x61, 0x6e, 0x6b, 0x10, 0xdb, 0x02, 0x12, 0x22, 0x0a, 0x1d, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x75, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0xdc, 0x02, 0x12, 0x18, 0x0a,
0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x68, 0x53, 0x65,
0x6e, 0x73, 0x6f, 0x72, 0x10, 0xdd, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x4f, 0x32, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10,
0xde, 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x57, 0x61, 0x74, 0x65, 0x72, 0x54, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10, 0xdf, 0x02,
0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50,
0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10, 0xe0, 0x02,
0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46,
0x6c, 0x6f, 0x77, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10, 0xe1, 0x02, 0x12, 0x21, 0x0a, 0x1c,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x65, 0x6d, 0x70, 0x65,
0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10, 0xe2, 0x02, 0x12,
0x1c, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f,
0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x10, 0xe4, 0x02, 0x12, 0x1e, 0x0a,
0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x61, 0x74, 0x65,
0x72, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x10, 0xe5, 0x02, 0x12, 0x1b, 0x0a,
0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x65, 0x74, 0x77,
0x6f, 0x72, 0x6b, 0x48, 0x6f, 0x73, 0x74, 0x10, 0xe6, 0x02, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x6d, 0x6f, 0x6b, 0x65, 0x44, 0x65,
0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0xe7, 0x02, 0x12, 0x23, 0x0a, 0x1e, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74,
0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0xe8, 0x02, 0x12, 0x25,
0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x6e,
0x75, 0x61, 0x6c, 0x46, 0x69, 0x72, 0x65, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x42, 0x75, 0x74, 0x74,
0x6f, 0x6e, 0x10, 0xe9, 0x02, 0x12, 0x23, 0x0a, 0x1e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x47, 0x61, 0x73, 0x46, 0x69, 0x72, 0x65, 0x45, 0x78, 0x74, 0x69, 0x6e,
0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x72, 0x10, 0xea, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x42, 0x65,
0x6c, 0x6c, 0x10, 0xeb, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x46, 0x69, 0x72, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x68,
0x75, 0x74, 0x74, 0x65, 0x72, 0x10, 0xec, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x61, 0x73, 0x41, 0x63, 0x73, 0x10, 0xed, 0x02,
0x12, 0x16, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46,
0x61, 0x73, 0x41, 0x66, 0x63, 0x10, 0xee, 0x02, 0x12, 0x22, 0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x46, 0x69, 0x72, 0x65, 0x50, 0x6f,
0x77, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x10, 0xef, 0x02, 0x12, 0x22, 0x0a, 0x1d,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x61, 0x74, 0x65, 0x72,
0x46, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x10, 0xf0, 0x02,
0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50,
0x75, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x10, 0xf1,
0x02, 0x12, 0x27, 0x0a, 0x22, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69,
0x6e, 0x67, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x10, 0xf2, 0x02, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x69, 0x72, 0x65, 0x44, 0x61, 0x6d,
0x70, 0x65, 0x72, 0x10, 0xf3, 0x02, 0x12, 0x27, 0x0a, 0x22, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x53, 0x6d, 0x6f,
0x6b, 0x65, 0x46, 0x69, 0x72, 0x65, 0x44, 0x61, 0x6d, 0x70, 0x65, 0x72, 0x10, 0xf4, 0x02, 0x12,
0x29, 0x0a, 0x24, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x69,
0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x10, 0xf5, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x61,
0x74, 0x65, 0x10, 0xf6, 0x02, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x57, 0x69, 0x72, 0x65, 0x43, 0x61, 0x62, 0x69, 0x6e, 0x65, 0x74, 0x10,
0xf7, 0x02, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x10,
0xf8, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x52, 0x65, 0x63, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x10, 0xf9, 0x02, 0x12, 0x1e, 0x0a,
0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x48, 0x61, 0x6e, 0x64,
0x63, 0x61, 0x72, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x10, 0xfa, 0x02, 0x12, 0x22, 0x0a,
0x1d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x56, 0x6f, 0x6c, 0x74,
0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x10, 0xfb,
0x02, 0x12, 0x23, 0x0a, 0x1e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x54, 0x68, 0x72, 0x65, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x77, 0x69,
0x74, 0x63, 0x68, 0x10, 0xfc, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x72,
0x72, 0x65, 0x73, 0x74, 0x65, 0x72, 0x10, 0xfd, 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
0x63, 0x74, 0x6f, 0x72, 0x10, 0xfe, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x69, 0x70, 0x65, 0x10, 0xff, 0x02, 0x12, 0x1b, 0x0a,
0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x69, 0x70, 0x65,
0x46, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x80, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x10, 0x81, 0x03, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x61, 0x72, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x10, 0x82, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x69, 0x72, 0x50, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x6f,
0x6e, 0x10, 0x83, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x84, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x47, 0x61, 0x73, 0x4d, 0x69, 0x78,
0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x85, 0x03, 0x12, 0x29, 0x0a,
0x24, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x6d, 0x62,
0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x69, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x65, 0x72, 0x10, 0x86, 0x03, 0x12, 0x25, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x69, 0x72, 0x50, 0x75, 0x72, 0x69, 0x66, 0x69,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x87, 0x03, 0x12,
0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x6e,
0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x88, 0x03, 0x2a, 0x2c, 0x0a, 0x04,
0x50, 0x6f, 0x72, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x05,
0x0a, 0x01, 0x41, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x42, 0x10, 0x02, 0x12, 0x05, 0x0a, 0x01,
0x43, 0x10, 0x03, 0x12, 0x05, 0x0a, 0x01, 0x44, 0x10, 0x04, 0x2a, 0x20, 0x0a, 0x09, 0x44, 0x69,
0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x45, 0x46, 0x54, 0x10,
0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x2a, 0x43, 0x0a, 0x0e,
0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c,
0x0a, 0x08, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b,
0x41, 0x78, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x10, 0x01, 0x12, 0x12, 0x0a,
0x0e, 0x49, 0x6e, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4a, 0x6f, 0x69, 0x6e, 0x74, 0x10,
0x02, 0x42, 0x1a, 0x5a, 0x18, 0x2e, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72,
0x79, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f,
0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75,
0x70, 0x73, 0x22, 0x96, 0x01, 0x0a, 0x03, 0x58, 0x63, 0x6a, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c,
0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e,
0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63,
0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19,
0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e,
0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x75, 0x6d,
0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b,
0x6e, 0x75, 0x6d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0xf0, 0x16, 0x0a, 0x0a,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x16, 0x0a,
0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x75, 0x72, 0x6e,
0x6f, 0x75, 0x74, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x72, 0x61, 0x6e, 0x73,
0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x10, 0x06, 0x12, 0x21,
0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10,
0x07, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x4c, 0x69, 0x6e, 0x6b, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x09, 0x12,
0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x52, 0x65,
0x6c, 0x61, 0x79, 0x10, 0x0a, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x50, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e,
0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x10, 0x0e, 0x12, 0x12,
0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x73, 0x64,
0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6b, 0x78, 0x10, 0x11, 0x12, 0x12,
0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4b, 0x65, 0x79,
0x10, 0x12, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0x13, 0x12, 0x1f, 0x0a, 0x1b, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c,
0x46, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x72, 0x65, 0x61, 0x6b,
0x65, 0x72, 0x73, 0x10, 0x15, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x10,
0x16, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x52, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6b, 0x6d, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x58, 0x63, 0x6a, 0x10, 0x19, 0x12,
0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6b,
0x6d, 0x50, 0x73, 0x6c, 0x10, 0x1a, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69,
0x74, 0x10, 0x1b, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x4c, 0x53, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x44, 0x6f, 0x6f, 0x72, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10,
0xc3, 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x10, 0xc4, 0x02,
0x12, 0x18, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45,
0x78, 0x69, 0x74, 0x47, 0x61, 0x74, 0x65, 0x10, 0xc5, 0x02, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x77, 0x6f, 0x57, 0x61, 0x79, 0x47,
0x61, 0x74, 0x65, 0x10, 0xc6, 0x02, 0x12, 0x24, 0x0a, 0x1f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x65, 0x6e, 0x64, 0x69,
0x6e, 0x67, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x10, 0xc7, 0x02, 0x12, 0x25, 0x0a, 0x20,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65, 0x6d, 0x69, 0x41,
0x75, 0x74, 0x6f, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
0x10, 0xc8, 0x02, 0x12, 0x25, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67,
0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x10, 0xc9, 0x02, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x69, 0x72, 0x43, 0x75, 0x72, 0x74,
0x61, 0x69, 0x6e, 0x10, 0xca, 0x02, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x68, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74,
0x10, 0xcb, 0x02, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x43, 0x69, 0x76, 0x69, 0x6c, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x73, 0x65, 0x44, 0x6f,
0x6f, 0x72, 0x10, 0xcc, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x45, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x10, 0xcd, 0x02,
0x12, 0x18, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45,
0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x10, 0xce, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e,
0x63, 0x79, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xcf, 0x02, 0x12, 0x13, 0x0a,
0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x61, 0x6e, 0x10,
0xd0, 0x02, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x41, 0x69, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x10,
0xd1, 0x02, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x10, 0xd2, 0x02, 0x12, 0x20,
0x0a, 0x1b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x67,
0x68, 0x74, 0x69, 0x6e, 0x67, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x10, 0xd3, 0x02,
0x12, 0x23, 0x0a, 0x1e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50,
0x6f, 0x77, 0x65, 0x72, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e,
0x63, 0x65, 0x10, 0xd4, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x45, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x47, 0x75, 0x69,
0x64, 0x61, 0x6e, 0x63, 0x65, 0x10, 0xd5, 0x02, 0x12, 0x22, 0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x61, 0x74,
0x65, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x10, 0xd6, 0x02, 0x12, 0x29, 0x0a, 0x24,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x45, 0x76, 0x61, 0x63, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x75, 0x69, 0x64,
0x61, 0x6e, 0x63, 0x65, 0x10, 0xd7, 0x02, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x77, 0x69,
0x74, 0x63, 0x68, 0x10, 0xd8, 0x02, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x6c, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
0x65, 0x72, 0x10, 0xd9, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x57, 0x61, 0x74, 0x65, 0x72, 0x50, 0x75, 0x6d, 0x70, 0x10, 0xda, 0x02,
0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57,
0x61, 0x74, 0x65, 0x72, 0x54, 0x61, 0x6e, 0x6b, 0x10, 0xdb, 0x02, 0x12, 0x22, 0x0a, 0x1d, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x75, 0x72, 0x69, 0x66, 0x69,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0xdc, 0x02, 0x12,
0x18, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x68,
0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10, 0xdd, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x4f, 0x32, 0x53, 0x65, 0x6e, 0x73, 0x6f,
0x72, 0x10, 0xde, 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x57, 0x61, 0x74, 0x65, 0x72, 0x54, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10,
0xdf, 0x02, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10,
0xe0, 0x02, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10, 0xe1, 0x02, 0x12, 0x21,
0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x65, 0x6d,
0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x10, 0xe2,
0x02, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x10, 0xe4, 0x02, 0x12,
0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x61,
0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x10, 0xe5, 0x02, 0x12,
0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x65,
0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x6f, 0x73, 0x74, 0x10, 0xe6, 0x02, 0x12, 0x1d, 0x0a, 0x18,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x6d, 0x6f, 0x6b, 0x65,
0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0xe7, 0x02, 0x12, 0x23, 0x0a, 0x1e, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0xe8, 0x02,
0x12, 0x25, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d,
0x61, 0x6e, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x72, 0x65, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x42, 0x75,
0x74, 0x74, 0x6f, 0x6e, 0x10, 0xe9, 0x02, 0x12, 0x23, 0x0a, 0x1e, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x47, 0x61, 0x73, 0x46, 0x69, 0x72, 0x65, 0x45, 0x78, 0x74,
0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x72, 0x10, 0xea, 0x02, 0x12, 0x19, 0x0a, 0x14,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x6c, 0x61, 0x72, 0x6d,
0x42, 0x65, 0x6c, 0x6c, 0x10, 0xeb, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x69, 0x72, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x65, 0x72,
0x53, 0x68, 0x75, 0x74, 0x74, 0x65, 0x72, 0x10, 0xec, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x61, 0x73, 0x41, 0x63, 0x73, 0x10,
0xed, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x46, 0x61, 0x73, 0x41, 0x66, 0x63, 0x10, 0xee, 0x02, 0x12, 0x22, 0x0a, 0x1d, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x46, 0x69, 0x72, 0x65,
0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x10, 0xef, 0x02, 0x12, 0x22,
0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x61, 0x74,
0x65, 0x72, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x10,
0xf0, 0x02, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x50, 0x75, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e,
0x10, 0xf1, 0x02, 0x12, 0x27, 0x0a, 0x22, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6e,
0x73, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x10, 0xf2, 0x02, 0x12, 0x1a, 0x0a, 0x15,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x69, 0x72, 0x65, 0x44,
0x61, 0x6d, 0x70, 0x65, 0x72, 0x10, 0xf3, 0x02, 0x12, 0x27, 0x0a, 0x22, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x53,
0x6d, 0x6f, 0x6b, 0x65, 0x46, 0x69, 0x72, 0x65, 0x44, 0x61, 0x6d, 0x70, 0x65, 0x72, 0x10, 0xf4,
0x02, 0x12, 0x29, 0x0a, 0x24, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x46, 0x69, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x10, 0xf5, 0x02, 0x12, 0x19, 0x0a, 0x14,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x6c, 0x6f, 0x6f, 0x64,
0x47, 0x61, 0x74, 0x65, 0x10, 0xf6, 0x02, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x69, 0x72, 0x65, 0x43, 0x61, 0x62, 0x69, 0x6e, 0x65,
0x74, 0x10, 0xf7, 0x02, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65,
0x72, 0x10, 0xf8, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x52, 0x65, 0x63, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x10, 0xf9, 0x02, 0x12,
0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x48, 0x61,
0x6e, 0x64, 0x63, 0x61, 0x72, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x10, 0xfa, 0x02, 0x12,
0x22, 0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x56, 0x6f,
0x6c, 0x74, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72,
0x10, 0xfb, 0x02, 0x12, 0x23, 0x0a, 0x1e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x54, 0x68, 0x72, 0x65, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53,
0x77, 0x69, 0x74, 0x63, 0x68, 0x10, 0xfc, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x69, 0x6e, 0x67,
0x41, 0x72, 0x72, 0x65, 0x73, 0x74, 0x65, 0x72, 0x10, 0xfd, 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0xfe, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x69, 0x70, 0x65, 0x10, 0xff, 0x02, 0x12,
0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x69,
0x70, 0x65, 0x46, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x80, 0x03, 0x12, 0x1b, 0x0a, 0x16,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x6f, 0x77, 0x65, 0x72,
0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x10, 0x81, 0x03, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x61, 0x72, 0x74, 0x68, 0x69, 0x6e, 0x67,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x82, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x69, 0x72, 0x50, 0x61, 0x76, 0x69, 0x6c,
0x69, 0x6f, 0x6e, 0x10, 0x83, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x84, 0x03, 0x12, 0x20, 0x0a,
0x1b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x47, 0x61, 0x73, 0x4d,
0x69, 0x78, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x85, 0x03, 0x12,
0x29, 0x0a, 0x24, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f,
0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x69, 0x72, 0x43, 0x6f, 0x6e, 0x64,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x10, 0x86, 0x03, 0x12, 0x25, 0x0a, 0x20, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x69, 0x72, 0x50, 0x75, 0x72, 0x69,
0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x87,
0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x88, 0x03, 0x2a, 0x2c,
0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00,
0x12, 0x05, 0x0a, 0x01, 0x41, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x42, 0x10, 0x02, 0x12, 0x05,
0x0a, 0x01, 0x43, 0x10, 0x03, 0x12, 0x05, 0x0a, 0x01, 0x44, 0x10, 0x04, 0x2a, 0x20, 0x0a, 0x09,
0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x45, 0x46,
0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x2a, 0x43,
0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65,
0x12, 0x0c, 0x0a, 0x08, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x10, 0x00, 0x12, 0x0f,
0x0a, 0x0b, 0x41, 0x78, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x10, 0x01, 0x12,
0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4a, 0x6f, 0x69, 0x6e,
0x74, 0x10, 0x02, 0x42, 0x1a, 0x5a, 0x18, 0x2e, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74,
0x6f, 0x72, 0x79, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -6630,24 +6648,25 @@ var file_model_proto_depIdxs = []int32{
37, // 87: model.ElectronicGroup.components:type_name -> model.ElectronicComponent
0, // 88: model.ElectronicComponent.deviceType:type_name -> model.DeviceType
10, // 89: model.Platform.direction:type_name -> model.Platform.PlatformDirection
43, // 90: model.CentralizedStationRef.cjList:type_name -> model.CjData
45, // 91: model.CentralizedStationRef.qdList:type_name -> model.QdData
47, // 92: model.CentralizedStationRef.sectionCodePoints:type_name -> model.CiSectionCodePoint
44, // 93: model.CjData.refRelays:type_name -> model.CjDataItem
11, // 94: model.Route.routeType:type_name -> model.Route.RouteType
72, // 95: model.Route.turnouts:type_name -> model.Route.TurnoutPosition
25, // 96: model.Pipe.portA:type_name -> model.DevicePort
25, // 97: model.Pipe.portB:type_name -> model.DevicePort
12, // 98: model.AirPavilion.pavilionType:type_name -> model.AirPavilion.Type
13, // 99: model.Valve.valveType:type_name -> model.Valve.Type
14, // 100: model.Fan.fanType:type_name -> model.Fan.Type
30, // 101: model.Ckm.electronicComponentGroups:type_name -> model.ElectronicComponentGroup
30, // 102: model.Xcj.electronicComponentGroups:type_name -> model.ElectronicComponentGroup
103, // [103:103] is the sub-list for method output_type
103, // [103:103] is the sub-list for method input_type
103, // [103:103] is the sub-list for extension type_name
103, // [103:103] is the sub-list for extension extendee
0, // [0:103] is the sub-list for field type_name
30, // 90: model.Platform.electronicComponentGroups:type_name -> model.ElectronicComponentGroup
43, // 91: model.CentralizedStationRef.cjList:type_name -> model.CjData
45, // 92: model.CentralizedStationRef.qdList:type_name -> model.QdData
47, // 93: model.CentralizedStationRef.sectionCodePoints:type_name -> model.CiSectionCodePoint
44, // 94: model.CjData.refRelays:type_name -> model.CjDataItem
11, // 95: model.Route.routeType:type_name -> model.Route.RouteType
72, // 96: model.Route.turnouts:type_name -> model.Route.TurnoutPosition
25, // 97: model.Pipe.portA:type_name -> model.DevicePort
25, // 98: model.Pipe.portB:type_name -> model.DevicePort
12, // 99: model.AirPavilion.pavilionType:type_name -> model.AirPavilion.Type
13, // 100: model.Valve.valveType:type_name -> model.Valve.Type
14, // 101: model.Fan.fanType:type_name -> model.Fan.Type
30, // 102: model.Ckm.electronicComponentGroups:type_name -> model.ElectronicComponentGroup
30, // 103: model.Xcj.electronicComponentGroups:type_name -> model.ElectronicComponentGroup
104, // [104:104] is the sub-list for method output_type
104, // [104:104] is the sub-list for method input_type
104, // [104:104] is the sub-list for extension type_name
104, // [104:104] is the sub-list for extension extendee
0, // [0:104] is the sub-list for field type_name
}
func init() { file_model_proto_init() }

View File

@ -4,9 +4,10 @@ import "joylink.club/rtsssimulation/repository/model/proto"
type Platform struct {
Identity
code string
station *Station
section *PhysicalSection
code string
station *Station
section *PhysicalSection
componentGroups []*ElectronicComponentGroup
}
func NewPlatform(id string, code string) *Platform {
@ -30,3 +31,7 @@ func (p *Platform) Station() *Station {
func (p *Platform) Section() *PhysicalSection {
return p.section
}
func (p *Platform) ComponentGroups() []*ElectronicComponentGroup {
return p.componentGroups
}

View File

@ -354,6 +354,14 @@ func (repo *Repository) CkmPslList() []*CkmPsl {
return list
}
func (repo *Repository) PlatformList() []*Platform {
var list []*Platform
for _, model := range repo.platformMap {
list = append(list, model)
}
return list
}
func (repo *Repository) GetCentralizedStationRef(centralizedStationId string) *proto.CentralizedStationRef {
return repo.centralizedMap[centralizedStationId]
}
@ -438,6 +446,10 @@ func (repo *Repository) FindPhysicalSection(id string) *PhysicalSection {
return repo.physicalSectionMap[id]
}
func (repo *Repository) FindRelay(id string) *Relay {
return repo.relayMap[id]
}
func (repo *Repository) FindStationByStationName(name string) *Station {
for _, s := range repo.StationList() {
if s.code == name {
@ -451,7 +463,7 @@ func (repo *Repository) FindPsd(id string) *Psd {
return repo.psdMap[id]
}
func (repo *Repository) FindPlatfrom(id string) *Platform {
func (repo *Repository) FindPlatform(id string) *Platform {
return repo.platformMap[id]
}
@ -527,7 +539,7 @@ func (repo *Repository) generateCoordinateInfo(coordinateSystem string) error {
return nil
}
func (repo Repository) GetCoordinateInfo() *MapCoordinate {
func (repo *Repository) GetCoordinateInfo() *MapCoordinate {
return repo.coordinate
}

View File

@ -274,6 +274,18 @@ func buildPlatformRelationShip(source *proto.Repository, repo *Repository) error
return fmt.Errorf("站台[id:%s]关联的车站[id:%s]不存在", platform.Id(), protoData.StationId)
}
platform.station = station
for _, group := range protoData.ElectronicComponentGroups {
var components []IGroupedElectronicComponent
for _, id := range group.GetComponentIds() {
if relay := repo.relayMap[id]; relay != nil {
components = append(components, relay)
}
}
platform.componentGroups = append(platform.componentGroups, &ElectronicComponentGroup{
code: group.Code,
components: components,
})
}
}
return nil
}