// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v4.23.1 // source: model.proto package proto import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type DeviceType int32 const ( DeviceType_DeviceType_Unknown DeviceType = 0 DeviceType_DeviceType_PhysicalSection DeviceType = 1 DeviceType_DeviceType_CheckPoint DeviceType = 2 DeviceType_DeviceType_Turnout DeviceType = 3 DeviceType_DeviceType_Signal DeviceType = 4 DeviceType_DeviceType_Transponder DeviceType = 5 DeviceType_DeviceType_Slope DeviceType = 6 DeviceType_DeviceType_SectionalCurvature DeviceType = 7 DeviceType_DeviceType_Link DeviceType = 8 DeviceType_DeviceType_LinkNode DeviceType = 9 DeviceType_DeviceType_Relay DeviceType = 10 DeviceType_DeviceType_PhaseFailureProtector DeviceType = 11 DeviceType_DeviceType_Button DeviceType = 12 DeviceType_DeviceType_Light DeviceType = 13 DeviceType_DeviceType_FMQ DeviceType = 14 ) // Enum value maps for DeviceType. var ( DeviceType_name = map[int32]string{ 0: "DeviceType_Unknown", 1: "DeviceType_PhysicalSection", 2: "DeviceType_CheckPoint", 3: "DeviceType_Turnout", 4: "DeviceType_Signal", 5: "DeviceType_Transponder", 6: "DeviceType_Slope", 7: "DeviceType_SectionalCurvature", 8: "DeviceType_Link", 9: "DeviceType_LinkNode", 10: "DeviceType_Relay", 11: "DeviceType_PhaseFailureProtector", 12: "DeviceType_Button", 13: "DeviceType_Light", 14: "DeviceType_FMQ", } DeviceType_value = map[string]int32{ "DeviceType_Unknown": 0, "DeviceType_PhysicalSection": 1, "DeviceType_CheckPoint": 2, "DeviceType_Turnout": 3, "DeviceType_Signal": 4, "DeviceType_Transponder": 5, "DeviceType_Slope": 6, "DeviceType_SectionalCurvature": 7, "DeviceType_Link": 8, "DeviceType_LinkNode": 9, "DeviceType_Relay": 10, "DeviceType_PhaseFailureProtector": 11, "DeviceType_Button": 12, "DeviceType_Light": 13, "DeviceType_FMQ": 14, } ) func (x DeviceType) Enum() *DeviceType { p := new(DeviceType) *p = x return p } func (x DeviceType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DeviceType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[0].Descriptor() } func (DeviceType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[0] } func (x DeviceType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use DeviceType.Descriptor instead. func (DeviceType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{0} } type Port int32 const ( Port_None Port = 0 //没有端口/未指定端口 Port_A Port = 1 Port_B Port = 2 Port_C Port = 3 ) // Enum value maps for Port. var ( Port_name = map[int32]string{ 0: "None", 1: "A", 2: "B", 3: "C", } Port_value = map[string]int32{ "None": 0, "A": 1, "B": 2, "C": 3, } ) func (x Port) Enum() *Port { p := new(Port) *p = x return p } func (x Port) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Port) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[1].Descriptor() } func (Port) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[1] } func (x Port) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Port.Descriptor instead. func (Port) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{1} } // 左右行 type Direction int32 const ( Direction_LEFT Direction = 0 Direction_RIGHT Direction = 1 ) // Enum value maps for Direction. var ( Direction_name = map[int32]string{ 0: "LEFT", 1: "RIGHT", } Direction_value = map[string]int32{ "LEFT": 0, "RIGHT": 1, } ) func (x Direction) Enum() *Direction { p := new(Direction) *p = x return p } func (x Direction) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Direction) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[2].Descriptor() } func (Direction) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[2] } func (x Direction) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Direction.Descriptor instead. func (Direction) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{2} } // 检测点类型 type CheckPointType int32 const ( CheckPointType_Boundary CheckPointType = 0 //区段边界 CheckPointType_AxleCounter CheckPointType = 1 //计轴器 CheckPointType_InsulatedJoint CheckPointType = 2 //绝缘节 ) // Enum value maps for CheckPointType. var ( CheckPointType_name = map[int32]string{ 0: "Boundary", 1: "AxleCounter", 2: "InsulatedJoint", } CheckPointType_value = map[string]int32{ "Boundary": 0, "AxleCounter": 1, "InsulatedJoint": 2, } ) func (x CheckPointType) Enum() *CheckPointType { p := new(CheckPointType) *p = x return p } func (x CheckPointType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CheckPointType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[3].Descriptor() } func (CheckPointType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[3] } func (x CheckPointType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CheckPointType.Descriptor instead. func (CheckPointType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{3} } type Turnout_SwitchMachineType int32 const ( Turnout_Unknown Turnout_SwitchMachineType = 0 Turnout_ZDJ9_Single Turnout_SwitchMachineType = 1 Turnout_ZDJ9_Double Turnout_SwitchMachineType = 2 ) // Enum value maps for Turnout_SwitchMachineType. var ( Turnout_SwitchMachineType_name = map[int32]string{ 0: "Unknown", 1: "ZDJ9_Single", 2: "ZDJ9_Double", } Turnout_SwitchMachineType_value = map[string]int32{ "Unknown": 0, "ZDJ9_Single": 1, "ZDJ9_Double": 2, } ) func (x Turnout_SwitchMachineType) Enum() *Turnout_SwitchMachineType { p := new(Turnout_SwitchMachineType) *p = x return p } func (x Turnout_SwitchMachineType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Turnout_SwitchMachineType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[4].Descriptor() } func (Turnout_SwitchMachineType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[4] } func (x Turnout_SwitchMachineType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Turnout_SwitchMachineType.Descriptor instead. func (Turnout_SwitchMachineType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{3, 0} } type Relay_Model int32 const ( Relay_Unknown Relay_Model = 0 Relay_JPXC_1000 Relay_Model = 1 Relay_JPXC_1700 Relay_Model = 2 Relay_JWJXC_480 Relay_Model = 3 Relay_JWJXC_H125_80 Relay_Model = 4 Relay_JWXC_1700 Relay_Model = 5 Relay_JWXC_H340 Relay_Model = 6 Relay_JYJXC_160_260 Relay_Model = 7 Relay_JZXC_H18 Relay_Model = 8 ) // Enum value maps for Relay_Model. var ( Relay_Model_name = map[int32]string{ 0: "Unknown", 1: "JPXC_1000", 2: "JPXC_1700", 3: "JWJXC_480", 4: "JWJXC_H125_80", 5: "JWXC_1700", 6: "JWXC_H340", 7: "JYJXC_160_260", 8: "JZXC_H18", } Relay_Model_value = map[string]int32{ "Unknown": 0, "JPXC_1000": 1, "JPXC_1700": 2, "JWJXC_480": 3, "JWJXC_H125_80": 4, "JWXC_1700": 5, "JWXC_H340": 6, "JYJXC_160_260": 7, "JZXC_H18": 8, } ) func (x Relay_Model) Enum() *Relay_Model { p := new(Relay_Model) *p = x return p } func (x Relay_Model) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Relay_Model) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[5].Descriptor() } func (Relay_Model) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[5] } func (x Relay_Model) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Relay_Model.Descriptor instead. func (Relay_Model) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{11, 0} } type Button_ButtonType int32 const ( Button_Unknown Button_ButtonType = 0 Button_NO_Reset_Press Button_ButtonType = 1 Button_NO_Reset_Up Button_ButtonType = 2 Button_Reset_Press Button_ButtonType = 3 Button_Reset_Up Button_ButtonType = 4 Button_Key_Knob Button_ButtonType = 5 ) // Enum value maps for Button_ButtonType. var ( Button_ButtonType_name = map[int32]string{ 0: "Unknown", 1: "NO_Reset_Press", 2: "NO_Reset_Up", 3: "Reset_Press", 4: "Reset_Up", 5: "Key_Knob", } Button_ButtonType_value = map[string]int32{ "Unknown": 0, "NO_Reset_Press": 1, "NO_Reset_Up": 2, "Reset_Press": 3, "Reset_Up": 4, "Key_Knob": 5, } ) func (x Button_ButtonType) Enum() *Button_ButtonType { p := new(Button_ButtonType) *p = x return p } func (x Button_ButtonType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Button_ButtonType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[6].Descriptor() } func (Button_ButtonType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[6] } func (x Button_ButtonType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Button_ButtonType.Descriptor instead. func (Button_ButtonType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{14, 0} } type Repository struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` PhysicalSections []*PhysicalSection `protobuf:"bytes,3,rep,name=physicalSections,proto3" json:"physicalSections,omitempty"` CheckPoints []*CheckPoint `protobuf:"bytes,4,rep,name=checkPoints,proto3" json:"checkPoints,omitempty"` Turnouts []*Turnout `protobuf:"bytes,5,rep,name=turnouts,proto3" json:"turnouts,omitempty"` Signals []*Signal `protobuf:"bytes,6,rep,name=signals,proto3" json:"signals,omitempty"` Transponders []*Transponder `protobuf:"bytes,7,rep,name=transponders,proto3" json:"transponders,omitempty"` Slopes []*Slope `protobuf:"bytes,8,rep,name=slopes,proto3" json:"slopes,omitempty"` SectionalCurvatures []*SectionalCurvature `protobuf:"bytes,9,rep,name=sectionalCurvatures,proto3" json:"sectionalCurvatures,omitempty"` KilometerConverts []*KilometerConvert `protobuf:"bytes,10,rep,name=kilometerConverts,proto3" json:"kilometerConverts,omitempty"` Relays []*Relay `protobuf:"bytes,11,rep,name=relays,proto3" json:"relays,omitempty"` PhaseFailureProtectors []*PhaseFailureProtector `protobuf:"bytes,12,rep,name=phaseFailureProtectors,proto3" json:"phaseFailureProtectors,omitempty"` Buttons []*Button `protobuf:"bytes,13,rep,name=buttons,proto3" json:"buttons,omitempty"` } func (x *Repository) Reset() { *x = Repository{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Repository) String() string { return protoimpl.X.MessageStringOf(x) } func (*Repository) ProtoMessage() {} func (x *Repository) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[0] 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 Repository.ProtoReflect.Descriptor instead. func (*Repository) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{0} } func (x *Repository) GetId() string { if x != nil { return x.Id } return "" } func (x *Repository) GetVersion() string { if x != nil { return x.Version } return "" } func (x *Repository) GetPhysicalSections() []*PhysicalSection { if x != nil { return x.PhysicalSections } return nil } func (x *Repository) GetCheckPoints() []*CheckPoint { if x != nil { return x.CheckPoints } return nil } func (x *Repository) GetTurnouts() []*Turnout { if x != nil { return x.Turnouts } return nil } func (x *Repository) GetSignals() []*Signal { if x != nil { return x.Signals } return nil } func (x *Repository) GetTransponders() []*Transponder { if x != nil { return x.Transponders } return nil } func (x *Repository) GetSlopes() []*Slope { if x != nil { return x.Slopes } return nil } func (x *Repository) GetSectionalCurvatures() []*SectionalCurvature { if x != nil { return x.SectionalCurvatures } return nil } func (x *Repository) GetKilometerConverts() []*KilometerConvert { if x != nil { return x.KilometerConverts } return nil } func (x *Repository) GetRelays() []*Relay { if x != nil { return x.Relays } return nil } func (x *Repository) GetPhaseFailureProtectors() []*PhaseFailureProtector { if x != nil { return x.PhaseFailureProtectors } return nil } func (x *Repository) GetButtons() []*Button { if x != nil { return x.Buttons } return nil } // 物理区段 type PhysicalSection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` TurnoutIds []string `protobuf:"bytes,2,rep,name=turnoutIds,proto3" json:"turnoutIds,omitempty"` //道岔物理区段关联的道岔 ADevicePort *DevicePort `protobuf:"bytes,3,opt,name=aDevicePort,proto3" json:"aDevicePort,omitempty"` //非道岔物理区段A端关联的设备端口 BDevicePort *DevicePort `protobuf:"bytes,4,opt,name=bDevicePort,proto3" json:"bDevicePort,omitempty"` } func (x *PhysicalSection) Reset() { *x = PhysicalSection{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PhysicalSection) String() string { return protoimpl.X.MessageStringOf(x) } func (*PhysicalSection) ProtoMessage() {} func (x *PhysicalSection) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[1] 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 PhysicalSection.ProtoReflect.Descriptor instead. func (*PhysicalSection) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{1} } func (x *PhysicalSection) GetId() string { if x != nil { return x.Id } return "" } func (x *PhysicalSection) GetTurnoutIds() []string { if x != nil { return x.TurnoutIds } return nil } func (x *PhysicalSection) GetADevicePort() *DevicePort { if x != nil { return x.ADevicePort } return nil } func (x *PhysicalSection) GetBDevicePort() *DevicePort { if x != nil { return x.BDevicePort } return nil } // 区段检测点 type CheckPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Km *Kilometer `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` Type CheckPointType `protobuf:"varint,3,opt,name=type,proto3,enum=model.CheckPointType" json:"type,omitempty"` DevicePorts []*DevicePort `protobuf:"bytes,4,rep,name=devicePorts,proto3" json:"devicePorts,omitempty"` } func (x *CheckPoint) Reset() { *x = CheckPoint{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckPoint) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckPoint) ProtoMessage() {} func (x *CheckPoint) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[2] 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 CheckPoint.ProtoReflect.Descriptor instead. func (*CheckPoint) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{2} } func (x *CheckPoint) GetId() string { if x != nil { return x.Id } return "" } func (x *CheckPoint) GetKm() *Kilometer { if x != nil { return x.Km } return nil } func (x *CheckPoint) GetType() CheckPointType { if x != nil { return x.Type } return CheckPointType_Boundary } func (x *CheckPoint) GetDevicePorts() []*DevicePort { if x != nil { return x.DevicePorts } return nil } // 道岔 type Turnout struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Km *Kilometer `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` ADevicePort *DevicePort `protobuf:"bytes,3,opt,name=aDevicePort,proto3" json:"aDevicePort,omitempty"` BDevicePort *DevicePort `protobuf:"bytes,4,opt,name=bDevicePort,proto3" json:"bDevicePort,omitempty"` CDevicePort *DevicePort `protobuf:"bytes,5,opt,name=cDevicePort,proto3" json:"cDevicePort,omitempty"` SwitchMachineType Turnout_SwitchMachineType `protobuf:"varint,6,opt,name=switchMachineType,proto3,enum=model.Turnout_SwitchMachineType" json:"switchMachineType,omitempty"` ElectronicComponentGroups []*ElectronicComponentGroup `protobuf:"bytes,7,rep,name=electronicComponentGroups,proto3" json:"electronicComponentGroups,omitempty"` //关联的电子元件组合 } func (x *Turnout) Reset() { *x = Turnout{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Turnout) String() string { return protoimpl.X.MessageStringOf(x) } func (*Turnout) ProtoMessage() {} func (x *Turnout) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[3] 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 Turnout.ProtoReflect.Descriptor instead. func (*Turnout) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{3} } func (x *Turnout) GetId() string { if x != nil { return x.Id } return "" } func (x *Turnout) GetKm() *Kilometer { if x != nil { return x.Km } return nil } func (x *Turnout) GetADevicePort() *DevicePort { if x != nil { return x.ADevicePort } return nil } func (x *Turnout) GetBDevicePort() *DevicePort { if x != nil { return x.BDevicePort } return nil } func (x *Turnout) GetCDevicePort() *DevicePort { if x != nil { return x.CDevicePort } return nil } func (x *Turnout) GetSwitchMachineType() Turnout_SwitchMachineType { if x != nil { return x.SwitchMachineType } return Turnout_Unknown } func (x *Turnout) GetElectronicComponentGroups() []*ElectronicComponentGroup { if x != nil { return x.ElectronicComponentGroups } return nil } // 信号机 type Signal struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Km *Kilometer `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` SectionId string `protobuf:"bytes,3,opt,name=sectionId,proto3" json:"sectionId,omitempty"` //关联的区段 TurnoutPort *DevicePort `protobuf:"bytes,4,opt,name=turnoutPort,proto3" json:"turnoutPort,omitempty"` //关联的区段端口 ElectronicComponentGroups []*ElectronicComponentGroup `protobuf:"bytes,7,rep,name=electronicComponentGroups,proto3" json:"electronicComponentGroups,omitempty"` //关联的继电器组 } func (x *Signal) Reset() { *x = Signal{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Signal) String() string { return protoimpl.X.MessageStringOf(x) } func (*Signal) ProtoMessage() {} func (x *Signal) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[4] 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 Signal.ProtoReflect.Descriptor instead. func (*Signal) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{4} } func (x *Signal) GetId() string { if x != nil { return x.Id } return "" } func (x *Signal) GetKm() *Kilometer { if x != nil { return x.Km } return nil } func (x *Signal) GetSectionId() string { if x != nil { return x.SectionId } return "" } func (x *Signal) GetTurnoutPort() *DevicePort { if x != nil { return x.TurnoutPort } return nil } func (x *Signal) GetElectronicComponentGroups() []*ElectronicComponentGroup { if x != nil { return x.ElectronicComponentGroups } return nil } // 应答器 type Transponder struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Km *Kilometer `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` SectionId string `protobuf:"bytes,3,opt,name=sectionId,proto3" json:"sectionId,omitempty"` //关联的区段 TurnoutPort *DevicePort `protobuf:"bytes,4,opt,name=turnoutPort,proto3" json:"turnoutPort,omitempty"` //关联的区段端口 } func (x *Transponder) Reset() { *x = Transponder{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Transponder) String() string { return protoimpl.X.MessageStringOf(x) } func (*Transponder) ProtoMessage() {} func (x *Transponder) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[5] 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 Transponder.ProtoReflect.Descriptor instead. func (*Transponder) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{5} } func (x *Transponder) GetId() string { if x != nil { return x.Id } return "" } func (x *Transponder) GetKm() *Kilometer { if x != nil { return x.Km } return nil } func (x *Transponder) GetSectionId() string { if x != nil { return x.SectionId } return "" } func (x *Transponder) GetTurnoutPort() *DevicePort { if x != nil { return x.TurnoutPort } return nil } // 坡度 type Slope struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Kms []*Kilometer `protobuf:"bytes,2,rep,name=kms,proto3" json:"kms,omitempty"` Degree int32 `protobuf:"varint,3,opt,name=degree,proto3" json:"degree,omitempty"` //坡度角的sin * 1000 } func (x *Slope) Reset() { *x = Slope{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Slope) String() string { return protoimpl.X.MessageStringOf(x) } func (*Slope) ProtoMessage() {} func (x *Slope) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[6] 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 Slope.ProtoReflect.Descriptor instead. func (*Slope) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{6} } func (x *Slope) GetId() string { if x != nil { return x.Id } return "" } func (x *Slope) GetKms() []*Kilometer { if x != nil { return x.Kms } return nil } func (x *Slope) GetDegree() int32 { if x != nil { return x.Degree } return 0 } // 分段曲率 type SectionalCurvature struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Kms []*Kilometer `protobuf:"bytes,2,rep,name=kms,proto3" json:"kms,omitempty"` Radius int32 `protobuf:"varint,3,opt,name=radius,proto3" json:"radius,omitempty"` //半径 mm } func (x *SectionalCurvature) Reset() { *x = SectionalCurvature{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SectionalCurvature) String() string { return protoimpl.X.MessageStringOf(x) } func (*SectionalCurvature) ProtoMessage() {} func (x *SectionalCurvature) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[7] 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 SectionalCurvature.ProtoReflect.Descriptor instead. func (*SectionalCurvature) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{7} } func (x *SectionalCurvature) GetId() string { if x != nil { return x.Id } return "" } func (x *SectionalCurvature) GetKms() []*Kilometer { if x != nil { return x.Kms } return nil } func (x *SectionalCurvature) GetRadius() int32 { if x != nil { return x.Radius } return 0 } // 设备及端口 type DevicePort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DeviceId string `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"` DeviceType DeviceType `protobuf:"varint,2,opt,name=deviceType,proto3,enum=model.DeviceType" json:"deviceType,omitempty"` Port Port `protobuf:"varint,3,opt,name=port,proto3,enum=model.Port" json:"port,omitempty"` } func (x *DevicePort) Reset() { *x = DevicePort{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DevicePort) String() string { return protoimpl.X.MessageStringOf(x) } func (*DevicePort) ProtoMessage() {} func (x *DevicePort) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[8] 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 DevicePort.ProtoReflect.Descriptor instead. func (*DevicePort) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{8} } func (x *DevicePort) GetDeviceId() string { if x != nil { return x.DeviceId } return "" } func (x *DevicePort) GetDeviceType() DeviceType { if x != nil { return x.DeviceType } return DeviceType_DeviceType_Unknown } func (x *DevicePort) GetPort() Port { if x != nil { return x.Port } return Port_None } // 公里标 type Kilometer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` //公里标mm CoordinateSystem string `protobuf:"bytes,2,opt,name=coordinateSystem,proto3" json:"coordinateSystem,omitempty"` //坐标系 Direction Direction `protobuf:"varint,3,opt,name=direction,proto3,enum=model.Direction" json:"direction,omitempty"` //左右行 } func (x *Kilometer) Reset() { *x = Kilometer{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Kilometer) String() string { return protoimpl.X.MessageStringOf(x) } func (*Kilometer) ProtoMessage() {} func (x *Kilometer) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[9] 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 Kilometer.ProtoReflect.Descriptor instead. func (*Kilometer) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{9} } func (x *Kilometer) GetValue() int64 { if x != nil { return x.Value } return 0 } func (x *Kilometer) GetCoordinateSystem() string { if x != nil { return x.CoordinateSystem } return "" } func (x *Kilometer) GetDirection() Direction { if x != nil { return x.Direction } return Direction_LEFT } // 公里标转换 type KilometerConvert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields KmA *Kilometer `protobuf:"bytes,1,opt,name=kmA,proto3" json:"kmA,omitempty"` KmB *Kilometer `protobuf:"bytes,2,opt,name=kmB,proto3" json:"kmB,omitempty"` SameTrend bool `protobuf:"varint,3,opt,name=sameTrend,proto3" json:"sameTrend,omitempty"` //相同趋势(同增同减)? } func (x *KilometerConvert) Reset() { *x = KilometerConvert{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *KilometerConvert) String() string { return protoimpl.X.MessageStringOf(x) } func (*KilometerConvert) ProtoMessage() {} func (x *KilometerConvert) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[10] 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 KilometerConvert.ProtoReflect.Descriptor instead. func (*KilometerConvert) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{10} } func (x *KilometerConvert) GetKmA() *Kilometer { if x != nil { return x.KmA } return nil } func (x *KilometerConvert) GetKmB() *Kilometer { if x != nil { return x.KmB } return nil } func (x *KilometerConvert) GetSameTrend() bool { if x != nil { return x.SameTrend } return false } // 继电器 type Relay 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"` Model Relay_Model `protobuf:"varint,3,opt,name=model,proto3,enum=model.Relay_Model" json:"model,omitempty"` } func (x *Relay) Reset() { *x = Relay{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Relay) String() string { return protoimpl.X.MessageStringOf(x) } func (*Relay) ProtoMessage() {} func (x *Relay) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[11] 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 Relay.ProtoReflect.Descriptor instead. func (*Relay) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{11} } func (x *Relay) GetId() string { if x != nil { return x.Id } return "" } func (x *Relay) GetCode() string { if x != nil { return x.Code } return "" } func (x *Relay) GetModel() Relay_Model { if x != nil { return x.Model } return Relay_Unknown } // 断相保护器 type PhaseFailureProtector 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 *PhaseFailureProtector) Reset() { *x = PhaseFailureProtector{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PhaseFailureProtector) String() string { return protoimpl.X.MessageStringOf(x) } func (*PhaseFailureProtector) ProtoMessage() {} func (x *PhaseFailureProtector) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PhaseFailureProtector.ProtoReflect.Descriptor instead. func (*PhaseFailureProtector) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{12} } func (x *PhaseFailureProtector) GetId() string { if x != nil { return x.Id } return "" } func (x *PhaseFailureProtector) GetCode() string { if x != nil { return x.Code } return "" } // 电子元件组合 type ElectronicComponentGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` //组合的编号(名称) ComponentIds []string `protobuf:"bytes,2,rep,name=componentIds,proto3" json:"componentIds,omitempty"` //组合内电子元件的id } func (x *ElectronicComponentGroup) Reset() { *x = ElectronicComponentGroup{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ElectronicComponentGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ElectronicComponentGroup) ProtoMessage() {} func (x *ElectronicComponentGroup) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[13] 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 ElectronicComponentGroup.ProtoReflect.Descriptor instead. func (*ElectronicComponentGroup) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{13} } func (x *ElectronicComponentGroup) GetCode() string { if x != nil { return x.Code } return "" } func (x *ElectronicComponentGroup) GetComponentIds() []string { if x != nil { return x.ComponentIds } return nil } // 按钮 type Button struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` ButtonType Button_ButtonType `protobuf:"varint,2,opt,name=buttonType,proto3,enum=model.Button_ButtonType" json:"buttonType,omitempty"` } func (x *Button) Reset() { *x = Button{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Button) String() string { return protoimpl.X.MessageStringOf(x) } func (*Button) ProtoMessage() {} func (x *Button) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[14] 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 Button.ProtoReflect.Descriptor instead. func (*Button) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{14} } func (x *Button) GetId() string { if x != nil { return x.Id } return "" } func (x *Button) GetButtonType() Button_ButtonType { if x != nil { return x.ButtonType } return Button_Unknown } var File_model_proto protoreflect.FileDescriptor var file_model_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x9b, 0x05, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x52, 0x08, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x06, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x6b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x52, 0x11, 0x6b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x06, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x12, 0x54, 0x0a, 0x16, 0x70, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x16, 0x70, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x0f, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x49, 0x64, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 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, 0x0b, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 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, 0x0b, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x22, 0xcd, 0x03, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x33, 0x0a, 0x0b, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 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, 0x0b, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 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, 0x0b, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 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, 0x07, 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, 0x42, 0x0a, 0x11, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x5a, 0x44, 0x4a, 0x39, 0x5f, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x5a, 0x44, 0x4a, 0x39, 0x5f, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x10, 0x02, 0x22, 0xec, 0x01, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0b, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 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, 0x0b, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 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, 0x07, 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, 0x92, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0b, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 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, 0x0b, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x0a, 0x05, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x22, 0x60, 0x0a, 0x12, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x22, 0x7c, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x7d, 0x0a, 0x09, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x2e, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x10, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x6d, 0x41, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x6d, 0x41, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x6d, 0x42, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x6d, 0x42, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x22, 0xeb, 0x01, 0x0a, 0x05, 0x52, 0x65, 0x6c, 0x61, 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, 0x28, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x93, 0x01, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x50, 0x58, 0x43, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x50, 0x58, 0x43, 0x5f, 0x31, 0x37, 0x30, 0x30, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x57, 0x4a, 0x58, 0x43, 0x5f, 0x34, 0x38, 0x30, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4a, 0x57, 0x4a, 0x58, 0x43, 0x5f, 0x48, 0x31, 0x32, 0x35, 0x5f, 0x38, 0x30, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x57, 0x58, 0x43, 0x5f, 0x31, 0x37, 0x30, 0x30, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x57, 0x58, 0x43, 0x5f, 0x48, 0x33, 0x34, 0x30, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4a, 0x59, 0x4a, 0x58, 0x43, 0x5f, 0x31, 0x36, 0x30, 0x5f, 0x32, 0x36, 0x30, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4a, 0x5a, 0x58, 0x43, 0x5f, 0x48, 0x31, 0x38, 0x10, 0x08, 0x22, 0x3b, 0x0a, 0x15, 0x50, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 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, 0x52, 0x0a, 0x18, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x0a, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x50, 0x72, 0x65, 0x73, 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x50, 0x72, 0x65, 0x73, 0x73, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x55, 0x70, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x5f, 0x4b, 0x6e, 0x6f, 0x62, 0x10, 0x05, 0x2a, 0x8e, 0x03, 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, 0x12, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x4d, 0x51, 0x10, 0x0e, 0x2a, 0x25, 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, 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 ( file_model_proto_rawDescOnce sync.Once file_model_proto_rawDescData = file_model_proto_rawDesc ) func file_model_proto_rawDescGZIP() []byte { file_model_proto_rawDescOnce.Do(func() { file_model_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_proto_rawDescData) }) return file_model_proto_rawDescData } var file_model_proto_enumTypes = make([]protoimpl.EnumInfo, 7) var file_model_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_model_proto_goTypes = []interface{}{ (DeviceType)(0), // 0: model.DeviceType (Port)(0), // 1: model.Port (Direction)(0), // 2: model.Direction (CheckPointType)(0), // 3: model.CheckPointType (Turnout_SwitchMachineType)(0), // 4: model.Turnout.SwitchMachineType (Relay_Model)(0), // 5: model.Relay.Model (Button_ButtonType)(0), // 6: model.Button.ButtonType (*Repository)(nil), // 7: model.Repository (*PhysicalSection)(nil), // 8: model.PhysicalSection (*CheckPoint)(nil), // 9: model.CheckPoint (*Turnout)(nil), // 10: model.Turnout (*Signal)(nil), // 11: model.Signal (*Transponder)(nil), // 12: model.Transponder (*Slope)(nil), // 13: model.Slope (*SectionalCurvature)(nil), // 14: model.SectionalCurvature (*DevicePort)(nil), // 15: model.DevicePort (*Kilometer)(nil), // 16: model.Kilometer (*KilometerConvert)(nil), // 17: model.KilometerConvert (*Relay)(nil), // 18: model.Relay (*PhaseFailureProtector)(nil), // 19: model.PhaseFailureProtector (*ElectronicComponentGroup)(nil), // 20: model.ElectronicComponentGroup (*Button)(nil), // 21: model.Button } var file_model_proto_depIdxs = []int32{ 8, // 0: model.Repository.physicalSections:type_name -> model.PhysicalSection 9, // 1: model.Repository.checkPoints:type_name -> model.CheckPoint 10, // 2: model.Repository.turnouts:type_name -> model.Turnout 11, // 3: model.Repository.signals:type_name -> model.Signal 12, // 4: model.Repository.transponders:type_name -> model.Transponder 13, // 5: model.Repository.slopes:type_name -> model.Slope 14, // 6: model.Repository.sectionalCurvatures:type_name -> model.SectionalCurvature 17, // 7: model.Repository.kilometerConverts:type_name -> model.KilometerConvert 18, // 8: model.Repository.relays:type_name -> model.Relay 19, // 9: model.Repository.phaseFailureProtectors:type_name -> model.PhaseFailureProtector 21, // 10: model.Repository.buttons:type_name -> model.Button 15, // 11: model.PhysicalSection.aDevicePort:type_name -> model.DevicePort 15, // 12: model.PhysicalSection.bDevicePort:type_name -> model.DevicePort 16, // 13: model.CheckPoint.km:type_name -> model.Kilometer 3, // 14: model.CheckPoint.type:type_name -> model.CheckPointType 15, // 15: model.CheckPoint.devicePorts:type_name -> model.DevicePort 16, // 16: model.Turnout.km:type_name -> model.Kilometer 15, // 17: model.Turnout.aDevicePort:type_name -> model.DevicePort 15, // 18: model.Turnout.bDevicePort:type_name -> model.DevicePort 15, // 19: model.Turnout.cDevicePort:type_name -> model.DevicePort 4, // 20: model.Turnout.switchMachineType:type_name -> model.Turnout.SwitchMachineType 20, // 21: model.Turnout.electronicComponentGroups:type_name -> model.ElectronicComponentGroup 16, // 22: model.Signal.km:type_name -> model.Kilometer 15, // 23: model.Signal.turnoutPort:type_name -> model.DevicePort 20, // 24: model.Signal.electronicComponentGroups:type_name -> model.ElectronicComponentGroup 16, // 25: model.Transponder.km:type_name -> model.Kilometer 15, // 26: model.Transponder.turnoutPort:type_name -> model.DevicePort 16, // 27: model.Slope.kms:type_name -> model.Kilometer 16, // 28: model.SectionalCurvature.kms:type_name -> model.Kilometer 0, // 29: model.DevicePort.deviceType:type_name -> model.DeviceType 1, // 30: model.DevicePort.port:type_name -> model.Port 2, // 31: model.Kilometer.direction:type_name -> model.Direction 16, // 32: model.KilometerConvert.kmA:type_name -> model.Kilometer 16, // 33: model.KilometerConvert.kmB:type_name -> model.Kilometer 5, // 34: model.Relay.model:type_name -> model.Relay.Model 6, // 35: model.Button.buttonType:type_name -> model.Button.ButtonType 36, // [36:36] is the sub-list for method output_type 36, // [36:36] is the sub-list for method input_type 36, // [36:36] is the sub-list for extension type_name 36, // [36:36] is the sub-list for extension extendee 0, // [0:36] is the sub-list for field type_name } func init() { file_model_proto_init() } func file_model_proto_init() { if File_model_proto != nil { return } if !protoimpl.UnsafeEnabled { file_model_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Repository); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PhysicalSection); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckPoint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Turnout); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Signal); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Transponder); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Slope); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SectionalCurvature); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DevicePort); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Kilometer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KilometerConvert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Relay); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PhaseFailureProtector); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ElectronicComponentGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Button); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_model_proto_rawDesc, NumEnums: 7, NumMessages: 15, NumExtensions: 0, NumServices: 0, }, GoTypes: file_model_proto_goTypes, DependencyIndexes: file_model_proto_depIdxs, EnumInfos: file_model_proto_enumTypes, MessageInfos: file_model_proto_msgTypes, }.Build() File_model_proto = out.File file_model_proto_rawDesc = nil file_model_proto_goTypes = nil file_model_proto_depIdxs = nil }