diff --git a/component/iscs_bas.go b/component/iscs_bas.go index 946d877..789c1d8 100644 --- a/component/iscs_bas.go +++ b/component/iscs_bas.go @@ -1,7 +1,11 @@ package component -// SpaceAreaEnv 空间区域BAS环境(如站厅、设备室等的温度、湿度、烟雾浓度、CO2浓度等) -type SpaceAreaEnv struct { - T int16 //温度 - +// ExhaustPavilion 排风亭 +type ExhaustPavilion struct { + Normal bool //true-正常 +} + +// AirSupplyPavilion 送风亭 +type AirSupplyPavilion struct { + Normal bool //true-正常 } diff --git a/proto/src/model.proto b/proto/src/model.proto index 6792417..b2d6ed3 100644 --- a/proto/src/model.proto +++ b/proto/src/model.proto @@ -327,22 +327,18 @@ enum DeviceType { DeviceType_PowerSource = 385; //ISCS 接地装置 DeviceType_EarthingDevice = 386; - //ISCS 排风亭 - DeviceType_ExhaustPavilion = 387; - //ISCS 送风亭 - DeviceType_AirSupplyPavilion = 388; - //ISCS 电动调节阀 - DeviceType_ElectricControlValve = 389; - //ISCS 电动风阀 - DeviceType_ElectricAirValve = 390; + //ISCS 风亭 + DeviceType_AirPavilion = 387; + //ISCS 阀门 + DeviceType_Valve = 388; //ISCS 混合静压室 - DeviceType_GasMixingChamber = 391; + DeviceType_GasMixingChamber = 389; //ISCS 组合式空调 - DeviceType_CombinationAirConditioner = 392; + DeviceType_CombinationAirConditioner = 390; //ISCS 净化装置 - DeviceType_AirPurificationDevice = 393; + DeviceType_AirPurificationDevice = 391; //ISCS 气体环境(正常空气+有害烟雾) - DeviceType_GasEnvironment = 394; + DeviceType_GasEnvironment = 392; } @@ -649,32 +645,29 @@ message WireCabinet{ string code = 2; } -//排风亭 -//有一个输入端口A,该端口连接排气管 -message ExhaustPavilion{ - string id = 1; - string code = 2; -} -//送风亭 -//有一个输出端口A,该端口与送风管连接 -message AirSupplyPavilion{ - string id = 1; - string code = 2; -} -//电动调节阀 -//有两个端口,分别为A和B -message ElectricControlValve{ +//风亭(排风亭、送风亭) +message AirPavilion{ string id = 1; string code = 2; + enum Type{ + ExhaustPavilion = 0;//排风亭 + AirSupplyPavilion = 1;//送风亭 + } + Type pavilionType = 3;//风亭子类型 } -//电动风阀 -//有两个端口,分别为A和B -message ElectricAirValve{ +//阀门(电动调节阀、电动风阀) +message Valve{ string id = 1; string code = 2; + enum Type{ + ElectricControlValve = 0;//电动调节阀 + ElectricAirValve = 1;//电动风阀 + } + Type valveType = 3;//阀门子类型 } + //混合室静压箱(气体) //有四个端口,ABC三个端口为输入口,D端口为输出口 message GasMixingChamber{ diff --git a/repository/iscs_bas_dxt.go b/repository/iscs_bas_dxt.go index 265c52f..7e9631e 100644 --- a/repository/iscs_bas_dxt.go +++ b/repository/iscs_bas_dxt.go @@ -4,67 +4,88 @@ import "joylink.club/rtsssimulation/repository/model/proto" //ISCS BAS 大系统相关 -// ExhaustPavilion 排风亭 -// 有一个输入端口A,该端口连接排气管 -type ExhaustPavilion struct { +// AirPavilion 风亭(排、送) +type AirPavilion struct { Identity - Code string + Code string + PavilionType proto.AirPavilion_Type //风亭子类型 + PortA DevicePort //风亭A端口连接的设备 } -func NewExhaustPavilion(id string, code string) *ExhaustPavilion { - return &ExhaustPavilion{ - Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_ExhaustPavilion}, - Code: code, +func NewAirPavilion(id string, code string, pavilionType proto.AirPavilion_Type) *AirPavilion { + return &AirPavilion{ + Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_AirPavilion}, + Code: code, + PavilionType: pavilionType, } } - -// AirSupplyPavilion 送风亭 -// 有一个输出端口A,该端口与送风管连接 -type AirSupplyPavilion struct { - Identity - Code string +func (p *AirPavilion) PortNum() int { + return 1 } -func NewAirSupplyPavilion(id string, code string) *AirSupplyPavilion { - return &AirSupplyPavilion{ - Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_AirSupplyPavilion}, - Code: code, +// AirPavilionPort 风亭端口 +// +// implement DevicePort +type AirPavilionPort struct { + port proto.Port + device *CircuitBreaker +} + +func (p *AirPavilionPort) Port() proto.Port { + return p.port +} +func (p *AirPavilionPort) Device() PortedDevice { + return p.device +} + +/////////////////////////////////////////////////////////// + +// Valve 阀门(电动调节阀、电动风阀) +type Valve struct { + Identity + Code string + ValveType proto.Valve_Type //阀门子类型 + PortA DevicePort //阀门A端口连接的设备 + PortB DevicePort //阀门B端口连接的设备 +} + +func NewValve(id string, code string, valveType proto.Valve_Type) *Valve { + return &Valve{ + Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_Valve}, + Code: code, + ValveType: valveType, } } - -// ElectricControlValve 电动调节阀 -// 有两个端口,分别为A和B -type ElectricControlValve struct { - Identity - Code string +func (p *Valve) PortNum() int { + return 2 } -func NewElectricControlValve(id string, code string) *ElectricControlValve { - return &ElectricControlValve{ - Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_ElectricControlValve}, - Code: code, - } +// ValvePort 风亭端口 +// +// implement DevicePort +type ValvePort struct { + port proto.Port + device *Valve } -// ElectricAirValve 电动风阀 -// 有两个端口,分别为A和B -type ElectricAirValve struct { - Identity - Code string +func (p *ValvePort) Port() proto.Port { + return p.port +} +func (p *ValvePort) Device() PortedDevice { + return p.device } -func NewElectricAirValve(id string, code string) *ElectricAirValve { - return &ElectricAirValve{ - Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_ElectricAirValve}, - Code: code, - } -} +////////////////////////////////////////////////// // GasMixingChamber 混合室静压箱(气体) // 有四个端口,ABC三个端口为输入口,D端口为输出口 type GasMixingChamber struct { Identity - Code string + Code string + PortA DevicePort //A端口连接的设备 + PortB DevicePort //B端口连接的设备 + PortC DevicePort //C端口连接的设备 + PortD DevicePort //D端口连接的设备 } func NewGasMixingChamber(id string, code string) *GasMixingChamber { @@ -73,13 +94,37 @@ func NewGasMixingChamber(id string, code string) *GasMixingChamber { Code: code, } } +func (p *GasMixingChamber) PortNum() int { + return 4 +} + +// GasMixingChamberPort 混合室静压箱端口 +// +// implement DevicePort +type GasMixingChamberPort struct { + port proto.Port + device *GasMixingChamber +} + +func (p *GasMixingChamberPort) Port() proto.Port { + return p.port +} +func (p *GasMixingChamberPort) Device() PortedDevice { + return p.device +} + +//////////////////////////////////////////////// // CombinationAirConditioner 组合式空调 // 有四个端口,新风输入端口A,工作风输出端口B; // 端口C输出风再通过端口D输入,通过C->D实现对风再处理。 type CombinationAirConditioner struct { Identity - Code string + Code string + PortA DevicePort //新风输入A端口连接的设备 + PortB DevicePort //工作风输出B端口连接的设备 + PortC DevicePort //C端口连接的设备 + PortD DevicePort //D端口连接的设备 } func NewCombinationAirConditioner(id string, code string) *CombinationAirConditioner { @@ -88,12 +133,34 @@ func NewCombinationAirConditioner(id string, code string) *CombinationAirConditi Code: code, } } +func (p *CombinationAirConditioner) PortNum() int { + return 4 +} + +// CombinationAirConditionerPort 组合式空调端口 +// +// implement DevicePort +type CombinationAirConditionerPort struct { + port proto.Port + device *CombinationAirConditioner +} + +func (p *CombinationAirConditionerPort) Port() proto.Port { + return p.port +} +func (p *CombinationAirConditionerPort) Device() PortedDevice { + return p.device +} + +///////////////////////////////////////////////////////////////// // AirPurificationDevice 净化装置(对组合式空调B端口输出的工作风进行净化) // 有两个端口,端口A输入,端口B输出 type AirPurificationDevice struct { Identity - Code string + Code string + PortA DevicePort //A端口连接的设备 + PortB DevicePort //B端口连接的设备 } func NewAirPurificationDevice(id string, code string) *AirPurificationDevice { @@ -102,6 +169,26 @@ func NewAirPurificationDevice(id string, code string) *AirPurificationDevice { Code: code, } } +func (p *AirPurificationDevice) PortNum() int { + return 2 +} + +// AirPurificationDevicePort 净化装置端口 +// +// implement DevicePort +type AirPurificationDevicePort struct { + port proto.Port + device *AirPurificationDevice +} + +func (p *AirPurificationDevicePort) Port() proto.Port { + return p.port +} +func (p *AirPurificationDevicePort) Device() PortedDevice { + return p.device +} + +///////////////////////////////////////////////////////// // AirCurtain 空气幕 type AirCurtain struct { @@ -116,10 +203,14 @@ func NewAirCurtain(id string, code string) *AirCurtain { } } +////////////////////////////////////////////////////////// + // Fan 风机 type Fan struct { Identity - Code string + Code string + PortA DevicePort //A端口连接的设备 + PortB DevicePort //B端口连接的设备 } func NewFan(id string, code string) *Fan { @@ -128,6 +219,26 @@ func NewFan(id string, code string) *Fan { Code: code, } } +func (p *Fan) PortNum() int { + return 2 +} + +// FanPort 风机端口 +// +// implement DevicePort +type FanPort struct { + port proto.Port + device *Fan +} + +func (p *FanPort) Port() proto.Port { + return p.port +} +func (p *FanPort) Device() PortedDevice { + return p.device +} + +//////////////////////////////////////////////// // GasEnvironment 气体环境(正常空气+有害烟雾) // 有多个输入口,统一为端口A,用来为环境补充新鲜空气; @@ -135,12 +246,26 @@ func NewFan(id string, code string) *Fan { // 排出气体动力源为该环境。 type GasEnvironment struct { Identity - Code string + Code string + PortsA []DevicePort // 有多个输入口,统一为端口A,用来为环境补充新鲜空气; + PortsB []DevicePort // 有多个输出口,统一为端口B,用户将环境的混浊气体排除; } -func NewGasEnvironment(id string, code string) *GasEnvironment { - return &GasEnvironment{ - Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_GasEnvironment}, - Code: code, - } +func (p *GasEnvironment) PortNum() int { + return len(p.PortsA) + len(p.PortsB) +} + +// GasEnvironmentPort 气体环境端口 +// +// implement DevicePort +type GasEnvironmentPort struct { + port proto.Port + device *GasEnvironment +} + +func (p *GasEnvironmentPort) Port() proto.Port { + return p.port +} +func (p *GasEnvironmentPort) Device() PortedDevice { + return p.device } diff --git a/repository/model/proto/model.pb.go b/repository/model/proto/model.pb.go index 61d2689..3f7d226 100644 --- a/repository/model/proto/model.pb.go +++ b/repository/model/proto/model.pb.go @@ -175,22 +175,18 @@ const ( DeviceType_DeviceType_PowerSource DeviceType = 385 // ISCS 接地装置 DeviceType_DeviceType_EarthingDevice DeviceType = 386 - // ISCS 排风亭 - DeviceType_DeviceType_ExhaustPavilion DeviceType = 387 - // ISCS 送风亭 - DeviceType_DeviceType_AirSupplyPavilion DeviceType = 388 - // ISCS 电动调节阀 - DeviceType_DeviceType_ElectricControlValve DeviceType = 389 - // ISCS 电动风阀 - DeviceType_DeviceType_ElectricAirValve DeviceType = 390 + // ISCS 风亭 + DeviceType_DeviceType_AirPavilion DeviceType = 387 + // ISCS 阀门 + DeviceType_DeviceType_Valve DeviceType = 388 // ISCS 混合静压室 - DeviceType_DeviceType_GasMixingChamber DeviceType = 391 + DeviceType_DeviceType_GasMixingChamber DeviceType = 389 // ISCS 组合式空调 - DeviceType_DeviceType_CombinationAirConditioner DeviceType = 392 + DeviceType_DeviceType_CombinationAirConditioner DeviceType = 390 // ISCS 净化装置 - DeviceType_DeviceType_AirPurificationDevice DeviceType = 393 + DeviceType_DeviceType_AirPurificationDevice DeviceType = 391 // ISCS 气体环境(正常空气+有害烟雾) - DeviceType_DeviceType_GasEnvironment DeviceType = 394 + DeviceType_DeviceType_GasEnvironment DeviceType = 392 ) // Enum value maps for DeviceType. @@ -282,14 +278,12 @@ var ( 384: "DeviceType_PipeFitting", 385: "DeviceType_PowerSource", 386: "DeviceType_EarthingDevice", - 387: "DeviceType_ExhaustPavilion", - 388: "DeviceType_AirSupplyPavilion", - 389: "DeviceType_ElectricControlValve", - 390: "DeviceType_ElectricAirValve", - 391: "DeviceType_GasMixingChamber", - 392: "DeviceType_CombinationAirConditioner", - 393: "DeviceType_AirPurificationDevice", - 394: "DeviceType_GasEnvironment", + 387: "DeviceType_AirPavilion", + 388: "DeviceType_Valve", + 389: "DeviceType_GasMixingChamber", + 390: "DeviceType_CombinationAirConditioner", + 391: "DeviceType_AirPurificationDevice", + 392: "DeviceType_GasEnvironment", } DeviceType_value = map[string]int32{ "DeviceType_Unknown": 0, @@ -378,14 +372,12 @@ var ( "DeviceType_PipeFitting": 384, "DeviceType_PowerSource": 385, "DeviceType_EarthingDevice": 386, - "DeviceType_ExhaustPavilion": 387, - "DeviceType_AirSupplyPavilion": 388, - "DeviceType_ElectricControlValve": 389, - "DeviceType_ElectricAirValve": 390, - "DeviceType_GasMixingChamber": 391, - "DeviceType_CombinationAirConditioner": 392, - "DeviceType_AirPurificationDevice": 393, - "DeviceType_GasEnvironment": 394, + "DeviceType_AirPavilion": 387, + "DeviceType_Valve": 388, + "DeviceType_GasMixingChamber": 389, + "DeviceType_CombinationAirConditioner": 390, + "DeviceType_AirPurificationDevice": 391, + "DeviceType_GasEnvironment": 392, } ) @@ -970,6 +962,98 @@ func (Pipe_Type) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{32, 0} } +type AirPavilion_Type int32 + +const ( + AirPavilion_ExhaustPavilion AirPavilion_Type = 0 //排风亭 + AirPavilion_AirSupplyPavilion AirPavilion_Type = 1 //送风亭 +) + +// Enum value maps for AirPavilion_Type. +var ( + AirPavilion_Type_name = map[int32]string{ + 0: "ExhaustPavilion", + 1: "AirSupplyPavilion", + } + AirPavilion_Type_value = map[string]int32{ + "ExhaustPavilion": 0, + "AirSupplyPavilion": 1, + } +) + +func (x AirPavilion_Type) Enum() *AirPavilion_Type { + p := new(AirPavilion_Type) + *p = x + return p +} + +func (x AirPavilion_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AirPavilion_Type) Descriptor() protoreflect.EnumDescriptor { + return file_model_proto_enumTypes[11].Descriptor() +} + +func (AirPavilion_Type) Type() protoreflect.EnumType { + return &file_model_proto_enumTypes[11] +} + +func (x AirPavilion_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AirPavilion_Type.Descriptor instead. +func (AirPavilion_Type) EnumDescriptor() ([]byte, []int) { + return file_model_proto_rawDescGZIP(), []int{45, 0} +} + +type Valve_Type int32 + +const ( + Valve_ElectricControlValve Valve_Type = 0 //电动调节阀 + Valve_ElectricAirValve Valve_Type = 1 //电动风阀 +) + +// Enum value maps for Valve_Type. +var ( + Valve_Type_name = map[int32]string{ + 0: "ElectricControlValve", + 1: "ElectricAirValve", + } + Valve_Type_value = map[string]int32{ + "ElectricControlValve": 0, + "ElectricAirValve": 1, + } +) + +func (x Valve_Type) Enum() *Valve_Type { + p := new(Valve_Type) + *p = x + return p +} + +func (x Valve_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Valve_Type) Descriptor() protoreflect.EnumDescriptor { + return file_model_proto_enumTypes[12].Descriptor() +} + +func (Valve_Type) Type() protoreflect.EnumType { + return &file_model_proto_enumTypes[12] +} + +func (x Valve_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Valve_Type.Descriptor instead. +func (Valve_Type) EnumDescriptor() ([]byte, []int) { + return file_model_proto_rawDescGZIP(), []int{46, 0} +} + type Repository struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4291,19 +4375,19 @@ func (x *WireCabinet) GetCode() string { return "" } -// 排风亭 -// 有一个输入端口A,该端口连接排气管 -type ExhaustPavilion struct { +// 风亭(排风亭、送风亭) +type AirPavilion struct { state protoimpl.MessageState 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"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + PavilionType AirPavilion_Type `protobuf:"varint,3,opt,name=pavilionType,proto3,enum=model.AirPavilion_Type" json:"pavilionType,omitempty"` //风亭子类型 } -func (x *ExhaustPavilion) Reset() { - *x = ExhaustPavilion{} +func (x *AirPavilion) Reset() { + *x = AirPavilion{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4311,13 +4395,13 @@ func (x *ExhaustPavilion) Reset() { } } -func (x *ExhaustPavilion) String() string { +func (x *AirPavilion) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExhaustPavilion) ProtoMessage() {} +func (*AirPavilion) ProtoMessage() {} -func (x *ExhaustPavilion) ProtoReflect() protoreflect.Message { +func (x *AirPavilion) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4329,38 +4413,45 @@ func (x *ExhaustPavilion) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExhaustPavilion.ProtoReflect.Descriptor instead. -func (*ExhaustPavilion) Descriptor() ([]byte, []int) { +// Deprecated: Use AirPavilion.ProtoReflect.Descriptor instead. +func (*AirPavilion) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{45} } -func (x *ExhaustPavilion) GetId() string { +func (x *AirPavilion) GetId() string { if x != nil { return x.Id } return "" } -func (x *ExhaustPavilion) GetCode() string { +func (x *AirPavilion) GetCode() string { if x != nil { return x.Code } return "" } -// 送风亭 -// 有一个输出端口A,该端口与送风管连接 -type AirSupplyPavilion struct { +func (x *AirPavilion) GetPavilionType() AirPavilion_Type { + if x != nil { + return x.PavilionType + } + return AirPavilion_ExhaustPavilion +} + +// 阀门(电动调节阀、电动风阀) +type Valve struct { state protoimpl.MessageState 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"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + ValveType Valve_Type `protobuf:"varint,3,opt,name=valveType,proto3,enum=model.Valve_Type" json:"valveType,omitempty"` //阀门子类型 } -func (x *AirSupplyPavilion) Reset() { - *x = AirSupplyPavilion{} +func (x *Valve) Reset() { + *x = Valve{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4368,13 +4459,13 @@ func (x *AirSupplyPavilion) Reset() { } } -func (x *AirSupplyPavilion) String() string { +func (x *Valve) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AirSupplyPavilion) ProtoMessage() {} +func (*Valve) ProtoMessage() {} -func (x *AirSupplyPavilion) ProtoReflect() protoreflect.Message { +func (x *Valve) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4386,137 +4477,30 @@ func (x *AirSupplyPavilion) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AirSupplyPavilion.ProtoReflect.Descriptor instead. -func (*AirSupplyPavilion) Descriptor() ([]byte, []int) { +// Deprecated: Use Valve.ProtoReflect.Descriptor instead. +func (*Valve) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{46} } -func (x *AirSupplyPavilion) GetId() string { +func (x *Valve) GetId() string { if x != nil { return x.Id } return "" } -func (x *AirSupplyPavilion) GetCode() string { +func (x *Valve) GetCode() string { if x != nil { return x.Code } return "" } -// 电动调节阀 -// 有两个端口,分别为A和B -type ElectricControlValve struct { - state protoimpl.MessageState - 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"` -} - -func (x *ElectricControlValve) Reset() { - *x = ElectricControlValve{} - if protoimpl.UnsafeEnabled { - mi := &file_model_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ElectricControlValve) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ElectricControlValve) ProtoMessage() {} - -func (x *ElectricControlValve) ProtoReflect() protoreflect.Message { - mi := &file_model_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ElectricControlValve.ProtoReflect.Descriptor instead. -func (*ElectricControlValve) Descriptor() ([]byte, []int) { - return file_model_proto_rawDescGZIP(), []int{47} -} - -func (x *ElectricControlValve) GetId() string { +func (x *Valve) GetValveType() Valve_Type { if x != nil { - return x.Id + return x.ValveType } - return "" -} - -func (x *ElectricControlValve) GetCode() string { - if x != nil { - return x.Code - } - return "" -} - -// 电动风阀 -// 有两个端口,分别为A和B -type ElectricAirValve struct { - state protoimpl.MessageState - 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"` -} - -func (x *ElectricAirValve) Reset() { - *x = ElectricAirValve{} - if protoimpl.UnsafeEnabled { - mi := &file_model_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ElectricAirValve) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ElectricAirValve) ProtoMessage() {} - -func (x *ElectricAirValve) ProtoReflect() protoreflect.Message { - mi := &file_model_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ElectricAirValve.ProtoReflect.Descriptor instead. -func (*ElectricAirValve) Descriptor() ([]byte, []int) { - return file_model_proto_rawDescGZIP(), []int{48} -} - -func (x *ElectricAirValve) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ElectricAirValve) GetCode() string { - if x != nil { - return x.Code - } - return "" + return Valve_ElectricControlValve } // 混合室静压箱(气体) @@ -4533,7 +4517,7 @@ type GasMixingChamber struct { func (x *GasMixingChamber) Reset() { *x = GasMixingChamber{} if protoimpl.UnsafeEnabled { - mi := &file_model_proto_msgTypes[49] + mi := &file_model_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4546,7 +4530,7 @@ func (x *GasMixingChamber) String() string { func (*GasMixingChamber) ProtoMessage() {} func (x *GasMixingChamber) ProtoReflect() protoreflect.Message { - mi := &file_model_proto_msgTypes[49] + mi := &file_model_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4559,7 +4543,7 @@ func (x *GasMixingChamber) ProtoReflect() protoreflect.Message { // Deprecated: Use GasMixingChamber.ProtoReflect.Descriptor instead. func (*GasMixingChamber) Descriptor() ([]byte, []int) { - return file_model_proto_rawDescGZIP(), []int{49} + return file_model_proto_rawDescGZIP(), []int{47} } func (x *GasMixingChamber) GetId() string { @@ -4591,7 +4575,7 @@ type CombinationAirConditioner struct { func (x *CombinationAirConditioner) Reset() { *x = CombinationAirConditioner{} if protoimpl.UnsafeEnabled { - mi := &file_model_proto_msgTypes[50] + mi := &file_model_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4604,7 +4588,7 @@ func (x *CombinationAirConditioner) String() string { func (*CombinationAirConditioner) ProtoMessage() {} func (x *CombinationAirConditioner) ProtoReflect() protoreflect.Message { - mi := &file_model_proto_msgTypes[50] + mi := &file_model_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4617,7 +4601,7 @@ func (x *CombinationAirConditioner) ProtoReflect() protoreflect.Message { // Deprecated: Use CombinationAirConditioner.ProtoReflect.Descriptor instead. func (*CombinationAirConditioner) Descriptor() ([]byte, []int) { - return file_model_proto_rawDescGZIP(), []int{50} + return file_model_proto_rawDescGZIP(), []int{48} } func (x *CombinationAirConditioner) GetId() string { @@ -4648,7 +4632,7 @@ type AirPurificationDevice struct { func (x *AirPurificationDevice) Reset() { *x = AirPurificationDevice{} if protoimpl.UnsafeEnabled { - mi := &file_model_proto_msgTypes[51] + mi := &file_model_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4661,7 +4645,7 @@ func (x *AirPurificationDevice) String() string { func (*AirPurificationDevice) ProtoMessage() {} func (x *AirPurificationDevice) ProtoReflect() protoreflect.Message { - mi := &file_model_proto_msgTypes[51] + mi := &file_model_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4674,7 +4658,7 @@ func (x *AirPurificationDevice) ProtoReflect() protoreflect.Message { // Deprecated: Use AirPurificationDevice.ProtoReflect.Descriptor instead. func (*AirPurificationDevice) Descriptor() ([]byte, []int) { - return file_model_proto_rawDescGZIP(), []int{51} + return file_model_proto_rawDescGZIP(), []int{49} } func (x *AirPurificationDevice) GetId() string { @@ -4704,7 +4688,7 @@ type AirCurtain struct { func (x *AirCurtain) Reset() { *x = AirCurtain{} if protoimpl.UnsafeEnabled { - mi := &file_model_proto_msgTypes[52] + mi := &file_model_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4717,7 +4701,7 @@ func (x *AirCurtain) String() string { func (*AirCurtain) ProtoMessage() {} func (x *AirCurtain) ProtoReflect() protoreflect.Message { - mi := &file_model_proto_msgTypes[52] + mi := &file_model_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4730,7 +4714,7 @@ func (x *AirCurtain) ProtoReflect() protoreflect.Message { // Deprecated: Use AirCurtain.ProtoReflect.Descriptor instead. func (*AirCurtain) Descriptor() ([]byte, []int) { - return file_model_proto_rawDescGZIP(), []int{52} + return file_model_proto_rawDescGZIP(), []int{50} } func (x *AirCurtain) GetId() string { @@ -4760,7 +4744,7 @@ type Fan struct { func (x *Fan) Reset() { *x = Fan{} if protoimpl.UnsafeEnabled { - mi := &file_model_proto_msgTypes[53] + mi := &file_model_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4773,7 +4757,7 @@ func (x *Fan) String() string { func (*Fan) ProtoMessage() {} func (x *Fan) ProtoReflect() protoreflect.Message { - mi := &file_model_proto_msgTypes[53] + mi := &file_model_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4786,7 +4770,7 @@ func (x *Fan) ProtoReflect() protoreflect.Message { // Deprecated: Use Fan.ProtoReflect.Descriptor instead. func (*Fan) Descriptor() ([]byte, []int) { - return file_model_proto_rawDescGZIP(), []int{53} + return file_model_proto_rawDescGZIP(), []int{51} } func (x *Fan) GetId() string { @@ -4819,7 +4803,7 @@ type GasEnvironment struct { func (x *GasEnvironment) Reset() { *x = GasEnvironment{} if protoimpl.UnsafeEnabled { - mi := &file_model_proto_msgTypes[54] + mi := &file_model_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4832,7 +4816,7 @@ func (x *GasEnvironment) String() string { func (*GasEnvironment) ProtoMessage() {} func (x *GasEnvironment) ProtoReflect() protoreflect.Message { - mi := &file_model_proto_msgTypes[54] + mi := &file_model_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4845,7 +4829,7 @@ func (x *GasEnvironment) ProtoReflect() protoreflect.Message { // Deprecated: Use GasEnvironment.ProtoReflect.Descriptor instead. func (*GasEnvironment) Descriptor() ([]byte, []int) { - return file_model_proto_rawDescGZIP(), []int{54} + return file_model_proto_rawDescGZIP(), []int{52} } func (x *GasEnvironment) GetId() string { @@ -5365,223 +5349,223 @@ var file_model_proto_rawDesc = []byte{ 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, 0x35, 0x0a, - 0x0f, 0x45, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 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, 0x22, 0x37, 0x0a, 0x11, 0x41, 0x69, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6c, - 0x79, 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, 0x22, 0x3a, 0x0a, - 0x14, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 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, 0x36, 0x0a, 0x10, 0x45, 0x6c, 0x65, - 0x63, 0x74, 0x72, 0x69, 0x63, 0x41, 0x69, 0x72, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x12, 0x0e, 0x0a, + 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, 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, 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, 0x29, 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, 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, 0x2a, 0xc6, 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, 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, + 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, 0x94, 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, 0x36, 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, 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, 0x29, 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, 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, 0x2a, 0xee, 0x15, 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, 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, - 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, 0x1f, 0x0a, 0x1a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x5f, 0x45, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 0x50, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x6f, - 0x6e, 0x10, 0x83, 0x03, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x5f, 0x41, 0x69, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x76, 0x69, - 0x6c, 0x69, 0x6f, 0x6e, 0x10, 0x84, 0x03, 0x12, 0x24, 0x0a, 0x1f, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x85, 0x03, 0x12, 0x20, 0x0a, - 0x1b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x6c, 0x65, 0x63, - 0x74, 0x72, 0x69, 0x63, 0x41, 0x69, 0x72, 0x56, 0x61, 0x6c, 0x76, 0x65, 0x10, 0x86, 0x03, 0x12, + 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, 0x87, + 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, 0x88, 0x03, 0x12, 0x25, 0x0a, 0x20, + 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, 0x89, 0x03, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x10, 0x87, 0x03, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x47, 0x61, 0x73, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x8a, 0x03, 0x2a, 0x2c, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e, + 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, @@ -5607,8 +5591,8 @@ func file_model_proto_rawDescGZIP() []byte { return file_model_proto_rawDescData } -var file_model_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_model_proto_msgTypes = make([]protoimpl.MessageInfo, 55) +var file_model_proto_enumTypes = make([]protoimpl.EnumInfo, 13) +var file_model_proto_msgTypes = make([]protoimpl.MessageInfo, 53) var file_model_proto_goTypes = []interface{}{ (DeviceType)(0), // 0: model.DeviceType (Port)(0), // 1: model.Port @@ -5621,55 +5605,55 @@ var file_model_proto_goTypes = []interface{}{ (Button_ButtonType)(0), // 8: model.Button.ButtonType (Light_LightAspect)(0), // 9: model.Light.LightAspect (Pipe_Type)(0), // 10: model.Pipe.Type - (*Repository)(nil), // 11: model.Repository - (*SignalLayout)(nil), // 12: model.SignalLayout - (*PhysicalSection)(nil), // 13: model.PhysicalSection - (*CheckPoint)(nil), // 14: model.CheckPoint - (*Turnout)(nil), // 15: model.Turnout - (*Signal)(nil), // 16: model.Signal - (*Psd)(nil), // 17: model.Psd - (*Transponder)(nil), // 18: model.Transponder - (*Slope)(nil), // 19: model.Slope - (*SectionalCurvature)(nil), // 20: model.SectionalCurvature - (*DevicePort)(nil), // 21: model.DevicePort - (*Kilometer)(nil), // 22: model.Kilometer - (*KilometerConvert)(nil), // 23: model.KilometerConvert - (*Relay)(nil), // 24: model.Relay - (*PhaseFailureProtector)(nil), // 25: model.PhaseFailureProtector - (*ElectronicComponentGroup)(nil), // 26: model.ElectronicComponentGroup - (*Button)(nil), // 27: model.Button - (*Light)(nil), // 28: model.Light - (*Alarm)(nil), // 29: model.Alarm - (*Station)(nil), // 30: model.Station - (*DeviceEcc)(nil), // 31: model.DeviceEcc - (*ElectronicGroup)(nil), // 32: model.ElectronicGroup - (*ElectronicComponent)(nil), // 33: model.ElectronicComponent - (*Mkx)(nil), // 34: model.Mkx - (*Platform)(nil), // 35: model.Platform - (*Key)(nil), // 36: model.Key - (*CentralizedStationRef)(nil), // 37: model.CentralizedStationRef - (*CjData)(nil), // 38: model.CjData - (*CjDataItem)(nil), // 39: model.CjDataItem - (*QdData)(nil), // 40: model.QdData - (*AsdGroup)(nil), // 41: model.AsdGroup - (*CiSectionCodePoint)(nil), // 42: model.CiSectionCodePoint - (*Pipe)(nil), // 43: model.Pipe - (*PipeFitting)(nil), // 44: model.PipeFitting - (*CircuitBreaker)(nil), // 45: model.CircuitBreaker - (*ThreePositionSwitch)(nil), // 46: model.ThreePositionSwitch - (*HandcartSwitch)(nil), // 47: model.HandcartSwitch - (*Rectifier)(nil), // 48: model.Rectifier - (*Disconnector)(nil), // 49: model.Disconnector - (*VoltageTransformer)(nil), // 50: model.VoltageTransformer - (*PowerSource)(nil), // 51: model.PowerSource - (*LightningArrester)(nil), // 52: model.LightningArrester - (*EarthingDevice)(nil), // 53: model.EarthingDevice - (*NetworkSwitch)(nil), // 54: model.NetworkSwitch - (*WireCabinet)(nil), // 55: model.WireCabinet - (*ExhaustPavilion)(nil), // 56: model.ExhaustPavilion - (*AirSupplyPavilion)(nil), // 57: model.AirSupplyPavilion - (*ElectricControlValve)(nil), // 58: model.ElectricControlValve - (*ElectricAirValve)(nil), // 59: model.ElectricAirValve + (AirPavilion_Type)(0), // 11: model.AirPavilion.Type + (Valve_Type)(0), // 12: model.Valve.Type + (*Repository)(nil), // 13: model.Repository + (*SignalLayout)(nil), // 14: model.SignalLayout + (*PhysicalSection)(nil), // 15: model.PhysicalSection + (*CheckPoint)(nil), // 16: model.CheckPoint + (*Turnout)(nil), // 17: model.Turnout + (*Signal)(nil), // 18: model.Signal + (*Psd)(nil), // 19: model.Psd + (*Transponder)(nil), // 20: model.Transponder + (*Slope)(nil), // 21: model.Slope + (*SectionalCurvature)(nil), // 22: model.SectionalCurvature + (*DevicePort)(nil), // 23: model.DevicePort + (*Kilometer)(nil), // 24: model.Kilometer + (*KilometerConvert)(nil), // 25: model.KilometerConvert + (*Relay)(nil), // 26: model.Relay + (*PhaseFailureProtector)(nil), // 27: model.PhaseFailureProtector + (*ElectronicComponentGroup)(nil), // 28: model.ElectronicComponentGroup + (*Button)(nil), // 29: model.Button + (*Light)(nil), // 30: model.Light + (*Alarm)(nil), // 31: model.Alarm + (*Station)(nil), // 32: model.Station + (*DeviceEcc)(nil), // 33: model.DeviceEcc + (*ElectronicGroup)(nil), // 34: model.ElectronicGroup + (*ElectronicComponent)(nil), // 35: model.ElectronicComponent + (*Mkx)(nil), // 36: model.Mkx + (*Platform)(nil), // 37: model.Platform + (*Key)(nil), // 38: model.Key + (*CentralizedStationRef)(nil), // 39: model.CentralizedStationRef + (*CjData)(nil), // 40: model.CjData + (*CjDataItem)(nil), // 41: model.CjDataItem + (*QdData)(nil), // 42: model.QdData + (*AsdGroup)(nil), // 43: model.AsdGroup + (*CiSectionCodePoint)(nil), // 44: model.CiSectionCodePoint + (*Pipe)(nil), // 45: model.Pipe + (*PipeFitting)(nil), // 46: model.PipeFitting + (*CircuitBreaker)(nil), // 47: model.CircuitBreaker + (*ThreePositionSwitch)(nil), // 48: model.ThreePositionSwitch + (*HandcartSwitch)(nil), // 49: model.HandcartSwitch + (*Rectifier)(nil), // 50: model.Rectifier + (*Disconnector)(nil), // 51: model.Disconnector + (*VoltageTransformer)(nil), // 52: model.VoltageTransformer + (*PowerSource)(nil), // 53: model.PowerSource + (*LightningArrester)(nil), // 54: model.LightningArrester + (*EarthingDevice)(nil), // 55: model.EarthingDevice + (*NetworkSwitch)(nil), // 56: model.NetworkSwitch + (*WireCabinet)(nil), // 57: model.WireCabinet + (*AirPavilion)(nil), // 58: model.AirPavilion + (*Valve)(nil), // 59: model.Valve (*GasMixingChamber)(nil), // 60: model.GasMixingChamber (*CombinationAirConditioner)(nil), // 61: model.CombinationAirConditioner (*AirPurificationDevice)(nil), // 62: model.AirPurificationDevice @@ -5678,94 +5662,96 @@ var file_model_proto_goTypes = []interface{}{ (*GasEnvironment)(nil), // 65: model.GasEnvironment } var file_model_proto_depIdxs = []int32{ - 13, // 0: model.Repository.physicalSections:type_name -> model.PhysicalSection - 14, // 1: model.Repository.checkPoints:type_name -> model.CheckPoint - 15, // 2: model.Repository.turnouts:type_name -> model.Turnout - 16, // 3: model.Repository.signals:type_name -> model.Signal - 18, // 4: model.Repository.transponders:type_name -> model.Transponder - 19, // 5: model.Repository.slopes:type_name -> model.Slope - 20, // 6: model.Repository.sectionalCurvatures:type_name -> model.SectionalCurvature - 23, // 7: model.Repository.kilometerConverts:type_name -> model.KilometerConvert - 24, // 8: model.Repository.relays:type_name -> model.Relay - 25, // 9: model.Repository.phaseFailureProtectors:type_name -> model.PhaseFailureProtector - 27, // 10: model.Repository.buttons:type_name -> model.Button - 17, // 11: model.Repository.psds:type_name -> model.Psd - 28, // 12: model.Repository.lights:type_name -> model.Light - 29, // 13: model.Repository.alarms:type_name -> model.Alarm - 30, // 14: model.Repository.stations:type_name -> model.Station - 34, // 15: model.Repository.mkxs:type_name -> model.Mkx - 35, // 16: model.Repository.platforms:type_name -> model.Platform - 36, // 17: model.Repository.Keys:type_name -> model.Key - 37, // 18: model.Repository.CentralizedStationRefs:type_name -> model.CentralizedStationRef - 43, // 19: model.Repository.pipes:type_name -> model.Pipe - 44, // 20: model.Repository.pipeFittings:type_name -> model.PipeFitting - 45, // 21: model.Repository.circuitBreakers:type_name -> model.CircuitBreaker - 46, // 22: model.Repository.threePositionSwitches:type_name -> model.ThreePositionSwitch - 47, // 23: model.Repository.handcartSwitches:type_name -> model.HandcartSwitch - 48, // 24: model.Repository.rectifiers:type_name -> model.Rectifier - 49, // 25: model.Repository.disconnectors:type_name -> model.Disconnector - 50, // 26: model.Repository.voltageTransformers:type_name -> model.VoltageTransformer - 51, // 27: model.Repository.powerSources:type_name -> model.PowerSource - 52, // 28: model.Repository.lightningArresters:type_name -> model.LightningArrester - 53, // 29: model.Repository.earthingDevices:type_name -> model.EarthingDevice - 54, // 30: model.Repository.networkSwitches:type_name -> model.NetworkSwitch - 55, // 31: model.Repository.wireCabinets:type_name -> model.WireCabinet - 13, // 32: model.SignalLayout.physicalSections:type_name -> model.PhysicalSection - 14, // 33: model.SignalLayout.checkPoints:type_name -> model.CheckPoint - 15, // 34: model.SignalLayout.turnouts:type_name -> model.Turnout - 16, // 35: model.SignalLayout.signals:type_name -> model.Signal - 18, // 36: model.SignalLayout.transponders:type_name -> model.Transponder - 19, // 37: model.SignalLayout.slopes:type_name -> model.Slope - 20, // 38: model.SignalLayout.sectionalCurvatures:type_name -> model.SectionalCurvature - 23, // 39: model.SignalLayout.kilometerConverts:type_name -> model.KilometerConvert - 21, // 40: model.PhysicalSection.aDevicePort:type_name -> model.DevicePort - 21, // 41: model.PhysicalSection.bDevicePort:type_name -> model.DevicePort - 22, // 42: model.CheckPoint.km:type_name -> model.Kilometer + 15, // 0: model.Repository.physicalSections:type_name -> model.PhysicalSection + 16, // 1: model.Repository.checkPoints:type_name -> model.CheckPoint + 17, // 2: model.Repository.turnouts:type_name -> model.Turnout + 18, // 3: model.Repository.signals:type_name -> model.Signal + 20, // 4: model.Repository.transponders:type_name -> model.Transponder + 21, // 5: model.Repository.slopes:type_name -> model.Slope + 22, // 6: model.Repository.sectionalCurvatures:type_name -> model.SectionalCurvature + 25, // 7: model.Repository.kilometerConverts:type_name -> model.KilometerConvert + 26, // 8: model.Repository.relays:type_name -> model.Relay + 27, // 9: model.Repository.phaseFailureProtectors:type_name -> model.PhaseFailureProtector + 29, // 10: model.Repository.buttons:type_name -> model.Button + 19, // 11: model.Repository.psds:type_name -> model.Psd + 30, // 12: model.Repository.lights:type_name -> model.Light + 31, // 13: model.Repository.alarms:type_name -> model.Alarm + 32, // 14: model.Repository.stations:type_name -> model.Station + 36, // 15: model.Repository.mkxs:type_name -> model.Mkx + 37, // 16: model.Repository.platforms:type_name -> model.Platform + 38, // 17: model.Repository.Keys:type_name -> model.Key + 39, // 18: model.Repository.CentralizedStationRefs:type_name -> model.CentralizedStationRef + 45, // 19: model.Repository.pipes:type_name -> model.Pipe + 46, // 20: model.Repository.pipeFittings:type_name -> model.PipeFitting + 47, // 21: model.Repository.circuitBreakers:type_name -> model.CircuitBreaker + 48, // 22: model.Repository.threePositionSwitches:type_name -> model.ThreePositionSwitch + 49, // 23: model.Repository.handcartSwitches:type_name -> model.HandcartSwitch + 50, // 24: model.Repository.rectifiers:type_name -> model.Rectifier + 51, // 25: model.Repository.disconnectors:type_name -> model.Disconnector + 52, // 26: model.Repository.voltageTransformers:type_name -> model.VoltageTransformer + 53, // 27: model.Repository.powerSources:type_name -> model.PowerSource + 54, // 28: model.Repository.lightningArresters:type_name -> model.LightningArrester + 55, // 29: model.Repository.earthingDevices:type_name -> model.EarthingDevice + 56, // 30: model.Repository.networkSwitches:type_name -> model.NetworkSwitch + 57, // 31: model.Repository.wireCabinets:type_name -> model.WireCabinet + 15, // 32: model.SignalLayout.physicalSections:type_name -> model.PhysicalSection + 16, // 33: model.SignalLayout.checkPoints:type_name -> model.CheckPoint + 17, // 34: model.SignalLayout.turnouts:type_name -> model.Turnout + 18, // 35: model.SignalLayout.signals:type_name -> model.Signal + 20, // 36: model.SignalLayout.transponders:type_name -> model.Transponder + 21, // 37: model.SignalLayout.slopes:type_name -> model.Slope + 22, // 38: model.SignalLayout.sectionalCurvatures:type_name -> model.SectionalCurvature + 25, // 39: model.SignalLayout.kilometerConverts:type_name -> model.KilometerConvert + 23, // 40: model.PhysicalSection.aDevicePort:type_name -> model.DevicePort + 23, // 41: model.PhysicalSection.bDevicePort:type_name -> model.DevicePort + 24, // 42: model.CheckPoint.km:type_name -> model.Kilometer 3, // 43: model.CheckPoint.type:type_name -> model.CheckPointType - 21, // 44: model.CheckPoint.devicePorts:type_name -> model.DevicePort - 22, // 45: model.Turnout.km:type_name -> model.Kilometer - 21, // 46: model.Turnout.aDevicePort:type_name -> model.DevicePort - 21, // 47: model.Turnout.bDevicePort:type_name -> model.DevicePort - 21, // 48: model.Turnout.cDevicePort:type_name -> model.DevicePort + 23, // 44: model.CheckPoint.devicePorts:type_name -> model.DevicePort + 24, // 45: model.Turnout.km:type_name -> model.Kilometer + 23, // 46: model.Turnout.aDevicePort:type_name -> model.DevicePort + 23, // 47: model.Turnout.bDevicePort:type_name -> model.DevicePort + 23, // 48: model.Turnout.cDevicePort:type_name -> model.DevicePort 4, // 49: model.Turnout.switchMachineType:type_name -> model.Turnout.SwitchMachineType - 26, // 50: model.Turnout.electronicComponentGroups:type_name -> model.ElectronicComponentGroup - 22, // 51: model.Signal.km:type_name -> model.Kilometer - 21, // 52: model.Signal.turnoutPort:type_name -> model.DevicePort - 26, // 53: model.Signal.electronicComponentGroups:type_name -> model.ElectronicComponentGroup + 28, // 50: model.Turnout.electronicComponentGroups:type_name -> model.ElectronicComponentGroup + 24, // 51: model.Signal.km:type_name -> model.Kilometer + 23, // 52: model.Signal.turnoutPort:type_name -> model.DevicePort + 28, // 53: model.Signal.electronicComponentGroups:type_name -> model.ElectronicComponentGroup 5, // 54: model.Signal.model:type_name -> model.Signal.Model - 41, // 55: model.Psd.asdGroups:type_name -> model.AsdGroup - 26, // 56: model.Psd.electronicComponentGroups:type_name -> model.ElectronicComponentGroup - 22, // 57: model.Transponder.km:type_name -> model.Kilometer - 21, // 58: model.Transponder.turnoutPort:type_name -> model.DevicePort + 43, // 55: model.Psd.asdGroups:type_name -> model.AsdGroup + 28, // 56: model.Psd.electronicComponentGroups:type_name -> model.ElectronicComponentGroup + 24, // 57: model.Transponder.km:type_name -> model.Kilometer + 23, // 58: model.Transponder.turnoutPort:type_name -> model.DevicePort 6, // 59: model.Transponder.type:type_name -> model.Transponder.Type - 22, // 60: model.Slope.kms:type_name -> model.Kilometer - 22, // 61: model.SectionalCurvature.kms:type_name -> model.Kilometer + 24, // 60: model.Slope.kms:type_name -> model.Kilometer + 24, // 61: model.SectionalCurvature.kms:type_name -> model.Kilometer 0, // 62: model.DevicePort.deviceType:type_name -> model.DeviceType 1, // 63: model.DevicePort.port:type_name -> model.Port 2, // 64: model.Kilometer.direction:type_name -> model.Direction - 22, // 65: model.KilometerConvert.kmA:type_name -> model.Kilometer - 22, // 66: model.KilometerConvert.kmB:type_name -> model.Kilometer + 24, // 65: model.KilometerConvert.kmA:type_name -> model.Kilometer + 24, // 66: model.KilometerConvert.kmB:type_name -> model.Kilometer 7, // 67: model.Relay.model:type_name -> model.Relay.Model 8, // 68: model.Button.buttonType:type_name -> model.Button.ButtonType 9, // 69: model.Light.aspect:type_name -> model.Light.LightAspect - 32, // 70: model.Station.electronicGroup:type_name -> model.ElectronicGroup - 31, // 71: model.Station.deccs:type_name -> model.DeviceEcc + 34, // 70: model.Station.electronicGroup:type_name -> model.ElectronicGroup + 33, // 71: model.Station.deccs:type_name -> model.DeviceEcc 0, // 72: model.DeviceEcc.deviceType:type_name -> model.DeviceType - 26, // 73: model.DeviceEcc.egs:type_name -> model.ElectronicComponentGroup - 33, // 74: model.ElectronicGroup.components:type_name -> model.ElectronicComponent + 28, // 73: model.DeviceEcc.egs:type_name -> model.ElectronicComponentGroup + 35, // 74: model.ElectronicGroup.components:type_name -> model.ElectronicComponent 0, // 75: model.ElectronicComponent.deviceType:type_name -> model.DeviceType - 38, // 76: model.CentralizedStationRef.cjList:type_name -> model.CjData - 40, // 77: model.CentralizedStationRef.qdList:type_name -> model.QdData - 42, // 78: model.CentralizedStationRef.sectionCodePoints:type_name -> model.CiSectionCodePoint - 39, // 79: model.CjData.refRelays:type_name -> model.CjDataItem - 21, // 80: model.Pipe.portA:type_name -> model.DevicePort - 21, // 81: model.Pipe.portB:type_name -> model.DevicePort + 40, // 76: model.CentralizedStationRef.cjList:type_name -> model.CjData + 42, // 77: model.CentralizedStationRef.qdList:type_name -> model.QdData + 44, // 78: model.CentralizedStationRef.sectionCodePoints:type_name -> model.CiSectionCodePoint + 41, // 79: model.CjData.refRelays:type_name -> model.CjDataItem + 23, // 80: model.Pipe.portA:type_name -> model.DevicePort + 23, // 81: model.Pipe.portB:type_name -> model.DevicePort 10, // 82: model.Pipe.pipeType:type_name -> model.Pipe.Type - 83, // [83:83] is the sub-list for method output_type - 83, // [83:83] is the sub-list for method input_type - 83, // [83:83] is the sub-list for extension type_name - 83, // [83:83] is the sub-list for extension extendee - 0, // [0:83] is the sub-list for field type_name + 11, // 83: model.AirPavilion.pavilionType:type_name -> model.AirPavilion.Type + 12, // 84: model.Valve.valveType:type_name -> model.Valve.Type + 85, // [85:85] is the sub-list for method output_type + 85, // [85:85] is the sub-list for method input_type + 85, // [85:85] is the sub-list for extension type_name + 85, // [85:85] is the sub-list for extension extendee + 0, // [0:85] is the sub-list for field type_name } func init() { file_model_proto_init() } @@ -6315,7 +6301,7 @@ func file_model_proto_init() { } } file_model_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExhaustPavilion); i { + switch v := v.(*AirPavilion); i { case 0: return &v.state case 1: @@ -6327,7 +6313,7 @@ func file_model_proto_init() { } } file_model_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AirSupplyPavilion); i { + switch v := v.(*Valve); i { case 0: return &v.state case 1: @@ -6339,30 +6325,6 @@ func file_model_proto_init() { } } file_model_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ElectricControlValve); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_model_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ElectricAirValve); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_model_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GasMixingChamber); i { case 0: return &v.state @@ -6374,7 +6336,7 @@ func file_model_proto_init() { return nil } } - file_model_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_model_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CombinationAirConditioner); i { case 0: return &v.state @@ -6386,7 +6348,7 @@ func file_model_proto_init() { return nil } } - file_model_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_model_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AirPurificationDevice); i { case 0: return &v.state @@ -6398,7 +6360,7 @@ func file_model_proto_init() { return nil } } - file_model_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_model_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AirCurtain); i { case 0: return &v.state @@ -6410,7 +6372,7 @@ func file_model_proto_init() { return nil } } - file_model_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_model_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Fan); i { case 0: return &v.state @@ -6422,7 +6384,7 @@ func file_model_proto_init() { return nil } } - file_model_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_model_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GasEnvironment); i { case 0: return &v.state @@ -6440,8 +6402,8 @@ func file_model_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_model_proto_rawDesc, - NumEnums: 11, - NumMessages: 55, + NumEnums: 13, + NumMessages: 53, NumExtensions: 0, NumServices: 0, },