rts-sim-testing-service/dto/state_proto/device_state.pb.go
thesai 54e2d88db3
Some checks failed
local-test分支打包构建docker并发布运行 / Docker-Build (push) Failing after 5m19s
[新增]11号线联锁、12号线联锁、12号计轴第三方通信服务的状态采集
2024-10-09 17:38:52 +08:00

7607 lines
281 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
// protoc v4.23.1
// source: device_state.proto
package state_proto
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
common_proto "joylink.club/bj-rtsts-server/dto/common_proto"
data_proto "joylink.club/bj-rtsts-server/dto/data_proto"
request_proto "joylink.club/bj-rtsts-server/dto/request_proto"
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 SectionType int32
const (
SectionType_Any SectionType = 0
// 计轴区段
SectionType_Axle SectionType = 1
// 逻辑区段
SectionType_Logic SectionType = 2
// 物理区段
SectionType_Physic SectionType = 3
)
// Enum value maps for SectionType.
var (
SectionType_name = map[int32]string{
0: "Any",
1: "Axle",
2: "Logic",
3: "Physic",
}
SectionType_value = map[string]int32{
"Any": 0,
"Axle": 1,
"Logic": 2,
"Physic": 3,
}
)
func (x SectionType) Enum() *SectionType {
p := new(SectionType)
*p = x
return p
}
func (x SectionType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SectionType) Descriptor() protoreflect.EnumDescriptor {
return file_device_state_proto_enumTypes[0].Descriptor()
}
func (SectionType) Type() protoreflect.EnumType {
return &file_device_state_proto_enumTypes[0]
}
func (x SectionType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SectionType.Descriptor instead.
func (SectionType) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{0}
}
// 信号机显示枚举
type Signal_Aspect int32
const (
// 灭灯
Signal_OFF Signal_Aspect = 0
// 红
Signal_H Signal_Aspect = 1
// 绿灯亮
Signal_L Signal_Aspect = 2
// 黄
Signal_U Signal_Aspect = 3
// 红黄
Signal_HU Signal_Aspect = 4
// 白
Signal_B Signal_Aspect = 5
// 蓝
Signal_A Signal_Aspect = 6
)
// Enum value maps for Signal_Aspect.
var (
Signal_Aspect_name = map[int32]string{
0: "OFF",
1: "H",
2: "L",
3: "U",
4: "HU",
5: "B",
6: "A",
}
Signal_Aspect_value = map[string]int32{
"OFF": 0,
"H": 1,
"L": 2,
"U": 3,
"HU": 4,
"B": 5,
"A": 6,
}
)
func (x Signal_Aspect) Enum() *Signal_Aspect {
p := new(Signal_Aspect)
*p = x
return p
}
func (x Signal_Aspect) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Signal_Aspect) Descriptor() protoreflect.EnumDescriptor {
return file_device_state_proto_enumTypes[1].Descriptor()
}
func (Signal_Aspect) Type() protoreflect.EnumType {
return &file_device_state_proto_enumTypes[1]
}
func (x Signal_Aspect) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Signal_Aspect.Descriptor instead.
func (Signal_Aspect) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{5, 0}
}
// map<string, SensorSpeedPulseCount> speedPulseCountMap = 5;//连接状态
type TrainConnState_TrainConnType int32
const (
TrainConnState_NONE TrainConnState_TrainConnType = 0 //未知连接
TrainConnState_VOBC TrainConnState_TrainConnType = 1 //半实物
TrainConnState_PC_SIM TrainConnState_TrainConnType = 2 //PC仿真
)
// Enum value maps for TrainConnState_TrainConnType.
var (
TrainConnState_TrainConnType_name = map[int32]string{
0: "NONE",
1: "VOBC",
2: "PC_SIM",
}
TrainConnState_TrainConnType_value = map[string]int32{
"NONE": 0,
"VOBC": 1,
"PC_SIM": 2,
}
)
func (x TrainConnState_TrainConnType) Enum() *TrainConnState_TrainConnType {
p := new(TrainConnState_TrainConnType)
*p = x
return p
}
func (x TrainConnState_TrainConnType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TrainConnState_TrainConnType) Descriptor() protoreflect.EnumDescriptor {
return file_device_state_proto_enumTypes[2].Descriptor()
}
func (TrainConnState_TrainConnType) Type() protoreflect.EnumType {
return &file_device_state_proto_enumTypes[2]
}
func (x TrainConnState_TrainConnType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TrainConnState_TrainConnType.Descriptor instead.
func (TrainConnState_TrainConnType) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{8, 0}
}
type TrainState_TrainPort int32
const (
TrainState_PORT_NONE TrainState_TrainPort = 0
TrainState_PORT_A TrainState_TrainPort = 1
TrainState_PORT_B TrainState_TrainPort = 2
)
// Enum value maps for TrainState_TrainPort.
var (
TrainState_TrainPort_name = map[int32]string{
0: "PORT_NONE",
1: "PORT_A",
2: "PORT_B",
}
TrainState_TrainPort_value = map[string]int32{
"PORT_NONE": 0,
"PORT_A": 1,
"PORT_B": 2,
}
)
func (x TrainState_TrainPort) Enum() *TrainState_TrainPort {
p := new(TrainState_TrainPort)
*p = x
return p
}
func (x TrainState_TrainPort) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TrainState_TrainPort) Descriptor() protoreflect.EnumDescriptor {
return file_device_state_proto_enumTypes[3].Descriptor()
}
func (TrainState_TrainPort) Type() protoreflect.EnumType {
return &file_device_state_proto_enumTypes[3]
}
func (x TrainState_TrainPort) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TrainState_TrainPort.Descriptor instead.
func (TrainState_TrainPort) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{9, 0}
}
type TrainVobcState_AtoStepLevel int32
const (
TrainVobcState_ATO_STEP_LEVEL_NONE TrainVobcState_AtoStepLevel = 0
TrainVobcState_ATO_STEP_LEVEL_1 TrainVobcState_AtoStepLevel = 1
TrainVobcState_ATO_STEP_LEVEL_2 TrainVobcState_AtoStepLevel = 2
TrainVobcState_ATO_STEP_LEVEL_3 TrainVobcState_AtoStepLevel = 3
TrainVobcState_ATO_STEP_LEVEL_4 TrainVobcState_AtoStepLevel = 4
TrainVobcState_ATO_STEP_LEVEL_5 TrainVobcState_AtoStepLevel = 5
TrainVobcState_ATO_STEP_LEVEL_6 TrainVobcState_AtoStepLevel = 6
TrainVobcState_ATO_STEP_LEVEL_7 TrainVobcState_AtoStepLevel = 7
)
// Enum value maps for TrainVobcState_AtoStepLevel.
var (
TrainVobcState_AtoStepLevel_name = map[int32]string{
0: "ATO_STEP_LEVEL_NONE",
1: "ATO_STEP_LEVEL_1",
2: "ATO_STEP_LEVEL_2",
3: "ATO_STEP_LEVEL_3",
4: "ATO_STEP_LEVEL_4",
5: "ATO_STEP_LEVEL_5",
6: "ATO_STEP_LEVEL_6",
7: "ATO_STEP_LEVEL_7",
}
TrainVobcState_AtoStepLevel_value = map[string]int32{
"ATO_STEP_LEVEL_NONE": 0,
"ATO_STEP_LEVEL_1": 1,
"ATO_STEP_LEVEL_2": 2,
"ATO_STEP_LEVEL_3": 3,
"ATO_STEP_LEVEL_4": 4,
"ATO_STEP_LEVEL_5": 5,
"ATO_STEP_LEVEL_6": 6,
"ATO_STEP_LEVEL_7": 7,
}
)
func (x TrainVobcState_AtoStepLevel) Enum() *TrainVobcState_AtoStepLevel {
p := new(TrainVobcState_AtoStepLevel)
*p = x
return p
}
func (x TrainVobcState_AtoStepLevel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TrainVobcState_AtoStepLevel) Descriptor() protoreflect.EnumDescriptor {
return file_device_state_proto_enumTypes[4].Descriptor()
}
func (TrainVobcState_AtoStepLevel) Type() protoreflect.EnumType {
return &file_device_state_proto_enumTypes[4]
}
func (x TrainVobcState_AtoStepLevel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TrainVobcState_AtoStepLevel.Descriptor instead.
func (TrainVobcState_AtoStepLevel) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{13, 0}
}
type SimulationStatus_SimulationState int32
const (
SimulationStatus_Init SimulationStatus_SimulationState = 0
SimulationStatus_Running SimulationStatus_SimulationState = 1
SimulationStatus_Pause SimulationStatus_SimulationState = 2
SimulationStatus_Error SimulationStatus_SimulationState = 3
SimulationStatus_Destroy SimulationStatus_SimulationState = 4
)
// Enum value maps for SimulationStatus_SimulationState.
var (
SimulationStatus_SimulationState_name = map[int32]string{
0: "Init",
1: "Running",
2: "Pause",
3: "Error",
4: "Destroy",
}
SimulationStatus_SimulationState_value = map[string]int32{
"Init": 0,
"Running": 1,
"Pause": 2,
"Error": 3,
"Destroy": 4,
}
)
func (x SimulationStatus_SimulationState) Enum() *SimulationStatus_SimulationState {
p := new(SimulationStatus_SimulationState)
*p = x
return p
}
func (x SimulationStatus_SimulationState) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SimulationStatus_SimulationState) Descriptor() protoreflect.EnumDescriptor {
return file_device_state_proto_enumTypes[5].Descriptor()
}
func (SimulationStatus_SimulationState) Type() protoreflect.EnumType {
return &file_device_state_proto_enumTypes[5]
}
func (x SimulationStatus_SimulationState) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SimulationStatus_SimulationState.Descriptor instead.
func (SimulationStatus_SimulationState) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{33, 0}
}
type SimulationThirdPartyApiService_Type int32
const (
// 未定义
SimulationThirdPartyApiService_Undefined SimulationThirdPartyApiService_Type = 0
// 与动力学接口服务
SimulationThirdPartyApiService_Dynamics SimulationThirdPartyApiService_Type = 1
// 与半实物列车接口服务
SimulationThirdPartyApiService_SemiPhysicalTrain SimulationThirdPartyApiService_Type = 2
// 列车pc仿真
SimulationThirdPartyApiService_Train_pc_sim SimulationThirdPartyApiService_Type = 3
// 联锁通信服务
SimulationThirdPartyApiService_CI SimulationThirdPartyApiService_Type = 4
// 计轴区段通信服务
SimulationThirdPartyApiService_AxleSection SimulationThirdPartyApiService_Type = 5
)
// Enum value maps for SimulationThirdPartyApiService_Type.
var (
SimulationThirdPartyApiService_Type_name = map[int32]string{
0: "Undefined",
1: "Dynamics",
2: "SemiPhysicalTrain",
3: "Train_pc_sim",
4: "CI",
5: "AxleSection",
}
SimulationThirdPartyApiService_Type_value = map[string]int32{
"Undefined": 0,
"Dynamics": 1,
"SemiPhysicalTrain": 2,
"Train_pc_sim": 3,
"CI": 4,
"AxleSection": 5,
}
)
func (x SimulationThirdPartyApiService_Type) Enum() *SimulationThirdPartyApiService_Type {
p := new(SimulationThirdPartyApiService_Type)
*p = x
return p
}
func (x SimulationThirdPartyApiService_Type) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SimulationThirdPartyApiService_Type) Descriptor() protoreflect.EnumDescriptor {
return file_device_state_proto_enumTypes[6].Descriptor()
}
func (SimulationThirdPartyApiService_Type) Type() protoreflect.EnumType {
return &file_device_state_proto_enumTypes[6]
}
func (x SimulationThirdPartyApiService_Type) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SimulationThirdPartyApiService_Type.Descriptor instead.
func (SimulationThirdPartyApiService_Type) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{34, 0}
}
// 服务状态
type SimulationThirdPartyApiService_State int32
const (
// 服务正常
SimulationThirdPartyApiService_Normal SimulationThirdPartyApiService_State = 0
// 服务异常
SimulationThirdPartyApiService_Error SimulationThirdPartyApiService_State = 1
)
// Enum value maps for SimulationThirdPartyApiService_State.
var (
SimulationThirdPartyApiService_State_name = map[int32]string{
0: "Normal",
1: "Error",
}
SimulationThirdPartyApiService_State_value = map[string]int32{
"Normal": 0,
"Error": 1,
}
)
func (x SimulationThirdPartyApiService_State) Enum() *SimulationThirdPartyApiService_State {
p := new(SimulationThirdPartyApiService_State)
*p = x
return p
}
func (x SimulationThirdPartyApiService_State) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SimulationThirdPartyApiService_State) Descriptor() protoreflect.EnumDescriptor {
return file_device_state_proto_enumTypes[7].Descriptor()
}
func (SimulationThirdPartyApiService_State) Type() protoreflect.EnumType {
return &file_device_state_proto_enumTypes[7]
}
func (x SimulationThirdPartyApiService_State) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SimulationThirdPartyApiService_State.Descriptor instead.
func (SimulationThirdPartyApiService_State) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{34, 1}
}
// 相邻端点定义的link的状态
type LinkState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// link索引
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// link上的列车id列表
TrainId []string `protobuf:"bytes,2,rep,name=trainId,proto3" json:"trainId,omitempty"`
}
func (x *LinkState) Reset() {
*x = LinkState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LinkState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LinkState) ProtoMessage() {}
func (x *LinkState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 LinkState.ProtoReflect.Descriptor instead.
func (*LinkState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{0}
}
func (x *LinkState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *LinkState) GetTrainId() []string {
if x != nil {
return x.TrainId
}
return nil
}
// 物理区段状态
type SectionState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 区段索引
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// 区段占用
// true-占用false-出清
Occupied bool `protobuf:"varint,3,opt,name=occupied,proto3" json:"occupied,omitempty"`
// 计轴故障
AxleFault bool `protobuf:"varint,4,opt,name=axleFault,proto3" json:"axleFault,omitempty"`
// 计轴复位
AxleDrst bool `protobuf:"varint,5,opt,name=axleDrst,proto3" json:"axleDrst,omitempty"`
// 计轴预复位
AxlePdrst bool `protobuf:"varint,6,opt,name=axlePdrst,proto3" json:"axlePdrst,omitempty"`
}
func (x *SectionState) Reset() {
*x = SectionState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SectionState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SectionState) ProtoMessage() {}
func (x *SectionState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 SectionState.ProtoReflect.Descriptor instead.
func (*SectionState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{1}
}
func (x *SectionState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *SectionState) GetOccupied() bool {
if x != nil {
return x.Occupied
}
return false
}
func (x *SectionState) GetAxleFault() bool {
if x != nil {
return x.AxleFault
}
return false
}
func (x *SectionState) GetAxleDrst() bool {
if x != nil {
return x.AxleDrst
}
return false
}
func (x *SectionState) GetAxlePdrst() bool {
if x != nil {
return x.AxlePdrst
}
return false
}
// 计轴区段状态
type AxleCountingSectionState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Occupied bool `protobuf:"varint,2,opt,name=occupied,proto3" json:"occupied,omitempty"`
}
func (x *AxleCountingSectionState) Reset() {
*x = AxleCountingSectionState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AxleCountingSectionState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AxleCountingSectionState) ProtoMessage() {}
func (x *AxleCountingSectionState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 AxleCountingSectionState.ProtoReflect.Descriptor instead.
func (*AxleCountingSectionState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{2}
}
func (x *AxleCountingSectionState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *AxleCountingSectionState) GetOccupied() bool {
if x != nil {
return x.Occupied
}
return false
}
// 道岔状态
type SwitchState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 道岔索引
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// 道岔处于定位(表示)
Normal bool `protobuf:"varint,2,opt,name=normal,proto3" json:"normal,omitempty"`
// 道岔处于反位(表示)
Reverse bool `protobuf:"varint,3,opt,name=reverse,proto3" json:"reverse,omitempty"`
// 道岔处于定位(实际)
Dw bool `protobuf:"varint,4,opt,name=dw,proto3" json:"dw,omitempty"`
// 道岔处于反位(实际)
Fw bool `protobuf:"varint,5,opt,name=fw,proto3" json:"fw,omitempty"`
// 道岔设置参数
Param *request_proto.PointsParam `protobuf:"bytes,6,opt,name=param,proto3" json:"param,omitempty"`
// 定操驱动
Qdc bool `protobuf:"varint,7,opt,name=qdc,proto3" json:"qdc,omitempty"`
// 反操驱动
Qfc bool `protobuf:"varint,8,opt,name=qfc,proto3" json:"qfc,omitempty"`
// 允许操驱动
Qyc bool `protobuf:"varint,9,opt,name=qyc,proto3" json:"qyc,omitempty"`
// 定操采集
Dc bool `protobuf:"varint,10,opt,name=dc,proto3" json:"dc,omitempty"`
// 反操采集
Fc bool `protobuf:"varint,11,opt,name=fc,proto3" json:"fc,omitempty"`
// 允许操作采集
Yc bool `protobuf:"varint,12,opt,name=yc,proto3" json:"yc,omitempty"`
// 是否占用
Occupied bool `protobuf:"varint,13,opt,name=occupied,proto3" json:"occupied,omitempty"`
}
func (x *SwitchState) Reset() {
*x = SwitchState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SwitchState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SwitchState) ProtoMessage() {}
func (x *SwitchState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 SwitchState.ProtoReflect.Descriptor instead.
func (*SwitchState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{3}
}
func (x *SwitchState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *SwitchState) GetNormal() bool {
if x != nil {
return x.Normal
}
return false
}
func (x *SwitchState) GetReverse() bool {
if x != nil {
return x.Reverse
}
return false
}
func (x *SwitchState) GetDw() bool {
if x != nil {
return x.Dw
}
return false
}
func (x *SwitchState) GetFw() bool {
if x != nil {
return x.Fw
}
return false
}
func (x *SwitchState) GetParam() *request_proto.PointsParam {
if x != nil {
return x.Param
}
return nil
}
func (x *SwitchState) GetQdc() bool {
if x != nil {
return x.Qdc
}
return false
}
func (x *SwitchState) GetQfc() bool {
if x != nil {
return x.Qfc
}
return false
}
func (x *SwitchState) GetQyc() bool {
if x != nil {
return x.Qyc
}
return false
}
func (x *SwitchState) GetDc() bool {
if x != nil {
return x.Dc
}
return false
}
func (x *SwitchState) GetFc() bool {
if x != nil {
return x.Fc
}
return false
}
func (x *SwitchState) GetYc() bool {
if x != nil {
return x.Yc
}
return false
}
func (x *SwitchState) GetOccupied() bool {
if x != nil {
return x.Occupied
}
return false
}
// 信号机状态
type SignalState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 信号机索引
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// 信号机的灯列表
Aspect Signal_Aspect `protobuf:"varint,2,opt,name=aspect,proto3,enum=state.Signal_Aspect" json:"aspect,omitempty"`
// 信号机设置参数
Param *request_proto.SignalParam `protobuf:"bytes,3,opt,name=param,proto3" json:"param,omitempty"`
// 信号机继电器状态
RelayStateMap map[string]bool `protobuf:"bytes,4,rep,name=relayStateMap,proto3" json:"relayStateMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}
func (x *SignalState) Reset() {
*x = SignalState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignalState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignalState) ProtoMessage() {}
func (x *SignalState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 SignalState.ProtoReflect.Descriptor instead.
func (*SignalState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{4}
}
func (x *SignalState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *SignalState) GetAspect() Signal_Aspect {
if x != nil {
return x.Aspect
}
return Signal_OFF
}
func (x *SignalState) GetParam() *request_proto.SignalParam {
if x != nil {
return x.Param
}
return nil
}
func (x *SignalState) GetRelayStateMap() map[string]bool {
if x != nil {
return x.RelayStateMap
}
return nil
}
// 信号机显示定义
type Signal struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *Signal) Reset() {
*x = Signal{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[5]
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_device_state_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 Signal.ProtoReflect.Descriptor instead.
func (*Signal) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{5}
}
// 站台状态
type PlatformState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 站台索引
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// EMP继电器状态
Empj bool `protobuf:"varint,2,opt,name=empj,proto3" json:"empj,omitempty"`
// SPKS继电器状态
SpksState []*ReplyState `protobuf:"bytes,3,rep,name=spksState,proto3" json:"spksState,omitempty"`
// 门控箱继电器状态
MkxJState *MkxJState `protobuf:"bytes,4,opt,name=mkxJState,proto3" json:"mkxJState,omitempty"`
}
func (x *PlatformState) Reset() {
*x = PlatformState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PlatformState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PlatformState) ProtoMessage() {}
func (x *PlatformState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 PlatformState.ProtoReflect.Descriptor instead.
func (*PlatformState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{6}
}
func (x *PlatformState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *PlatformState) GetEmpj() bool {
if x != nil {
return x.Empj
}
return false
}
func (x *PlatformState) GetSpksState() []*ReplyState {
if x != nil {
return x.SpksState
}
return nil
}
func (x *PlatformState) GetMkxJState() *MkxJState {
if x != nil {
return x.MkxJState
}
return nil
}
// 车站状态
type StationState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 车站索引
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}
func (x *StationState) Reset() {
*x = StationState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *StationState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StationState) ProtoMessage() {}
func (x *StationState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 StationState.ProtoReflect.Descriptor instead.
func (*StationState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{7}
}
func (x *StationState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
// 列车连接状态
type TrainConnState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Conn bool `protobuf:"varint,1,opt,name=conn,proto3" json:"conn,omitempty"` //连接状态
ConnType TrainConnState_TrainConnType `protobuf:"varint,2,opt,name=connType,proto3,enum=state.TrainConnState_TrainConnType" json:"connType,omitempty"`
TrainControlMapId uint32 `protobuf:"varint,3,opt,name=TrainControlMapId,proto3" json:"TrainControlMapId,omitempty"` //关联的列车控制mapId
TypeName string `protobuf:"bytes,4,opt,name=typeName,proto3" json:"typeName,omitempty"` //连接名称
}
func (x *TrainConnState) Reset() {
*x = TrainConnState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainConnState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainConnState) ProtoMessage() {}
func (x *TrainConnState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 TrainConnState.ProtoReflect.Descriptor instead.
func (*TrainConnState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{8}
}
func (x *TrainConnState) GetConn() bool {
if x != nil {
return x.Conn
}
return false
}
func (x *TrainConnState) GetConnType() TrainConnState_TrainConnType {
if x != nil {
return x.ConnType
}
return TrainConnState_NONE
}
func (x *TrainConnState) GetTrainControlMapId() uint32 {
if x != nil {
return x.TrainControlMapId
}
return 0
}
func (x *TrainConnState) GetTypeName() string {
if x != nil {
return x.TypeName
}
return ""
}
// 列车状态
type TrainState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 列车索引
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// 列车初始link运行方向
Up bool `protobuf:"varint,2,opt,name=up,proto3" json:"up,omitempty"`
// 列车初始速度
Speed float32 `protobuf:"fixed32,3,opt,name=speed,proto3" json:"speed,omitempty"`
// 列车长度,1=1mm
TrainLength int64 `protobuf:"varint,4,opt,name=trainLength,proto3" json:"trainLength,omitempty"`
// 列车是否显示此状态仅在列车被删除时为false若需更改用途需增加列车被删除状态
Show bool `protobuf:"varint,5,opt,name=show,proto3" json:"show,omitempty"`
// 列车车头所在设备ID
HeadDeviceId uint32 `protobuf:"varint,6,opt,name=headDeviceId,proto3" json:"headDeviceId,omitempty"`
// 列车车头所在设备偏移量
HeadOffset int64 `protobuf:"varint,7,opt,name=headOffset,proto3" json:"headOffset,omitempty"`
// 设备端口
DevicePort string `protobuf:"bytes,8,opt,name=devicePort,proto3" json:"devicePort,omitempty"`
// 位移方向指向(区段A-B,道岔:-> 岔心)
DriftTo bool `protobuf:"varint,9,opt,name=driftTo,proto3" json:"driftTo,omitempty"`
// 列车运营上下行(公里标 上行:小 -> 大,下行:大 -> 小)
TrainRunUp bool `protobuf:"varint,10,opt,name=trainRunUp,proto3" json:"trainRunUp,omitempty"`
// 列车车头方向 0=未激活1= 小 -> 大,2=大 -> 小
TrainActiveDirection uint32 `protobuf:"varint,11,opt,name=trainActiveDirection,proto3" json:"trainActiveDirection,omitempty"`
// 动力学信息
DynamicState *TrainDynamicState `protobuf:"bytes,12,opt,name=dynamicState,proto3" json:"dynamicState,omitempty"`
// 半实物信息
VobcState *TrainVobcState `protobuf:"bytes,13,opt,name=vobcState,proto3" json:"vobcState,omitempty"`
// 所在公里标
TrainKilometer int64 `protobuf:"varint,14,opt,name=trainKilometer,proto3" json:"trainKilometer,omitempty"`
// 控制响应延时
ControlDelayTime int64 `protobuf:"varint,15,opt,name=controlDelayTime,proto3" json:"controlDelayTime,omitempty"`
// 列车轮径
WheelDiameter int32 `protobuf:"varint,16,opt,name=wheelDiameter,proto3" json:"wheelDiameter,omitempty"`
// 列车动力学配置
TrainDynamicConfig *common_proto.TrainDynamicConfig `protobuf:"bytes,17,opt,name=trainDynamicConfig,proto3" json:"trainDynamicConfig,omitempty"`
// 列车A端
TrainEndsA *common_proto.TrainEndsState `protobuf:"bytes,18,opt,name=trainEndsA,proto3" json:"trainEndsA,omitempty"`
// 列车B端
TrainEndsB *common_proto.TrainEndsState `protobuf:"bytes,19,opt,name=trainEndsB,proto3" json:"trainEndsB,omitempty"`
// 列车尾端所在设备ID
TailDeviceId uint32 `protobuf:"varint,20,opt,name=tailDeviceId,proto3" json:"tailDeviceId,omitempty"`
// 列车尾端所在设备偏移量
TailOffset int64 `protobuf:"varint,21,opt,name=tailOffset,proto3" json:"tailOffset,omitempty"`
// 列车尾端所在设备端口
TailDevicePort string `protobuf:"bytes,22,opt,name=tailDevicePort,proto3" json:"tailDevicePort,omitempty"`
// BTM状态 --即将过时 2024-08-12
//
// BTMState btmState = 23;
Tcc *TrainControlState `protobuf:"bytes,24,opt,name=tcc,proto3" json:"tcc,omitempty"`
ConnState *TrainConnState `protobuf:"bytes,25,opt,name=connState,proto3" json:"connState,omitempty"` //列车连接第三方状态
// SensorSpeedPulseCount pluseCount = 26;
// VobcBtmState vobcBtm = 27;//vobc btm 状态
OldLink string `protobuf:"bytes,28,opt,name=oldLink,proto3" json:"oldLink,omitempty"`
OldLinkOffset int64 `protobuf:"varint,29,opt,name=oldLinkOffset,proto3" json:"oldLinkOffset,omitempty"`
OldTailLink string `protobuf:"bytes,30,opt,name=oldTailLink,proto3" json:"oldTailLink,omitempty"`
OldTailLinkOffset int64 `protobuf:"varint,31,opt,name=oldTailLinkOffset,proto3" json:"oldTailLinkOffset,omitempty"`
BtmBaliseCacheA *TrainBtmCache `protobuf:"bytes,32,opt,name=btmBaliseCacheA,proto3" json:"btmBaliseCacheA,omitempty"` //列车应答器缓存
BtmBaliseCacheB *TrainBtmCache `protobuf:"bytes,33,opt,name=btmBaliseCacheB,proto3" json:"btmBaliseCacheB,omitempty"` //列车应答器缓存
TrainLoad int32 `protobuf:"varint,34,opt,name=TrainLoad,proto3" json:"TrainLoad,omitempty"` //列车载荷(吨)
TrainMaxSpeed float32 `protobuf:"fixed32,35,opt,name=TrainMaxSpeed,proto3" json:"TrainMaxSpeed,omitempty"` //列车最大时速
TrainMaxAcc float32 `protobuf:"fixed32,36,opt,name=TrainMaxAcc,proto3" json:"TrainMaxAcc,omitempty"` //列车最大加速度
TrainMaxBrake float32 `protobuf:"fixed32,37,opt,name=TrainMaxBrake,proto3" json:"TrainMaxBrake,omitempty"` //列车最大减速度
TrainEmergencyBrake float32 `protobuf:"fixed32,38,opt,name=TrainEmergencyBrake,proto3" json:"TrainEmergencyBrake,omitempty"` //列车紧急制动减速度
ProjectCode string `protobuf:"bytes,39,opt,name=projectCode,proto3" json:"projectCode,omitempty"`
// TrainBtmCache BtmBaliseCache = 40;
TrainPort TrainState_TrainPort `protobuf:"varint,40,opt,name=trainPort,proto3,enum=state.TrainState_TrainPort" json:"trainPort,omitempty"` //列车当前驾驶的端口
PulseCountMap map[int32]*SensorSpeedPulseCount `protobuf:"bytes,41,rep,name=pulseCountMap,proto3" json:"pulseCountMap,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //列车每端对应的速度 key = TrainPort 枚举的值
}
func (x *TrainState) Reset() {
*x = TrainState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainState) ProtoMessage() {}
func (x *TrainState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 TrainState.ProtoReflect.Descriptor instead.
func (*TrainState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{9}
}
func (x *TrainState) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *TrainState) GetUp() bool {
if x != nil {
return x.Up
}
return false
}
func (x *TrainState) GetSpeed() float32 {
if x != nil {
return x.Speed
}
return 0
}
func (x *TrainState) GetTrainLength() int64 {
if x != nil {
return x.TrainLength
}
return 0
}
func (x *TrainState) GetShow() bool {
if x != nil {
return x.Show
}
return false
}
func (x *TrainState) GetHeadDeviceId() uint32 {
if x != nil {
return x.HeadDeviceId
}
return 0
}
func (x *TrainState) GetHeadOffset() int64 {
if x != nil {
return x.HeadOffset
}
return 0
}
func (x *TrainState) GetDevicePort() string {
if x != nil {
return x.DevicePort
}
return ""
}
func (x *TrainState) GetDriftTo() bool {
if x != nil {
return x.DriftTo
}
return false
}
func (x *TrainState) GetTrainRunUp() bool {
if x != nil {
return x.TrainRunUp
}
return false
}
func (x *TrainState) GetTrainActiveDirection() uint32 {
if x != nil {
return x.TrainActiveDirection
}
return 0
}
func (x *TrainState) GetDynamicState() *TrainDynamicState {
if x != nil {
return x.DynamicState
}
return nil
}
func (x *TrainState) GetVobcState() *TrainVobcState {
if x != nil {
return x.VobcState
}
return nil
}
func (x *TrainState) GetTrainKilometer() int64 {
if x != nil {
return x.TrainKilometer
}
return 0
}
func (x *TrainState) GetControlDelayTime() int64 {
if x != nil {
return x.ControlDelayTime
}
return 0
}
func (x *TrainState) GetWheelDiameter() int32 {
if x != nil {
return x.WheelDiameter
}
return 0
}
func (x *TrainState) GetTrainDynamicConfig() *common_proto.TrainDynamicConfig {
if x != nil {
return x.TrainDynamicConfig
}
return nil
}
func (x *TrainState) GetTrainEndsA() *common_proto.TrainEndsState {
if x != nil {
return x.TrainEndsA
}
return nil
}
func (x *TrainState) GetTrainEndsB() *common_proto.TrainEndsState {
if x != nil {
return x.TrainEndsB
}
return nil
}
func (x *TrainState) GetTailDeviceId() uint32 {
if x != nil {
return x.TailDeviceId
}
return 0
}
func (x *TrainState) GetTailOffset() int64 {
if x != nil {
return x.TailOffset
}
return 0
}
func (x *TrainState) GetTailDevicePort() string {
if x != nil {
return x.TailDevicePort
}
return ""
}
func (x *TrainState) GetTcc() *TrainControlState {
if x != nil {
return x.Tcc
}
return nil
}
func (x *TrainState) GetConnState() *TrainConnState {
if x != nil {
return x.ConnState
}
return nil
}
func (x *TrainState) GetOldLink() string {
if x != nil {
return x.OldLink
}
return ""
}
func (x *TrainState) GetOldLinkOffset() int64 {
if x != nil {
return x.OldLinkOffset
}
return 0
}
func (x *TrainState) GetOldTailLink() string {
if x != nil {
return x.OldTailLink
}
return ""
}
func (x *TrainState) GetOldTailLinkOffset() int64 {
if x != nil {
return x.OldTailLinkOffset
}
return 0
}
func (x *TrainState) GetBtmBaliseCacheA() *TrainBtmCache {
if x != nil {
return x.BtmBaliseCacheA
}
return nil
}
func (x *TrainState) GetBtmBaliseCacheB() *TrainBtmCache {
if x != nil {
return x.BtmBaliseCacheB
}
return nil
}
func (x *TrainState) GetTrainLoad() int32 {
if x != nil {
return x.TrainLoad
}
return 0
}
func (x *TrainState) GetTrainMaxSpeed() float32 {
if x != nil {
return x.TrainMaxSpeed
}
return 0
}
func (x *TrainState) GetTrainMaxAcc() float32 {
if x != nil {
return x.TrainMaxAcc
}
return 0
}
func (x *TrainState) GetTrainMaxBrake() float32 {
if x != nil {
return x.TrainMaxBrake
}
return 0
}
func (x *TrainState) GetTrainEmergencyBrake() float32 {
if x != nil {
return x.TrainEmergencyBrake
}
return 0
}
func (x *TrainState) GetProjectCode() string {
if x != nil {
return x.ProjectCode
}
return ""
}
func (x *TrainState) GetTrainPort() TrainState_TrainPort {
if x != nil {
return x.TrainPort
}
return TrainState_PORT_NONE
}
func (x *TrainState) GetPulseCountMap() map[int32]*SensorSpeedPulseCount {
if x != nil {
return x.PulseCountMap
}
return nil
}
// 列车应答器缓存
type TrainBtmCache struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Dsn uint32 `protobuf:"varint,1,opt,name=dsn,proto3" json:"dsn,omitempty"`
BaliseCount uint32 `protobuf:"varint,2,opt,name=baliseCount,proto3" json:"baliseCount,omitempty"` //应答器计数(每过一个应答器加一,在同一个应答器内不变)0~255
MessageCounter uint32 `protobuf:"varint,3,opt,name=messageCounter,proto3" json:"messageCounter,omitempty"` //报文计数器 (每解出一个报文加一)0~255
ResendBaliseId string `protobuf:"bytes,4,opt,name=resendBaliseId,proto3" json:"resendBaliseId,omitempty"`
BaliseList []*BTMState `protobuf:"bytes,5,rep,name=baliseList,proto3" json:"baliseList,omitempty"`
}
func (x *TrainBtmCache) Reset() {
*x = TrainBtmCache{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainBtmCache) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainBtmCache) ProtoMessage() {}
func (x *TrainBtmCache) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 TrainBtmCache.ProtoReflect.Descriptor instead.
func (*TrainBtmCache) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{10}
}
func (x *TrainBtmCache) GetDsn() uint32 {
if x != nil {
return x.Dsn
}
return 0
}
func (x *TrainBtmCache) GetBaliseCount() uint32 {
if x != nil {
return x.BaliseCount
}
return 0
}
func (x *TrainBtmCache) GetMessageCounter() uint32 {
if x != nil {
return x.MessageCounter
}
return 0
}
func (x *TrainBtmCache) GetResendBaliseId() string {
if x != nil {
return x.ResendBaliseId
}
return ""
}
func (x *TrainBtmCache) GetBaliseList() []*BTMState {
if x != nil {
return x.BaliseList
}
return nil
}
// 速度传感器脉冲数
type SensorSpeedPulseCount struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PulseCount1 uint32 `protobuf:"varint,1,opt,name=pulseCount1,proto3" json:"pulseCount1,omitempty"`
// uint32 pulseCount2 = 2;
PulseCount3 []float32 `protobuf:"fixed32,3,rep,packed,name=pulseCount3,proto3" json:"pulseCount3,omitempty"` // repeated float pulseCount4 = 4;
}
func (x *SensorSpeedPulseCount) Reset() {
*x = SensorSpeedPulseCount{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SensorSpeedPulseCount) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SensorSpeedPulseCount) ProtoMessage() {}
func (x *SensorSpeedPulseCount) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 SensorSpeedPulseCount.ProtoReflect.Descriptor instead.
func (*SensorSpeedPulseCount) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{11}
}
func (x *SensorSpeedPulseCount) GetPulseCount1() uint32 {
if x != nil {
return x.PulseCount1
}
return 0
}
func (x *SensorSpeedPulseCount) GetPulseCount3() []float32 {
if x != nil {
return x.PulseCount3
}
return nil
}
// 动力学列车状态
type TrainDynamicState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 生命信号 每个周期+1
Heartbeat int32 `protobuf:"varint,1,opt,name=heartbeat,proto3" json:"heartbeat,omitempty"`
// 车头所在link的索引
HeadLinkId string `protobuf:"bytes,2,opt,name=headLinkId,proto3" json:"headLinkId,omitempty"`
// 车头所在link内的偏移量单位为mm
HeadLinkOffset int64 `protobuf:"varint,3,opt,name=headLinkOffset,proto3" json:"headLinkOffset,omitempty"`
// 车尾所在link的索引
TailLinkId string `protobuf:"bytes,4,opt,name=tailLinkId,proto3" json:"tailLinkId,omitempty"`
// 车尾所在link内的偏移量单位为mm
TailLinkOffset int64 `protobuf:"varint,5,opt,name=tailLinkOffset,proto3" json:"tailLinkOffset,omitempty"`
// 列车所占用的link的索引的列表
// 顺序为从车头到车尾
OccupiedLinkIndex []string `protobuf:"bytes,6,rep,name=occupiedLinkIndex,proto3" json:"occupiedLinkIndex,omitempty"`
// 列车所在位置坡度值,1=1‰
Slope int32 `protobuf:"varint,7,opt,name=slope,proto3" json:"slope,omitempty"`
// 列车所在位置坡度走势,1=上坡true0=下坡false
Upslope bool `protobuf:"varint,8,opt,name=upslope,proto3" json:"upslope,omitempty"`
// 列车当前运行方向,1 =上行true 0 =下行false
RunningUp bool `protobuf:"varint,9,opt,name=runningUp,proto3" json:"runningUp,omitempty"`
// 实际运行阻力NtotalResistance,1=1N
RunningResistanceSum float32 `protobuf:"fixed32,10,opt,name=runningResistanceSum,proto3" json:"runningResistanceSum,omitempty"`
// 阻力1空气阻力NairResistance,1=1N
AirResistance float32 `protobuf:"fixed32,11,opt,name=airResistance,proto3" json:"airResistance,omitempty"`
// 阻力2坡道阻力NslopeResistance,1=1N
RampResistance float32 `protobuf:"fixed32,12,opt,name=rampResistance,proto3" json:"rampResistance,omitempty"`
// 阻力3曲线阻力NcurveResistance,1=1N
CurveResistance float32 `protobuf:"fixed32,13,opt,name=curveResistance,proto3" json:"curveResistance,omitempty"`
// 列车运行速度m/sspeed,1=1m/s 此处放置的是转换后的数据km/h
Speed int32 `protobuf:"varint,14,opt,name=speed,proto3" json:"speed,omitempty"`
// 头车速传1速度值m/sheadSpeed1,1=1m/s 此处放置的是转换后的数据km/h
HeadSensorSpeed1 int32 `protobuf:"varint,15,opt,name=headSensorSpeed1,proto3" json:"headSensorSpeed1,omitempty"`
// 头车速度2速度值m/sheadSpeed2,1=1m/s 此处放置的是转换后的数据km/h
HeadSensorSpeed2 int32 `protobuf:"varint,16,opt,name=headSensorSpeed2,proto3" json:"headSensorSpeed2,omitempty"`
// 尾车速传1速度值m/stailSpeed1,1=1m/s 此处放置的是转换后的数据km/h
TailSensorSpeed1 int32 `protobuf:"varint,17,opt,name=tailSensorSpeed1,proto3" json:"tailSensorSpeed1,omitempty"`
// 尾车速度2速度值m/stailSpeed2,1=1m/s 此处放置的是转换后的数据km/h
TailSensorSpeed2 int32 `protobuf:"varint,18,opt,name=tailSensorSpeed2,proto3" json:"tailSensorSpeed2,omitempty"`
// 头车雷达速度值m/sheadRadarSpeed,1=1m/s 此处放置的是转换后的数据km/h
HeadRadarSpeed int32 `protobuf:"varint,19,opt,name=headRadarSpeed,proto3" json:"headRadarSpeed,omitempty"`
// 尾车雷达速度值m/stailRadarSpeed,1=1m/s 此处放置的是转换后的数据km/h
TailRadarSpeed int32 `protobuf:"varint,20,opt,name=tailRadarSpeed,proto3" json:"tailRadarSpeed,omitempty"`
// 通讯中断
UdpInterruption bool `protobuf:"varint,21,opt,name=udpInterruption,proto3" json:"udpInterruption,omitempty"`
// 加速
Acceleration float32 `protobuf:"fixed32,22,opt,name=acceleration,proto3" json:"acceleration,omitempty"`
// 列车位移
//
// int32 Displacement = 23;
Displacement float32 `protobuf:"fixed32,23,opt,name=Displacement,proto3" json:"Displacement,omitempty"`
}
func (x *TrainDynamicState) Reset() {
*x = TrainDynamicState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainDynamicState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainDynamicState) ProtoMessage() {}
func (x *TrainDynamicState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 TrainDynamicState.ProtoReflect.Descriptor instead.
func (*TrainDynamicState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{12}
}
func (x *TrainDynamicState) GetHeartbeat() int32 {
if x != nil {
return x.Heartbeat
}
return 0
}
func (x *TrainDynamicState) GetHeadLinkId() string {
if x != nil {
return x.HeadLinkId
}
return ""
}
func (x *TrainDynamicState) GetHeadLinkOffset() int64 {
if x != nil {
return x.HeadLinkOffset
}
return 0
}
func (x *TrainDynamicState) GetTailLinkId() string {
if x != nil {
return x.TailLinkId
}
return ""
}
func (x *TrainDynamicState) GetTailLinkOffset() int64 {
if x != nil {
return x.TailLinkOffset
}
return 0
}
func (x *TrainDynamicState) GetOccupiedLinkIndex() []string {
if x != nil {
return x.OccupiedLinkIndex
}
return nil
}
func (x *TrainDynamicState) GetSlope() int32 {
if x != nil {
return x.Slope
}
return 0
}
func (x *TrainDynamicState) GetUpslope() bool {
if x != nil {
return x.Upslope
}
return false
}
func (x *TrainDynamicState) GetRunningUp() bool {
if x != nil {
return x.RunningUp
}
return false
}
func (x *TrainDynamicState) GetRunningResistanceSum() float32 {
if x != nil {
return x.RunningResistanceSum
}
return 0
}
func (x *TrainDynamicState) GetAirResistance() float32 {
if x != nil {
return x.AirResistance
}
return 0
}
func (x *TrainDynamicState) GetRampResistance() float32 {
if x != nil {
return x.RampResistance
}
return 0
}
func (x *TrainDynamicState) GetCurveResistance() float32 {
if x != nil {
return x.CurveResistance
}
return 0
}
func (x *TrainDynamicState) GetSpeed() int32 {
if x != nil {
return x.Speed
}
return 0
}
func (x *TrainDynamicState) GetHeadSensorSpeed1() int32 {
if x != nil {
return x.HeadSensorSpeed1
}
return 0
}
func (x *TrainDynamicState) GetHeadSensorSpeed2() int32 {
if x != nil {
return x.HeadSensorSpeed2
}
return 0
}
func (x *TrainDynamicState) GetTailSensorSpeed1() int32 {
if x != nil {
return x.TailSensorSpeed1
}
return 0
}
func (x *TrainDynamicState) GetTailSensorSpeed2() int32 {
if x != nil {
return x.TailSensorSpeed2
}
return 0
}
func (x *TrainDynamicState) GetHeadRadarSpeed() int32 {
if x != nil {
return x.HeadRadarSpeed
}
return 0
}
func (x *TrainDynamicState) GetTailRadarSpeed() int32 {
if x != nil {
return x.TailRadarSpeed
}
return 0
}
func (x *TrainDynamicState) GetUdpInterruption() bool {
if x != nil {
return x.UdpInterruption
}
return false
}
func (x *TrainDynamicState) GetAcceleration() float32 {
if x != nil {
return x.Acceleration
}
return 0
}
func (x *TrainDynamicState) GetDisplacement() float32 {
if x != nil {
return x.Displacement
}
return 0
}
// vobc发过来的列车信息 包括 (驾驶台和车载)
type TrainVobcState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 生命信号 每个周期+1
LifeSignal int32 `protobuf:"varint,1,opt,name=lifeSignal,proto3" json:"lifeSignal,omitempty"`
// TC1激活状态 1=激活
Tc1Active bool `protobuf:"varint,2,opt,name=tc1Active,proto3" json:"tc1Active,omitempty"`
// TC2激活状态 1=激活
Tc2Active bool `protobuf:"varint,3,opt,name=tc2Active,proto3" json:"tc2Active,omitempty"`
// 列车方向向前 1=方向向前
DirectionForward bool `protobuf:"varint,4,opt,name=directionForward,proto3" json:"directionForward,omitempty"`
// 列车方向向后 1=方向向后
DirectionBackward bool `protobuf:"varint,5,opt,name=directionBackward,proto3" json:"directionBackward,omitempty"`
// 列车牵引状态 1=牵引
TractionStatus bool `protobuf:"varint,6,opt,name=tractionStatus,proto3" json:"tractionStatus,omitempty"`
// 列车制动状态 1=制动
BrakingStatus bool `protobuf:"varint,7,opt,name=brakingStatus,proto3" json:"brakingStatus,omitempty"`
// 列车紧急制动状态 1=紧急制动
EmergencyBrakingStatus bool `protobuf:"varint,8,opt,name=emergencyBrakingStatus,proto3" json:"emergencyBrakingStatus,omitempty"`
// 列车折返状态AR 1=折返
TurnbackStatus bool `protobuf:"varint,9,opt,name=turnbackStatus,proto3" json:"turnbackStatus,omitempty"`
// 跳跃状态 1=跳跃
JumpStatus bool `protobuf:"varint,10,opt,name=jumpStatus,proto3" json:"jumpStatus,omitempty"`
// ATO模式 1=ATO模式
Ato bool `protobuf:"varint,11,opt,name=ato,proto3" json:"ato,omitempty"`
// FAM模式 1=FAM模式
Fam bool `protobuf:"varint,12,opt,name=fam,proto3" json:"fam,omitempty"`
// CAM模式 1=CAM模式
Cam bool `protobuf:"varint,13,opt,name=cam,proto3" json:"cam,omitempty"`
// 牵引安全回路 1=牵引安全切除
TractionSafetyCircuit bool `protobuf:"varint,14,opt,name=tractionSafetyCircuit,proto3" json:"tractionSafetyCircuit,omitempty"`
// 停放制动状态 1=停放施加
ParkingBrakeStatus bool `protobuf:"varint,15,opt,name=parkingBrakeStatus,proto3" json:"parkingBrakeStatus,omitempty"`
// 保持制动状态 1=保持制动施加
MaintainBrakeStatus bool `protobuf:"varint,16,opt,name=maintainBrakeStatus,proto3" json:"maintainBrakeStatus,omitempty"`
// 列车牵引力 100=1KN
TractionForce int64 `protobuf:"varint,17,opt,name=tractionForce,proto3" json:"tractionForce,omitempty"`
// 列车制动力 100=1KN
BrakeForce int64 `protobuf:"varint,18,opt,name=brakeForce,proto3" json:"brakeForce,omitempty"`
// 【列车载荷 100=1ton
TrainLoad int64 `protobuf:"varint,19,opt,name=trainLoad,proto3" json:"trainLoad,omitempty"`
// 列车开左门指令 1=开门
LeftDoorOpenCommand bool `protobuf:"varint,20,opt,name=leftDoorOpenCommand,proto3" json:"leftDoorOpenCommand,omitempty"`
// 列车开右门指令 1=开门
RightDoorOpenCommand bool `protobuf:"varint,21,opt,name=rightDoorOpenCommand,proto3" json:"rightDoorOpenCommand,omitempty"`
// 列车关左门指令 1=关门
LeftDoorCloseCommand bool `protobuf:"varint,22,opt,name=leftDoorCloseCommand,proto3" json:"leftDoorCloseCommand,omitempty"`
// 列车关右门指令 1=关门
RightDoorCloseCommand bool `protobuf:"varint,23,opt,name=rightDoorCloseCommand,proto3" json:"rightDoorCloseCommand,omitempty"`
// 整列车门关好 1=门关好
AllDoorClose bool `protobuf:"varint,24,opt,name=allDoorClose,proto3" json:"allDoorClose,omitempty"`
// 通讯中断
UdpInterruption bool `protobuf:"varint,25,opt,name=udpInterruption,proto3" json:"udpInterruption,omitempty"`
// 更新时间
UpdateTime int64 `protobuf:"varint,26,opt,name=updateTime,proto3" json:"updateTime,omitempty"`
// 强制门允许
ForceDoorAllow bool `protobuf:"varint,27,opt,name=forceDoorAllow,proto3" json:"forceDoorAllow,omitempty"`
// 模式降级按钮
ModeLevelDownBtn bool `protobuf:"varint,28,opt,name=modeLevelDownBtn,proto3" json:"modeLevelDownBtn,omitempty"`
// 确认按钮
ConfirmBtn bool `protobuf:"varint,29,opt,name=confirmBtn,proto3" json:"confirmBtn,omitempty"`
// 模式升级按钮
ModeLevelUpBtn bool `protobuf:"varint,30,opt,name=modeLevelUpBtn,proto3" json:"modeLevelUpBtn,omitempty"`
// ATO发车按钮
AtoSendTrainBtn bool `protobuf:"varint,31,opt,name=atoSendTrainBtn,proto3" json:"atoSendTrainBtn,omitempty"`
// 列车完整性
// bool trainIntegrity = 32;
//
// 车载ATP/ATO旁路状态
AtpOrAtoBypassState bool `protobuf:"varint,33,opt,name=atpOrAtoBypassState,proto3" json:"atpOrAtoBypassState,omitempty"`
// 车辆牵引已切除状态
TrainTractionCuted bool `protobuf:"varint,34,opt,name=trainTractionCuted,proto3" json:"trainTractionCuted,omitempty"`
// 障碍物检测按钮
ObstacleCheckBtn bool `protobuf:"varint,35,opt,name=obstacleCheckBtn,proto3" json:"obstacleCheckBtn,omitempty"`
// 驾驶室激活反馈
// bool driverActiveReportBtn = 36;
// 制动重故障按钮
BrakeHeavyFault bool `protobuf:"varint,37,opt,name=brakeHeavyFault,proto3" json:"brakeHeavyFault,omitempty"`
// 左门状态
LeftDoorState bool `protobuf:"varint,38,opt,name=leftDoorState,proto3" json:"leftDoorState,omitempty"`
// 右门状态
RightDoorState bool `protobuf:"varint,39,opt,name=rightDoorState,proto3" json:"rightDoorState,omitempty"`
// 唤醒按钮
WakeUpBtn bool `protobuf:"varint,40,opt,name=wakeUpBtn,proto3" json:"wakeUpBtn,omitempty"`
// 检修按钮
OverhaulBtn bool `protobuf:"varint,41,opt,name=overhaulBtn,proto3" json:"overhaulBtn,omitempty"`
// 欠压按钮
UndervoltageBtn bool `protobuf:"varint,42,opt,name=undervoltageBtn,proto3" json:"undervoltageBtn,omitempty"`
// 休眠按钮
SleepBtn bool `protobuf:"varint,43,opt,name=sleepBtn,proto3" json:"sleepBtn,omitempty"`
// 紧急手柄拉下
EmergentHandleDown bool `protobuf:"varint,44,opt,name=emergentHandleDown,proto3" json:"emergentHandleDown,omitempty"`
// 车门锁闭状态
DoorLockState bool `protobuf:"varint,45,opt,name=doorLockState,proto3" json:"doorLockState,omitempty"`
// 逃生门状态
LifeDoorState bool `protobuf:"varint,46,opt,name=lifeDoorState,proto3" json:"lifeDoorState,omitempty"`
// 车辆低压上电状态
TrainLowPowerResetState bool `protobuf:"varint,47,opt,name=trainLowPowerResetState,proto3" json:"trainLowPowerResetState,omitempty"`
// ATP上电按钮
AtpPowerOnBtn bool `protobuf:"varint,48,opt,name=atpPowerOnBtn,proto3" json:"atpPowerOnBtn,omitempty"`
// AA自动开关门
DoorModeAA bool `protobuf:"varint,49,opt,name=doorModeAA,proto3" json:"doorModeAA,omitempty"`
// AM自开人关
DoorModeAM bool `protobuf:"varint,50,opt,name=doorModeAM,proto3" json:"doorModeAM,omitempty"`
// MM人开人关
DoorModeMM bool `protobuf:"varint,51,opt,name=doorModeMM,proto3" json:"doorModeMM,omitempty"`
// 外部紧急制动反馈
//
// bool outerEmergentBrakeReport = 52;
//
// 车门外指示灯
TrainDoorOutLed bool `protobuf:"varint,53,opt,name=trainDoorOutLed,proto3" json:"trainDoorOutLed,omitempty"`
// 本端ATP控车
LocalAtpControl bool `protobuf:"varint,54,opt,name=localAtpControl,proto3" json:"localAtpControl,omitempty"`
// ATO制动命令输出
AtoBrakeCommand bool `protobuf:"varint,55,opt,name=atoBrakeCommand,proto3" json:"atoBrakeCommand,omitempty"`
// ATO牵引命令输出
AtoTractionCommandOut bool `protobuf:"varint,56,opt,name=atoTractionCommandOut,proto3" json:"atoTractionCommandOut,omitempty"`
// ATO惰行命令输出
AtoLazyCommandOut bool `protobuf:"varint,57,opt,name=atoLazyCommandOut,proto3" json:"atoLazyCommandOut,omitempty"`
// // AR灯命令
//
// bool arLightCommand = 58;
//
// ATO保持制动
AtoAlwaysBrake bool `protobuf:"varint,59,opt,name=atoAlwaysBrake,proto3" json:"atoAlwaysBrake,omitempty"`
// ATO开左门
AtoOpenLeftDoor bool `protobuf:"varint,60,opt,name=atoOpenLeftDoor,proto3" json:"atoOpenLeftDoor,omitempty"`
// ATO开右门
AtoOpenRightDoor bool `protobuf:"varint,61,opt,name=atoOpenRightDoor,proto3" json:"atoOpenRightDoor,omitempty"`
// ATO关左门
AtoCloseLeftDoor bool `protobuf:"varint,62,opt,name=atoCloseLeftDoor,proto3" json:"atoCloseLeftDoor,omitempty"`
// 零速信号
NoSpeedSigle bool `protobuf:"varint,63,opt,name=noSpeedSigle,proto3" json:"noSpeedSigle,omitempty"`
// 列车启动指示灯
TrainStartedLed bool `protobuf:"varint,64,opt,name=trainStartedLed,proto3" json:"trainStartedLed,omitempty"`
// 常用制动
MostUseBrake bool `protobuf:"varint,65,opt,name=mostUseBrake,proto3" json:"mostUseBrake,omitempty"`
// 过分相输出
SplittingOut bool `protobuf:"varint,66,opt,name=splittingOut,proto3" json:"splittingOut,omitempty"`
// 模式继电器
ModeRelay bool `protobuf:"varint,67,opt,name=modeRelay,proto3" json:"modeRelay,omitempty"`
// 牵引有效
TractionEffective bool `protobuf:"varint,68,opt,name=tractionEffective,proto3" json:"tractionEffective,omitempty"`
// 制动有效
BrakeEffective bool `protobuf:"varint,69,opt,name=brakeEffective,proto3" json:"brakeEffective,omitempty"`
// 制动隔离
BrakeQuarantine bool `protobuf:"varint,70,opt,name=brakeQuarantine,proto3" json:"brakeQuarantine,omitempty"`
// 停放制动缓解
StopNotAllBrake bool `protobuf:"varint,71,opt,name=stopNotAllBrake,proto3" json:"stopNotAllBrake,omitempty"`
// ATO牵引指令1
AtoTractionCommand1 bool `protobuf:"varint,72,opt,name=atoTractionCommand1,proto3" json:"atoTractionCommand1,omitempty"`
// ATO牵引指令2
AtoTractionCommand2 bool `protobuf:"varint,73,opt,name=atoTractionCommand2,proto3" json:"atoTractionCommand2,omitempty"`
// ATO牵引指令3
AtoTractionCommand3 bool `protobuf:"varint,74,opt,name=atoTractionCommand3,proto3" json:"atoTractionCommand3,omitempty"`
MockInfo uint32 `protobuf:"varint,75,opt,name=mockInfo,proto3" json:"mockInfo,omitempty"` //车载接口输出的模拟量信息
// atp 切除开关
AtpCutSwitch bool `protobuf:"varint,76,opt,name=atpCutSwitch,proto3" json:"atpCutSwitch,omitempty"`
// 紧急制动指示灯
LightEmergencyBrakingStatus bool `protobuf:"varint,77,opt,name=lightEmergencyBrakingStatus,proto3" json:"lightEmergencyBrakingStatus,omitempty"`
// 切牵引指示灯
LightTractionSafetyCircuit bool `protobuf:"varint,78,opt,name=lightTractionSafetyCircuit,proto3" json:"lightTractionSafetyCircuit,omitempty"`
// 车头方向指示灯1
LightDir1 bool `protobuf:"varint,79,opt,name=lightDir1,proto3" json:"lightDir1,omitempty"`
// 车头方向指示灯2
LightDir2 bool `protobuf:"varint,80,opt,name=lightDir2,proto3" json:"lightDir2,omitempty"`
// 驾驶室激活
LightDriverActive bool `protobuf:"varint,81,opt,name=lightDriverActive,proto3" json:"lightDriverActive,omitempty"`
// 列车连接半实物是否初始化
TrainConnInitComplate bool `protobuf:"varint,82,opt,name=trainConnInitComplate,proto3" json:"trainConnInitComplate,omitempty"`
// ato关右门
AtoCloseRightDoor bool `protobuf:"varint,83,opt,name=atoCloseRightDoor,proto3" json:"atoCloseRightDoor,omitempty"`
LightAtoSend bool `protobuf:"varint,84,opt,name=lightAtoSend,proto3" json:"lightAtoSend,omitempty"`
// Ato运行级位
AtoStepLevel TrainVobcState_AtoStepLevel `protobuf:"varint,85,opt,name=atoStepLevel,proto3,enum=state.TrainVobcState_AtoStepLevel" json:"atoStepLevel,omitempty"`
VobcBtmInfo *TrainVobcState_VobcBtmInfo `protobuf:"bytes,86,opt,name=vobcBtmInfo,proto3" json:"vobcBtmInfo,omitempty"`
}
func (x *TrainVobcState) Reset() {
*x = TrainVobcState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainVobcState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainVobcState) ProtoMessage() {}
func (x *TrainVobcState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 TrainVobcState.ProtoReflect.Descriptor instead.
func (*TrainVobcState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{13}
}
func (x *TrainVobcState) GetLifeSignal() int32 {
if x != nil {
return x.LifeSignal
}
return 0
}
func (x *TrainVobcState) GetTc1Active() bool {
if x != nil {
return x.Tc1Active
}
return false
}
func (x *TrainVobcState) GetTc2Active() bool {
if x != nil {
return x.Tc2Active
}
return false
}
func (x *TrainVobcState) GetDirectionForward() bool {
if x != nil {
return x.DirectionForward
}
return false
}
func (x *TrainVobcState) GetDirectionBackward() bool {
if x != nil {
return x.DirectionBackward
}
return false
}
func (x *TrainVobcState) GetTractionStatus() bool {
if x != nil {
return x.TractionStatus
}
return false
}
func (x *TrainVobcState) GetBrakingStatus() bool {
if x != nil {
return x.BrakingStatus
}
return false
}
func (x *TrainVobcState) GetEmergencyBrakingStatus() bool {
if x != nil {
return x.EmergencyBrakingStatus
}
return false
}
func (x *TrainVobcState) GetTurnbackStatus() bool {
if x != nil {
return x.TurnbackStatus
}
return false
}
func (x *TrainVobcState) GetJumpStatus() bool {
if x != nil {
return x.JumpStatus
}
return false
}
func (x *TrainVobcState) GetAto() bool {
if x != nil {
return x.Ato
}
return false
}
func (x *TrainVobcState) GetFam() bool {
if x != nil {
return x.Fam
}
return false
}
func (x *TrainVobcState) GetCam() bool {
if x != nil {
return x.Cam
}
return false
}
func (x *TrainVobcState) GetTractionSafetyCircuit() bool {
if x != nil {
return x.TractionSafetyCircuit
}
return false
}
func (x *TrainVobcState) GetParkingBrakeStatus() bool {
if x != nil {
return x.ParkingBrakeStatus
}
return false
}
func (x *TrainVobcState) GetMaintainBrakeStatus() bool {
if x != nil {
return x.MaintainBrakeStatus
}
return false
}
func (x *TrainVobcState) GetTractionForce() int64 {
if x != nil {
return x.TractionForce
}
return 0
}
func (x *TrainVobcState) GetBrakeForce() int64 {
if x != nil {
return x.BrakeForce
}
return 0
}
func (x *TrainVobcState) GetTrainLoad() int64 {
if x != nil {
return x.TrainLoad
}
return 0
}
func (x *TrainVobcState) GetLeftDoorOpenCommand() bool {
if x != nil {
return x.LeftDoorOpenCommand
}
return false
}
func (x *TrainVobcState) GetRightDoorOpenCommand() bool {
if x != nil {
return x.RightDoorOpenCommand
}
return false
}
func (x *TrainVobcState) GetLeftDoorCloseCommand() bool {
if x != nil {
return x.LeftDoorCloseCommand
}
return false
}
func (x *TrainVobcState) GetRightDoorCloseCommand() bool {
if x != nil {
return x.RightDoorCloseCommand
}
return false
}
func (x *TrainVobcState) GetAllDoorClose() bool {
if x != nil {
return x.AllDoorClose
}
return false
}
func (x *TrainVobcState) GetUdpInterruption() bool {
if x != nil {
return x.UdpInterruption
}
return false
}
func (x *TrainVobcState) GetUpdateTime() int64 {
if x != nil {
return x.UpdateTime
}
return 0
}
func (x *TrainVobcState) GetForceDoorAllow() bool {
if x != nil {
return x.ForceDoorAllow
}
return false
}
func (x *TrainVobcState) GetModeLevelDownBtn() bool {
if x != nil {
return x.ModeLevelDownBtn
}
return false
}
func (x *TrainVobcState) GetConfirmBtn() bool {
if x != nil {
return x.ConfirmBtn
}
return false
}
func (x *TrainVobcState) GetModeLevelUpBtn() bool {
if x != nil {
return x.ModeLevelUpBtn
}
return false
}
func (x *TrainVobcState) GetAtoSendTrainBtn() bool {
if x != nil {
return x.AtoSendTrainBtn
}
return false
}
func (x *TrainVobcState) GetAtpOrAtoBypassState() bool {
if x != nil {
return x.AtpOrAtoBypassState
}
return false
}
func (x *TrainVobcState) GetTrainTractionCuted() bool {
if x != nil {
return x.TrainTractionCuted
}
return false
}
func (x *TrainVobcState) GetObstacleCheckBtn() bool {
if x != nil {
return x.ObstacleCheckBtn
}
return false
}
func (x *TrainVobcState) GetBrakeHeavyFault() bool {
if x != nil {
return x.BrakeHeavyFault
}
return false
}
func (x *TrainVobcState) GetLeftDoorState() bool {
if x != nil {
return x.LeftDoorState
}
return false
}
func (x *TrainVobcState) GetRightDoorState() bool {
if x != nil {
return x.RightDoorState
}
return false
}
func (x *TrainVobcState) GetWakeUpBtn() bool {
if x != nil {
return x.WakeUpBtn
}
return false
}
func (x *TrainVobcState) GetOverhaulBtn() bool {
if x != nil {
return x.OverhaulBtn
}
return false
}
func (x *TrainVobcState) GetUndervoltageBtn() bool {
if x != nil {
return x.UndervoltageBtn
}
return false
}
func (x *TrainVobcState) GetSleepBtn() bool {
if x != nil {
return x.SleepBtn
}
return false
}
func (x *TrainVobcState) GetEmergentHandleDown() bool {
if x != nil {
return x.EmergentHandleDown
}
return false
}
func (x *TrainVobcState) GetDoorLockState() bool {
if x != nil {
return x.DoorLockState
}
return false
}
func (x *TrainVobcState) GetLifeDoorState() bool {
if x != nil {
return x.LifeDoorState
}
return false
}
func (x *TrainVobcState) GetTrainLowPowerResetState() bool {
if x != nil {
return x.TrainLowPowerResetState
}
return false
}
func (x *TrainVobcState) GetAtpPowerOnBtn() bool {
if x != nil {
return x.AtpPowerOnBtn
}
return false
}
func (x *TrainVobcState) GetDoorModeAA() bool {
if x != nil {
return x.DoorModeAA
}
return false
}
func (x *TrainVobcState) GetDoorModeAM() bool {
if x != nil {
return x.DoorModeAM
}
return false
}
func (x *TrainVobcState) GetDoorModeMM() bool {
if x != nil {
return x.DoorModeMM
}
return false
}
func (x *TrainVobcState) GetTrainDoorOutLed() bool {
if x != nil {
return x.TrainDoorOutLed
}
return false
}
func (x *TrainVobcState) GetLocalAtpControl() bool {
if x != nil {
return x.LocalAtpControl
}
return false
}
func (x *TrainVobcState) GetAtoBrakeCommand() bool {
if x != nil {
return x.AtoBrakeCommand
}
return false
}
func (x *TrainVobcState) GetAtoTractionCommandOut() bool {
if x != nil {
return x.AtoTractionCommandOut
}
return false
}
func (x *TrainVobcState) GetAtoLazyCommandOut() bool {
if x != nil {
return x.AtoLazyCommandOut
}
return false
}
func (x *TrainVobcState) GetAtoAlwaysBrake() bool {
if x != nil {
return x.AtoAlwaysBrake
}
return false
}
func (x *TrainVobcState) GetAtoOpenLeftDoor() bool {
if x != nil {
return x.AtoOpenLeftDoor
}
return false
}
func (x *TrainVobcState) GetAtoOpenRightDoor() bool {
if x != nil {
return x.AtoOpenRightDoor
}
return false
}
func (x *TrainVobcState) GetAtoCloseLeftDoor() bool {
if x != nil {
return x.AtoCloseLeftDoor
}
return false
}
func (x *TrainVobcState) GetNoSpeedSigle() bool {
if x != nil {
return x.NoSpeedSigle
}
return false
}
func (x *TrainVobcState) GetTrainStartedLed() bool {
if x != nil {
return x.TrainStartedLed
}
return false
}
func (x *TrainVobcState) GetMostUseBrake() bool {
if x != nil {
return x.MostUseBrake
}
return false
}
func (x *TrainVobcState) GetSplittingOut() bool {
if x != nil {
return x.SplittingOut
}
return false
}
func (x *TrainVobcState) GetModeRelay() bool {
if x != nil {
return x.ModeRelay
}
return false
}
func (x *TrainVobcState) GetTractionEffective() bool {
if x != nil {
return x.TractionEffective
}
return false
}
func (x *TrainVobcState) GetBrakeEffective() bool {
if x != nil {
return x.BrakeEffective
}
return false
}
func (x *TrainVobcState) GetBrakeQuarantine() bool {
if x != nil {
return x.BrakeQuarantine
}
return false
}
func (x *TrainVobcState) GetStopNotAllBrake() bool {
if x != nil {
return x.StopNotAllBrake
}
return false
}
func (x *TrainVobcState) GetAtoTractionCommand1() bool {
if x != nil {
return x.AtoTractionCommand1
}
return false
}
func (x *TrainVobcState) GetAtoTractionCommand2() bool {
if x != nil {
return x.AtoTractionCommand2
}
return false
}
func (x *TrainVobcState) GetAtoTractionCommand3() bool {
if x != nil {
return x.AtoTractionCommand3
}
return false
}
func (x *TrainVobcState) GetMockInfo() uint32 {
if x != nil {
return x.MockInfo
}
return 0
}
func (x *TrainVobcState) GetAtpCutSwitch() bool {
if x != nil {
return x.AtpCutSwitch
}
return false
}
func (x *TrainVobcState) GetLightEmergencyBrakingStatus() bool {
if x != nil {
return x.LightEmergencyBrakingStatus
}
return false
}
func (x *TrainVobcState) GetLightTractionSafetyCircuit() bool {
if x != nil {
return x.LightTractionSafetyCircuit
}
return false
}
func (x *TrainVobcState) GetLightDir1() bool {
if x != nil {
return x.LightDir1
}
return false
}
func (x *TrainVobcState) GetLightDir2() bool {
if x != nil {
return x.LightDir2
}
return false
}
func (x *TrainVobcState) GetLightDriverActive() bool {
if x != nil {
return x.LightDriverActive
}
return false
}
func (x *TrainVobcState) GetTrainConnInitComplate() bool {
if x != nil {
return x.TrainConnInitComplate
}
return false
}
func (x *TrainVobcState) GetAtoCloseRightDoor() bool {
if x != nil {
return x.AtoCloseRightDoor
}
return false
}
func (x *TrainVobcState) GetLightAtoSend() bool {
if x != nil {
return x.LightAtoSend
}
return false
}
func (x *TrainVobcState) GetAtoStepLevel() TrainVobcState_AtoStepLevel {
if x != nil {
return x.AtoStepLevel
}
return TrainVobcState_ATO_STEP_LEVEL_NONE
}
func (x *TrainVobcState) GetVobcBtmInfo() *TrainVobcState_VobcBtmInfo {
if x != nil {
return x.VobcBtmInfo
}
return nil
}
// 发给前端的列车状态
type TrainMapState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 列车索引
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// 列车初始link运行方向
Up bool `protobuf:"varint,2,opt,name=up,proto3" json:"up,omitempty"`
// 列车初始速度
InitialSpeed float32 `protobuf:"fixed32,3,opt,name=initialSpeed,proto3" json:"initialSpeed,omitempty"`
// 列车长度,1=1mm
TrainLength int64 `protobuf:"varint,4,opt,name=trainLength,proto3" json:"trainLength,omitempty"`
// 列车是否显示
Show bool `protobuf:"varint,5,opt,name=show,proto3" json:"show,omitempty"`
// 列车车头所在设备ID
HeadDeviceId uint32 `protobuf:"varint,6,opt,name=headDeviceId,proto3" json:"headDeviceId,omitempty"`
// 列车车头所在设备偏移量
HeadOffset int64 `protobuf:"varint,7,opt,name=headOffset,proto3" json:"headOffset,omitempty"`
// 设备端口
DevicePort string `protobuf:"bytes,8,opt,name=devicePort,proto3" json:"devicePort,omitempty"`
// 运行方向指向(区段A-B,道岔:-> 岔心)
//
// bool pointTo = 9;
DriftTo bool `protobuf:"varint,9,opt,name=driftTo,proto3" json:"driftTo,omitempty"`
// 运行上下行(公里标 上行:小 -> 大,下行:大 -> 小)
//
// bool runDirection = 10;
TrainRunUp bool `protobuf:"varint,10,opt,name=trainRunUp,proto3" json:"trainRunUp,omitempty"`
// 列车车头方向
//
// bool headDirection = 11;
//
// 列车车头方向 0= 均为激活1=向小2=向大
TrainActiveDirection uint32 `protobuf:"varint,11,opt,name=trainActiveDirection,proto3" json:"trainActiveDirection,omitempty"`
// 所在公里标
TrainKilometer int64 `protobuf:"varint,12,opt,name=trainKilometer,proto3" json:"trainKilometer,omitempty"`
// 控制响应延时
ControlDelayTime int64 `protobuf:"varint,13,opt,name=controlDelayTime,proto3" json:"controlDelayTime,omitempty"`
// 列车轮径
WheelDiameter int32 `protobuf:"varint,14,opt,name=wheelDiameter,proto3" json:"wheelDiameter,omitempty"`
// 动力学信息
// 生命信号 每个周期+1
DynamicHeartbeat int32 `protobuf:"varint,15,opt,name=dynamicHeartbeat,proto3" json:"dynamicHeartbeat,omitempty"`
// 车头所在link的索引
HeadLinkId string `protobuf:"bytes,16,opt,name=headLinkId,proto3" json:"headLinkId,omitempty"`
// 车头所在link内的偏移量单位为mm
HeadLinkOffset int64 `protobuf:"varint,17,opt,name=headLinkOffset,proto3" json:"headLinkOffset,omitempty"`
// 车尾所在link的索引
TailLinkId string `protobuf:"bytes,18,opt,name=tailLinkId,proto3" json:"tailLinkId,omitempty"`
// 车尾所在link内的偏移量单位为mm
TailLinkOffset int64 `protobuf:"varint,19,opt,name=tailLinkOffset,proto3" json:"tailLinkOffset,omitempty"`
// 列车所占用的link的索引的列表
// 顺序为从车头到车尾
OccupiedLinkIndex []string `protobuf:"bytes,20,rep,name=occupiedLinkIndex,proto3" json:"occupiedLinkIndex,omitempty"`
// 列车所在位置坡度值,1=1‰
Slope int32 `protobuf:"varint,21,opt,name=slope,proto3" json:"slope,omitempty"`
// 列车所在位置坡度走势,1=上坡true0=下坡false
Upslope bool `protobuf:"varint,22,opt,name=upslope,proto3" json:"upslope,omitempty"`
// 列车当前运行方向,1 =上行true 0 =下行false
RunningUp bool `protobuf:"varint,23,opt,name=runningUp,proto3" json:"runningUp,omitempty"`
// 实际运行阻力NtotalResistance,1=1KN
RunningResistanceSum float32 `protobuf:"fixed32,24,opt,name=runningResistanceSum,proto3" json:"runningResistanceSum,omitempty"`
// 阻力1空气阻力NairResistance,1=1KN
AirResistance float32 `protobuf:"fixed32,25,opt,name=airResistance,proto3" json:"airResistance,omitempty"`
// 阻力2坡道阻力NslopeResistance,1=1KN
RampResistance float32 `protobuf:"fixed32,26,opt,name=rampResistance,proto3" json:"rampResistance,omitempty"`
// 阻力3曲线阻力NcurveResistance,1=1KN
CurveResistance float32 `protobuf:"fixed32,27,opt,name=curveResistance,proto3" json:"curveResistance,omitempty"`
// 列车运行速度m/sspeed,1=1km/h
Speed int32 `protobuf:"varint,28,opt,name=speed,proto3" json:"speed,omitempty"`
// 头车速传1速度值m/sheadSpeed1,1=1km/h
HeadSensorSpeed1 int32 `protobuf:"varint,29,opt,name=headSensorSpeed1,proto3" json:"headSensorSpeed1,omitempty"`
// 头车速度2速度值m/sheadSpeed2,1=1km/h
HeadSensorSpeed2 int32 `protobuf:"varint,30,opt,name=headSensorSpeed2,proto3" json:"headSensorSpeed2,omitempty"`
// 尾车速传1速度值m/stailSpeed1,1=1km/h
TailSensorSpeed1 int32 `protobuf:"varint,31,opt,name=tailSensorSpeed1,proto3" json:"tailSensorSpeed1,omitempty"`
// 尾车速度2速度值m/stailSpeed2,1=1km/h
TailSensorSpeed2 int32 `protobuf:"varint,32,opt,name=tailSensorSpeed2,proto3" json:"tailSensorSpeed2,omitempty"`
// 头车雷达速度值m/sheadRadarSpeed,1=1km/h
HeadRadarSpeed int32 `protobuf:"varint,33,opt,name=headRadarSpeed,proto3" json:"headRadarSpeed,omitempty"`
// 尾车雷达速度值m/stailRadarSpeed,1=1km/h
TailRadarSpeed int32 `protobuf:"varint,34,opt,name=tailRadarSpeed,proto3" json:"tailRadarSpeed,omitempty"`
// 通讯中断
DynamicInterruption bool `protobuf:"varint,35,opt,name=dynamicInterruption,proto3" json:"dynamicInterruption,omitempty"`
// 加速
Acceleration float32 `protobuf:"fixed32,36,opt,name=acceleration,proto3" json:"acceleration,omitempty"`
// 半实物信息
// 生命信号 每个周期+1
VobcLifeSignal int32 `protobuf:"varint,37,opt,name=vobcLifeSignal,proto3" json:"vobcLifeSignal,omitempty"`
// TC1激活状态 1=激活
Tc1Active bool `protobuf:"varint,38,opt,name=tc1Active,proto3" json:"tc1Active,omitempty"`
// TC2激活状态 1=激活
Tc2Active bool `protobuf:"varint,39,opt,name=tc2Active,proto3" json:"tc2Active,omitempty"`
// 列车方向向前 1=方向向前
DirectionForward bool `protobuf:"varint,40,opt,name=directionForward,proto3" json:"directionForward,omitempty"`
// 列车方向向后 1=方向向后
DirectionBackward bool `protobuf:"varint,41,opt,name=directionBackward,proto3" json:"directionBackward,omitempty"`
// 列车牵引状态 1=牵引
TractionStatus bool `protobuf:"varint,42,opt,name=tractionStatus,proto3" json:"tractionStatus,omitempty"`
// 列车制动状态 1=制动
BrakingStatus bool `protobuf:"varint,43,opt,name=brakingStatus,proto3" json:"brakingStatus,omitempty"`
// 列车紧急制动状态 1=紧急制动
EmergencyBrakingStatus bool `protobuf:"varint,44,opt,name=emergencyBrakingStatus,proto3" json:"emergencyBrakingStatus,omitempty"`
// 列车折返状态AR 1=折返
TurnbackStatus bool `protobuf:"varint,45,opt,name=turnbackStatus,proto3" json:"turnbackStatus,omitempty"`
// 跳跃状态 1=跳跃
JumpStatus bool `protobuf:"varint,46,opt,name=jumpStatus,proto3" json:"jumpStatus,omitempty"`
// ATO模式 1=ATO模式
Ato bool `protobuf:"varint,47,opt,name=ato,proto3" json:"ato,omitempty"`
// FAM模式 1=FAM模式
Fam bool `protobuf:"varint,48,opt,name=fam,proto3" json:"fam,omitempty"`
// CAM模式 1=CAM模式
Cam bool `protobuf:"varint,49,opt,name=cam,proto3" json:"cam,omitempty"`
// 牵引安全回路 1=牵引安全切除
TractionSafetyCircuit bool `protobuf:"varint,50,opt,name=tractionSafetyCircuit,proto3" json:"tractionSafetyCircuit,omitempty"`
// 停放制动状态 1=停放施加
ParkingBrakeStatus bool `protobuf:"varint,51,opt,name=parkingBrakeStatus,proto3" json:"parkingBrakeStatus,omitempty"`
// 保持制动状态 1=保持制动施加
MaintainBrakeStatus bool `protobuf:"varint,52,opt,name=maintainBrakeStatus,proto3" json:"maintainBrakeStatus,omitempty"`
// 列车牵引力 100=1KN
TractionForce int64 `protobuf:"varint,53,opt,name=tractionForce,proto3" json:"tractionForce,omitempty"`
// 列车制动力 100=1KN
BrakeForce int64 `protobuf:"varint,54,opt,name=brakeForce,proto3" json:"brakeForce,omitempty"`
// 【列车载荷 100=1ton
TrainLoad int64 `protobuf:"varint,55,opt,name=trainLoad,proto3" json:"trainLoad,omitempty"`
// 列车开左门指令 1=开门
LeftDoorOpenCommand bool `protobuf:"varint,56,opt,name=leftDoorOpenCommand,proto3" json:"leftDoorOpenCommand,omitempty"`
// 列车开右门指令 1=开门
RightDoorOpenCommand bool `protobuf:"varint,57,opt,name=rightDoorOpenCommand,proto3" json:"rightDoorOpenCommand,omitempty"`
// 列车关左门指令 1=关门
LeftDoorCloseCommand bool `protobuf:"varint,58,opt,name=leftDoorCloseCommand,proto3" json:"leftDoorCloseCommand,omitempty"`
// 列车关右门指令 1=关门
RightDoorCloseCommand bool `protobuf:"varint,59,opt,name=rightDoorCloseCommand,proto3" json:"rightDoorCloseCommand,omitempty"`
// 整列车门关好 1=门关好
AllDoorClose bool `protobuf:"varint,60,opt,name=allDoorClose,proto3" json:"allDoorClose,omitempty"`
// 通讯中断
VobcInterruption bool `protobuf:"varint,61,opt,name=vobcInterruption,proto3" json:"vobcInterruption,omitempty"`
// 列车动力学配置
TrainDynamicConfig *TrainDynamicConfigMqtt `protobuf:"bytes,62,opt,name=trainDynamicConfig,proto3" json:"trainDynamicConfig,omitempty"`
// 列车A端
TrainEndsA *TrainEndsStateMqtt `protobuf:"bytes,63,opt,name=trainEndsA,proto3" json:"trainEndsA,omitempty"`
// 列车B端
TrainEndsB *TrainEndsStateMqtt `protobuf:"bytes,64,opt,name=trainEndsB,proto3" json:"trainEndsB,omitempty"`
// 列车位移
//
// int32 Displacement = 65;
Displacement float32 `protobuf:"fixed32,65,opt,name=Displacement,proto3" json:"Displacement,omitempty"`
// 列车车尾所在设备ID
TailDeviceId uint32 `protobuf:"varint,66,opt,name=tailDeviceId,proto3" json:"tailDeviceId,omitempty"`
// 列车车尾所在设备偏移量
TailOffset int64 `protobuf:"varint,67,opt,name=tailOffset,proto3" json:"tailOffset,omitempty"`
// 列车车尾所在设备端口
TailDevicePort string `protobuf:"bytes,68,opt,name=tailDevicePort,proto3" json:"tailDevicePort,omitempty"`
// BTM状态
//
// BTMState btmState = 69;
ConnState *TrainConnState `protobuf:"bytes,69,opt,name=connState,proto3" json:"connState,omitempty"` //列车连接第三方状态
}
func (x *TrainMapState) Reset() {
*x = TrainMapState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainMapState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainMapState) ProtoMessage() {}
func (x *TrainMapState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 TrainMapState.ProtoReflect.Descriptor instead.
func (*TrainMapState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{14}
}
func (x *TrainMapState) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *TrainMapState) GetUp() bool {
if x != nil {
return x.Up
}
return false
}
func (x *TrainMapState) GetInitialSpeed() float32 {
if x != nil {
return x.InitialSpeed
}
return 0
}
func (x *TrainMapState) GetTrainLength() int64 {
if x != nil {
return x.TrainLength
}
return 0
}
func (x *TrainMapState) GetShow() bool {
if x != nil {
return x.Show
}
return false
}
func (x *TrainMapState) GetHeadDeviceId() uint32 {
if x != nil {
return x.HeadDeviceId
}
return 0
}
func (x *TrainMapState) GetHeadOffset() int64 {
if x != nil {
return x.HeadOffset
}
return 0
}
func (x *TrainMapState) GetDevicePort() string {
if x != nil {
return x.DevicePort
}
return ""
}
func (x *TrainMapState) GetDriftTo() bool {
if x != nil {
return x.DriftTo
}
return false
}
func (x *TrainMapState) GetTrainRunUp() bool {
if x != nil {
return x.TrainRunUp
}
return false
}
func (x *TrainMapState) GetTrainActiveDirection() uint32 {
if x != nil {
return x.TrainActiveDirection
}
return 0
}
func (x *TrainMapState) GetTrainKilometer() int64 {
if x != nil {
return x.TrainKilometer
}
return 0
}
func (x *TrainMapState) GetControlDelayTime() int64 {
if x != nil {
return x.ControlDelayTime
}
return 0
}
func (x *TrainMapState) GetWheelDiameter() int32 {
if x != nil {
return x.WheelDiameter
}
return 0
}
func (x *TrainMapState) GetDynamicHeartbeat() int32 {
if x != nil {
return x.DynamicHeartbeat
}
return 0
}
func (x *TrainMapState) GetHeadLinkId() string {
if x != nil {
return x.HeadLinkId
}
return ""
}
func (x *TrainMapState) GetHeadLinkOffset() int64 {
if x != nil {
return x.HeadLinkOffset
}
return 0
}
func (x *TrainMapState) GetTailLinkId() string {
if x != nil {
return x.TailLinkId
}
return ""
}
func (x *TrainMapState) GetTailLinkOffset() int64 {
if x != nil {
return x.TailLinkOffset
}
return 0
}
func (x *TrainMapState) GetOccupiedLinkIndex() []string {
if x != nil {
return x.OccupiedLinkIndex
}
return nil
}
func (x *TrainMapState) GetSlope() int32 {
if x != nil {
return x.Slope
}
return 0
}
func (x *TrainMapState) GetUpslope() bool {
if x != nil {
return x.Upslope
}
return false
}
func (x *TrainMapState) GetRunningUp() bool {
if x != nil {
return x.RunningUp
}
return false
}
func (x *TrainMapState) GetRunningResistanceSum() float32 {
if x != nil {
return x.RunningResistanceSum
}
return 0
}
func (x *TrainMapState) GetAirResistance() float32 {
if x != nil {
return x.AirResistance
}
return 0
}
func (x *TrainMapState) GetRampResistance() float32 {
if x != nil {
return x.RampResistance
}
return 0
}
func (x *TrainMapState) GetCurveResistance() float32 {
if x != nil {
return x.CurveResistance
}
return 0
}
func (x *TrainMapState) GetSpeed() int32 {
if x != nil {
return x.Speed
}
return 0
}
func (x *TrainMapState) GetHeadSensorSpeed1() int32 {
if x != nil {
return x.HeadSensorSpeed1
}
return 0
}
func (x *TrainMapState) GetHeadSensorSpeed2() int32 {
if x != nil {
return x.HeadSensorSpeed2
}
return 0
}
func (x *TrainMapState) GetTailSensorSpeed1() int32 {
if x != nil {
return x.TailSensorSpeed1
}
return 0
}
func (x *TrainMapState) GetTailSensorSpeed2() int32 {
if x != nil {
return x.TailSensorSpeed2
}
return 0
}
func (x *TrainMapState) GetHeadRadarSpeed() int32 {
if x != nil {
return x.HeadRadarSpeed
}
return 0
}
func (x *TrainMapState) GetTailRadarSpeed() int32 {
if x != nil {
return x.TailRadarSpeed
}
return 0
}
func (x *TrainMapState) GetDynamicInterruption() bool {
if x != nil {
return x.DynamicInterruption
}
return false
}
func (x *TrainMapState) GetAcceleration() float32 {
if x != nil {
return x.Acceleration
}
return 0
}
func (x *TrainMapState) GetVobcLifeSignal() int32 {
if x != nil {
return x.VobcLifeSignal
}
return 0
}
func (x *TrainMapState) GetTc1Active() bool {
if x != nil {
return x.Tc1Active
}
return false
}
func (x *TrainMapState) GetTc2Active() bool {
if x != nil {
return x.Tc2Active
}
return false
}
func (x *TrainMapState) GetDirectionForward() bool {
if x != nil {
return x.DirectionForward
}
return false
}
func (x *TrainMapState) GetDirectionBackward() bool {
if x != nil {
return x.DirectionBackward
}
return false
}
func (x *TrainMapState) GetTractionStatus() bool {
if x != nil {
return x.TractionStatus
}
return false
}
func (x *TrainMapState) GetBrakingStatus() bool {
if x != nil {
return x.BrakingStatus
}
return false
}
func (x *TrainMapState) GetEmergencyBrakingStatus() bool {
if x != nil {
return x.EmergencyBrakingStatus
}
return false
}
func (x *TrainMapState) GetTurnbackStatus() bool {
if x != nil {
return x.TurnbackStatus
}
return false
}
func (x *TrainMapState) GetJumpStatus() bool {
if x != nil {
return x.JumpStatus
}
return false
}
func (x *TrainMapState) GetAto() bool {
if x != nil {
return x.Ato
}
return false
}
func (x *TrainMapState) GetFam() bool {
if x != nil {
return x.Fam
}
return false
}
func (x *TrainMapState) GetCam() bool {
if x != nil {
return x.Cam
}
return false
}
func (x *TrainMapState) GetTractionSafetyCircuit() bool {
if x != nil {
return x.TractionSafetyCircuit
}
return false
}
func (x *TrainMapState) GetParkingBrakeStatus() bool {
if x != nil {
return x.ParkingBrakeStatus
}
return false
}
func (x *TrainMapState) GetMaintainBrakeStatus() bool {
if x != nil {
return x.MaintainBrakeStatus
}
return false
}
func (x *TrainMapState) GetTractionForce() int64 {
if x != nil {
return x.TractionForce
}
return 0
}
func (x *TrainMapState) GetBrakeForce() int64 {
if x != nil {
return x.BrakeForce
}
return 0
}
func (x *TrainMapState) GetTrainLoad() int64 {
if x != nil {
return x.TrainLoad
}
return 0
}
func (x *TrainMapState) GetLeftDoorOpenCommand() bool {
if x != nil {
return x.LeftDoorOpenCommand
}
return false
}
func (x *TrainMapState) GetRightDoorOpenCommand() bool {
if x != nil {
return x.RightDoorOpenCommand
}
return false
}
func (x *TrainMapState) GetLeftDoorCloseCommand() bool {
if x != nil {
return x.LeftDoorCloseCommand
}
return false
}
func (x *TrainMapState) GetRightDoorCloseCommand() bool {
if x != nil {
return x.RightDoorCloseCommand
}
return false
}
func (x *TrainMapState) GetAllDoorClose() bool {
if x != nil {
return x.AllDoorClose
}
return false
}
func (x *TrainMapState) GetVobcInterruption() bool {
if x != nil {
return x.VobcInterruption
}
return false
}
func (x *TrainMapState) GetTrainDynamicConfig() *TrainDynamicConfigMqtt {
if x != nil {
return x.TrainDynamicConfig
}
return nil
}
func (x *TrainMapState) GetTrainEndsA() *TrainEndsStateMqtt {
if x != nil {
return x.TrainEndsA
}
return nil
}
func (x *TrainMapState) GetTrainEndsB() *TrainEndsStateMqtt {
if x != nil {
return x.TrainEndsB
}
return nil
}
func (x *TrainMapState) GetDisplacement() float32 {
if x != nil {
return x.Displacement
}
return 0
}
func (x *TrainMapState) GetTailDeviceId() uint32 {
if x != nil {
return x.TailDeviceId
}
return 0
}
func (x *TrainMapState) GetTailOffset() int64 {
if x != nil {
return x.TailOffset
}
return 0
}
func (x *TrainMapState) GetTailDevicePort() string {
if x != nil {
return x.TailDevicePort
}
return ""
}
func (x *TrainMapState) GetConnState() *TrainConnState {
if x != nil {
return x.ConnState
}
return nil
}
type BTMState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Telegram string `protobuf:"bytes,1,opt,name=telegram,proto3" json:"telegram,omitempty"` //应答器用户报文16进制字符串
AboveBalise bool `protobuf:"varint,2,opt,name=aboveBalise,proto3" json:"aboveBalise,omitempty"` //BTM天线即将经过应答器
BaliseTelegramForPcSimResend string `protobuf:"bytes,3,opt,name=baliseTelegramForPcSimResend,proto3" json:"baliseTelegramForPcSimResend,omitempty"` //列车pc仿真暂存应答器回复数据
Telegram128 string `protobuf:"bytes,4,opt,name=telegram128,proto3" json:"telegram128,omitempty"` //应答器报文12816进制字符串
BaliseId string `protobuf:"bytes,5,opt,name=baliseId,proto3" json:"baliseId,omitempty"`
IsSend bool `protobuf:"varint,6,opt,name=isSend,proto3" json:"isSend,omitempty"` //记录是否发送过
Unpack bool `protobuf:"varint,7,opt,name=unpack,proto3" json:"unpack,omitempty"` //解包是否成功
BaliseType int32 `protobuf:"varint,8,opt,name=baliseType,proto3" json:"baliseType,omitempty"` //应答器类型 与model的类型一致
HasData bool `protobuf:"varint,9,opt,name=hasData,proto3" json:"hasData,omitempty"` //是否有应答器报文
ResendCount uint32 `protobuf:"varint,10,opt,name=resendCount,proto3" json:"resendCount,omitempty"` //重发次数
PackageDataSN uint32 `protobuf:"varint,11,opt,name=packageDataSN,proto3" json:"packageDataSN,omitempty"` //11号线需要验证报文序列号
}
func (x *BTMState) Reset() {
*x = BTMState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BTMState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BTMState) ProtoMessage() {}
func (x *BTMState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[15]
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 BTMState.ProtoReflect.Descriptor instead.
func (*BTMState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{15}
}
func (x *BTMState) GetTelegram() string {
if x != nil {
return x.Telegram
}
return ""
}
func (x *BTMState) GetAboveBalise() bool {
if x != nil {
return x.AboveBalise
}
return false
}
func (x *BTMState) GetBaliseTelegramForPcSimResend() string {
if x != nil {
return x.BaliseTelegramForPcSimResend
}
return ""
}
func (x *BTMState) GetTelegram128() string {
if x != nil {
return x.Telegram128
}
return ""
}
func (x *BTMState) GetBaliseId() string {
if x != nil {
return x.BaliseId
}
return ""
}
func (x *BTMState) GetIsSend() bool {
if x != nil {
return x.IsSend
}
return false
}
func (x *BTMState) GetUnpack() bool {
if x != nil {
return x.Unpack
}
return false
}
func (x *BTMState) GetBaliseType() int32 {
if x != nil {
return x.BaliseType
}
return 0
}
func (x *BTMState) GetHasData() bool {
if x != nil {
return x.HasData
}
return false
}
func (x *BTMState) GetResendCount() uint32 {
if x != nil {
return x.ResendCount
}
return 0
}
func (x *BTMState) GetPackageDataSN() uint32 {
if x != nil {
return x.PackageDataSN
}
return 0
}
// 动力学相关参数返回数据因golang float类型数据序列化后丢失精度故使用string
// 此类型需要与 common_data 中的 TrainDynamicConfig类型属性保持一致
type TrainDynamicConfigMqtt struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 基本阻力参数A 原本数据float
DavisParamA string `protobuf:"bytes,1,opt,name=davisParamA,proto3" json:"davisParamA,omitempty"`
// 基本阻力参数B 原本数据float
DavisParamB string `protobuf:"bytes,2,opt,name=davisParamB,proto3" json:"davisParamB,omitempty"`
// 基本阻力参数C 原本数据float
DavisParamC string `protobuf:"bytes,3,opt,name=davisParamC,proto3" json:"davisParamC,omitempty"`
// 曲线阻力参数R1 原本数据float
CurveResistanceParamR1 string `protobuf:"bytes,4,opt,name=curveResistanceParamR1,proto3" json:"curveResistanceParamR1,omitempty"`
// 曲线阻力参数R2 原本数据float
CurveResistanceParamR2 string `protobuf:"bytes,5,opt,name=curveResistanceParamR2,proto3" json:"curveResistanceParamR2,omitempty"`
// 曲线阻力参数R3 原本数据float
CurveResistanceParamR3 string `protobuf:"bytes,6,opt,name=curveResistanceParamR3,proto3" json:"curveResistanceParamR3,omitempty"`
// 曲线阻力参数R4 原本数据float
CurveResistanceParamR4 string `protobuf:"bytes,7,opt,name=curveResistanceParamR4,proto3" json:"curveResistanceParamR4,omitempty"`
// 旋转质量参数 原本数据float
RevolvingMassParam string `protobuf:"bytes,8,opt,name=revolvingMassParam,proto3" json:"revolvingMassParam,omitempty"`
// 是否跳跃
Jump bool `protobuf:"varint,9,opt,name=jump,proto3" json:"jump,omitempty"`
// 打滑加速度(m/s) 默认0 原本属性 float
SlipA string `protobuf:"bytes,10,opt,name=slipA,proto3" json:"slipA,omitempty"`
// 打滑冲击率(m/s) 默认0
SlipR string `protobuf:"bytes,11,opt,name=slipR,proto3" json:"slipR,omitempty"`
// 打滑持续时间ms 默认0
SlipD int32 `protobuf:"varint,12,opt,name=slipD,proto3" json:"slipD,omitempty"`
// 空转加速度m/s2默认值0 原本属性 float
IdlingA string `protobuf:"bytes,14,opt,name=idlingA,proto3" json:"idlingA,omitempty"`
// 空转冲击率m/s3默认值0
IdlingR string `protobuf:"bytes,15,opt,name=idlingR,proto3" json:"idlingR,omitempty"`
// 空转持续时间ms默认值0
IdlingD int32 `protobuf:"varint,16,opt,name=idlingD,proto3" json:"idlingD,omitempty"`
// 过标/欠标mm正数过标负数欠标
StopSign int32 `protobuf:"varint,17,opt,name=stopSign,proto3" json:"stopSign,omitempty"`
// 前溜/后溜m/s正数前溜负数后溜默认值0 原本属性 float
Slide string `protobuf:"bytes,18,opt,name=slide,proto3" json:"slide,omitempty"`
}
func (x *TrainDynamicConfigMqtt) Reset() {
*x = TrainDynamicConfigMqtt{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainDynamicConfigMqtt) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainDynamicConfigMqtt) ProtoMessage() {}
func (x *TrainDynamicConfigMqtt) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[16]
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 TrainDynamicConfigMqtt.ProtoReflect.Descriptor instead.
func (*TrainDynamicConfigMqtt) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{16}
}
func (x *TrainDynamicConfigMqtt) GetDavisParamA() string {
if x != nil {
return x.DavisParamA
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetDavisParamB() string {
if x != nil {
return x.DavisParamB
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetDavisParamC() string {
if x != nil {
return x.DavisParamC
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetCurveResistanceParamR1() string {
if x != nil {
return x.CurveResistanceParamR1
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetCurveResistanceParamR2() string {
if x != nil {
return x.CurveResistanceParamR2
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetCurveResistanceParamR3() string {
if x != nil {
return x.CurveResistanceParamR3
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetCurveResistanceParamR4() string {
if x != nil {
return x.CurveResistanceParamR4
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetRevolvingMassParam() string {
if x != nil {
return x.RevolvingMassParam
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetJump() bool {
if x != nil {
return x.Jump
}
return false
}
func (x *TrainDynamicConfigMqtt) GetSlipA() string {
if x != nil {
return x.SlipA
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetSlipR() string {
if x != nil {
return x.SlipR
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetSlipD() int32 {
if x != nil {
return x.SlipD
}
return 0
}
func (x *TrainDynamicConfigMqtt) GetIdlingA() string {
if x != nil {
return x.IdlingA
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetIdlingR() string {
if x != nil {
return x.IdlingR
}
return ""
}
func (x *TrainDynamicConfigMqtt) GetIdlingD() int32 {
if x != nil {
return x.IdlingD
}
return 0
}
func (x *TrainDynamicConfigMqtt) GetStopSign() int32 {
if x != nil {
return x.StopSign
}
return 0
}
func (x *TrainDynamicConfigMqtt) GetSlide() string {
if x != nil {
return x.Slide
}
return ""
}
// 列车一端的状态
type TrainEndsStateMqtt struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 速度传感器
SpeedSensorEnableA bool `protobuf:"varint,1,opt,name=speedSensorEnableA,proto3" json:"speedSensorEnableA,omitempty"`
SpeedSensorEnableB bool `protobuf:"varint,2,opt,name=speedSensorEnableB,proto3" json:"speedSensorEnableB,omitempty"`
// 雷达是否有效
RadarEnable bool `protobuf:"varint,3,opt,name=radarEnable,proto3" json:"radarEnable,omitempty"`
// 雷达测速差值(千米/小时) 原本数据float
RadarCheckSpeedDiff string `protobuf:"bytes,4,opt,name=radarCheckSpeedDiff,proto3" json:"radarCheckSpeedDiff,omitempty"`
// 雷达检测时间(秒)
RadarCheckTime int32 `protobuf:"varint,5,opt,name=radarCheckTime,proto3" json:"radarCheckTime,omitempty"`
AccEnable bool `protobuf:"varint,6,opt,name=accEnable,proto3" json:"accEnable,omitempty"`
// 加速度测速差值(米/秒)
AccCheckSpeedDiff string `protobuf:"bytes,7,opt,name=accCheckSpeedDiff,proto3" json:"accCheckSpeedDiff,omitempty"`
// 加速度持续时间
AccCheckTime int32 `protobuf:"varint,8,opt,name=accCheckTime,proto3" json:"accCheckTime,omitempty"`
// 速传速度输出(千米/小时)
AccOutSpeed int32 `protobuf:"varint,9,opt,name=accOutSpeed,proto3" json:"accOutSpeed,omitempty"`
// 雷达速度输出(千米/小时)
RadarOutSpeed int32 `protobuf:"varint,10,opt,name=radarOutSpeed,proto3" json:"radarOutSpeed,omitempty"`
}
func (x *TrainEndsStateMqtt) Reset() {
*x = TrainEndsStateMqtt{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainEndsStateMqtt) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainEndsStateMqtt) ProtoMessage() {}
func (x *TrainEndsStateMqtt) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[17]
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 TrainEndsStateMqtt.ProtoReflect.Descriptor instead.
func (*TrainEndsStateMqtt) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{17}
}
func (x *TrainEndsStateMqtt) GetSpeedSensorEnableA() bool {
if x != nil {
return x.SpeedSensorEnableA
}
return false
}
func (x *TrainEndsStateMqtt) GetSpeedSensorEnableB() bool {
if x != nil {
return x.SpeedSensorEnableB
}
return false
}
func (x *TrainEndsStateMqtt) GetRadarEnable() bool {
if x != nil {
return x.RadarEnable
}
return false
}
func (x *TrainEndsStateMqtt) GetRadarCheckSpeedDiff() string {
if x != nil {
return x.RadarCheckSpeedDiff
}
return ""
}
func (x *TrainEndsStateMqtt) GetRadarCheckTime() int32 {
if x != nil {
return x.RadarCheckTime
}
return 0
}
func (x *TrainEndsStateMqtt) GetAccEnable() bool {
if x != nil {
return x.AccEnable
}
return false
}
func (x *TrainEndsStateMqtt) GetAccCheckSpeedDiff() string {
if x != nil {
return x.AccCheckSpeedDiff
}
return ""
}
func (x *TrainEndsStateMqtt) GetAccCheckTime() int32 {
if x != nil {
return x.AccCheckTime
}
return 0
}
func (x *TrainEndsStateMqtt) GetAccOutSpeed() int32 {
if x != nil {
return x.AccOutSpeed
}
return 0
}
func (x *TrainEndsStateMqtt) GetRadarOutSpeed() int32 {
if x != nil {
return x.RadarOutSpeed
}
return 0
}
// 继电器状态
type ReplyState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 继电器索引
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// 继电器吸合状态
Xh bool `protobuf:"varint,2,opt,name=xh,proto3" json:"xh,omitempty"`
// 继电器编号
Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"`
// 是否强制
Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
}
func (x *ReplyState) Reset() {
*x = ReplyState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReplyState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReplyState) ProtoMessage() {}
func (x *ReplyState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[18]
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 ReplyState.ProtoReflect.Descriptor instead.
func (*ReplyState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{18}
}
func (x *ReplyState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *ReplyState) GetXh() bool {
if x != nil {
return x.Xh
}
return false
}
func (x *ReplyState) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
func (x *ReplyState) GetForce() bool {
if x != nil {
return x.Force
}
return false
}
// 按钮状态
type ButtonState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Down bool `protobuf:"varint,2,opt,name=down,proto3" json:"down,omitempty"`
Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` // 带灯的按钮
}
func (x *ButtonState) Reset() {
*x = ButtonState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ButtonState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ButtonState) ProtoMessage() {}
func (x *ButtonState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ButtonState.ProtoReflect.Descriptor instead.
func (*ButtonState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{19}
}
func (x *ButtonState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *ButtonState) GetDown() bool {
if x != nil {
return x.Down
}
return false
}
func (x *ButtonState) GetActive() bool {
if x != nil {
return x.Active
}
return false
}
// 警铃状态
type AlarmState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Active bool `protobuf:"varint,2,opt,name=active,proto3" json:"active,omitempty"`
}
func (x *AlarmState) Reset() {
*x = AlarmState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AlarmState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AlarmState) ProtoMessage() {}
func (x *AlarmState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AlarmState.ProtoReflect.Descriptor instead.
func (*AlarmState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{20}
}
func (x *AlarmState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *AlarmState) GetActive() bool {
if x != nil {
return x.Active
}
return false
}
// 灯状态
type LightState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Active bool `protobuf:"varint,2,opt,name=active,proto3" json:"active,omitempty"`
}
func (x *LightState) Reset() {
*x = LightState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LightState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LightState) ProtoMessage() {}
func (x *LightState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use LightState.ProtoReflect.Descriptor instead.
func (*LightState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{21}
}
func (x *LightState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *LightState) GetActive() bool {
if x != nil {
return x.Active
}
return false
}
// 屏蔽门状态
type PsdState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //屏蔽门的id
AsdStates []*AsdState `protobuf:"bytes,2,rep,name=asdStates,proto3" json:"asdStates,omitempty"` //滑动门状态
Mgj bool `protobuf:"varint,3,opt,name=mgj,proto3" json:"mgj,omitempty"` //屏蔽门整体的关闭(继电器)状态
Param *request_proto.PsdParam `protobuf:"bytes,4,opt,name=param,proto3" json:"param,omitempty"` //屏蔽门设置的参数
Zaw bool `protobuf:"varint,5,opt,name=zaw,proto3" json:"zaw,omitempty"` //有障碍物
}
func (x *PsdState) Reset() {
*x = PsdState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PsdState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PsdState) ProtoMessage() {}
func (x *PsdState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[22]
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 PsdState.ProtoReflect.Descriptor instead.
func (*PsdState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{22}
}
func (x *PsdState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *PsdState) GetAsdStates() []*AsdState {
if x != nil {
return x.AsdStates
}
return nil
}
func (x *PsdState) GetMgj() bool {
if x != nil {
return x.Mgj
}
return false
}
func (x *PsdState) GetParam() *request_proto.PsdParam {
if x != nil {
return x.Param
}
return nil
}
func (x *PsdState) GetZaw() bool {
if x != nil {
return x.Zaw
}
return false
}
// 滑动门状态
type AsdState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` //滑动门的编号
Kmdw bool `protobuf:"varint,2,opt,name=kmdw,proto3" json:"kmdw,omitempty"` //开门到位(实际位置)
Gmdw bool `protobuf:"varint,3,opt,name=gmdw,proto3" json:"gmdw,omitempty"` //关门到位(实际位置)
Mgj bool `protobuf:"varint,4,opt,name=mgj,proto3" json:"mgj,omitempty"` //门关继电器
Zaw bool `protobuf:"varint,5,opt,name=zaw,proto3" json:"zaw,omitempty"` //有障碍物
Force bool `protobuf:"varint,6,opt,name=force,proto3" json:"force,omitempty"` //强制开/关门
}
func (x *AsdState) Reset() {
*x = AsdState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AsdState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AsdState) ProtoMessage() {}
func (x *AsdState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[23]
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 AsdState.ProtoReflect.Descriptor instead.
func (*AsdState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{23}
}
func (x *AsdState) GetCode() int32 {
if x != nil {
return x.Code
}
return 0
}
func (x *AsdState) GetKmdw() bool {
if x != nil {
return x.Kmdw
}
return false
}
func (x *AsdState) GetGmdw() bool {
if x != nil {
return x.Gmdw
}
return false
}
func (x *AsdState) GetMgj() bool {
if x != nil {
return x.Mgj
}
return false
}
func (x *AsdState) GetZaw() bool {
if x != nil {
return x.Zaw
}
return false
}
func (x *AsdState) GetForce() bool {
if x != nil {
return x.Force
}
return false
}
// 钥匙状态
type KeyState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Gear int32 `protobuf:"varint,2,opt,name=gear,proto3" json:"gear,omitempty"` // bool bypass = 3; //摁钮,钥匙 是否旁路
}
func (x *KeyState) Reset() {
*x = KeyState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *KeyState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*KeyState) ProtoMessage() {}
func (x *KeyState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[24]
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 KeyState.ProtoReflect.Descriptor instead.
func (*KeyState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{24}
}
func (x *KeyState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *KeyState) GetGear() int32 {
if x != nil {
return x.Gear
}
return 0
}
// 战场图门控箱继电器状态
type MkxJState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
ReplyState []*ReplyState `protobuf:"bytes,2,rep,name=replyState,proto3" json:"replyState,omitempty"`
}
func (x *MkxJState) Reset() {
*x = MkxJState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MkxJState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MkxJState) ProtoMessage() {}
func (x *MkxJState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[25]
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 MkxJState.ProtoReflect.Descriptor instead.
func (*MkxJState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{25}
}
func (x *MkxJState) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
func (x *MkxJState) GetReplyState() []*ReplyState {
if x != nil {
return x.ReplyState
}
return nil
}
// 应答器状态
type BaliseState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Km *data_proto.KilometerSystem `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` //当前公里标
FixedTelegram string `protobuf:"bytes,3,opt,name=fixedTelegram,proto3" json:"fixedTelegram,omitempty"` //固定报文
FixedUserTelegram string `protobuf:"bytes,4,opt,name=fixedUserTelegram,proto3" json:"fixedUserTelegram,omitempty"` //固定用户报文
VariableTelegram string `protobuf:"bytes,5,opt,name=variableTelegram,proto3" json:"variableTelegram,omitempty"` //可变报文
VariableUserTelegram string `protobuf:"bytes,6,opt,name=variableUserTelegram,proto3" json:"variableUserTelegram,omitempty"` //可变用户报文
Work bool `protobuf:"varint,7,opt,name=work,proto3" json:"work,omitempty"` //是否正常工作
}
func (x *BaliseState) Reset() {
*x = BaliseState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BaliseState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BaliseState) ProtoMessage() {}
func (x *BaliseState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[26]
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 BaliseState.ProtoReflect.Descriptor instead.
func (*BaliseState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{26}
}
func (x *BaliseState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *BaliseState) GetKm() *data_proto.KilometerSystem {
if x != nil {
return x.Km
}
return nil
}
func (x *BaliseState) GetFixedTelegram() string {
if x != nil {
return x.FixedTelegram
}
return ""
}
func (x *BaliseState) GetFixedUserTelegram() string {
if x != nil {
return x.FixedUserTelegram
}
return ""
}
func (x *BaliseState) GetVariableTelegram() string {
if x != nil {
return x.VariableTelegram
}
return ""
}
func (x *BaliseState) GetVariableUserTelegram() string {
if x != nil {
return x.VariableUserTelegram
}
return ""
}
func (x *BaliseState) GetWork() bool {
if x != nil {
return x.Work
}
return false
}
// 车站联锁驱采状态
type StationQc struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
QdStates []*StationQc_State `protobuf:"bytes,1,rep,name=qdStates,proto3" json:"qdStates,omitempty"` //驱动状态
CjStates []*StationQc_State `protobuf:"bytes,2,rep,name=cjStates,proto3" json:"cjStates,omitempty"` //采集状态
}
func (x *StationQc) Reset() {
*x = StationQc{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *StationQc) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StationQc) ProtoMessage() {}
func (x *StationQc) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[27]
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 StationQc.ProtoReflect.Descriptor instead.
func (*StationQc) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{27}
}
func (x *StationQc) GetQdStates() []*StationQc_State {
if x != nil {
return x.QdStates
}
return nil
}
func (x *StationQc) GetCjStates() []*StationQc_State {
if x != nil {
return x.CjStates
}
return nil
}
// 车库门
type CkmState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //车库门的id
Mgj bool `protobuf:"varint,2,opt,name=mgj,proto3" json:"mgj,omitempty"` //车库门关闭继电器
Param *request_proto.CkmParam `protobuf:"bytes,3,opt,name=param,proto3" json:"param,omitempty"` //车库门设置的参数
Local bool `protobuf:"varint,4,opt,name=local,proto3" json:"local,omitempty"` //本地/远程(门模式继电器)
Mplj bool `protobuf:"varint,5,opt,name=mplj,proto3" json:"mplj,omitempty"` //门旁路继电器
}
func (x *CkmState) Reset() {
*x = CkmState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CkmState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CkmState) ProtoMessage() {}
func (x *CkmState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[28]
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 CkmState.ProtoReflect.Descriptor instead.
func (*CkmState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{28}
}
func (x *CkmState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *CkmState) GetMgj() bool {
if x != nil {
return x.Mgj
}
return false
}
func (x *CkmState) GetParam() *request_proto.CkmParam {
if x != nil {
return x.Param
}
return nil
}
func (x *CkmState) GetLocal() bool {
if x != nil {
return x.Local
}
return false
}
func (x *CkmState) GetMplj() bool {
if x != nil {
return x.Mplj
}
return false
}
// 洗车机
type XcjState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //车库门的id
Param *request_proto.XcjParam `protobuf:"bytes,2,opt,name=param,proto3" json:"param,omitempty"` //洗车机设置的参数
Xqj bool `protobuf:"varint,3,opt,name=xqj,proto3" json:"xqj,omitempty"` //洗车请求
TwjList []bool `protobuf:"varint,4,rep,packed,name=twjList,proto3" json:"twjList,omitempty"` //停稳
Tgqj bool `protobuf:"varint,5,opt,name=tgqj,proto3" json:"tgqj,omitempty"` //通过请求
Xcjxj bool `protobuf:"varint,6,opt,name=xcjxj,proto3" json:"xcjxj,omitempty"` //洗车就绪
Xcyxj bool `protobuf:"varint,7,opt,name=xcyxj,proto3" json:"xcyxj,omitempty"` //洗车允许
CfjList []bool `protobuf:"varint,8,rep,packed,name=cfjList,proto3" json:"cfjList,omitempty"` //移动允许
Jtj bool `protobuf:"varint,9,opt,name=jtj,proto3" json:"jtj,omitempty"` //紧急停车
Tgyxj bool `protobuf:"varint,10,opt,name=tgyxj,proto3" json:"tgyxj,omitempty"` //通过允许
}
func (x *XcjState) Reset() {
*x = XcjState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *XcjState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*XcjState) ProtoMessage() {}
func (x *XcjState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[29]
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 XcjState.ProtoReflect.Descriptor instead.
func (*XcjState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{29}
}
func (x *XcjState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *XcjState) GetParam() *request_proto.XcjParam {
if x != nil {
return x.Param
}
return nil
}
func (x *XcjState) GetXqj() bool {
if x != nil {
return x.Xqj
}
return false
}
func (x *XcjState) GetTwjList() []bool {
if x != nil {
return x.TwjList
}
return nil
}
func (x *XcjState) GetTgqj() bool {
if x != nil {
return x.Tgqj
}
return false
}
func (x *XcjState) GetXcjxj() bool {
if x != nil {
return x.Xcjxj
}
return false
}
func (x *XcjState) GetXcyxj() bool {
if x != nil {
return x.Xcyxj
}
return false
}
func (x *XcjState) GetCfjList() []bool {
if x != nil {
return x.CfjList
}
return nil
}
func (x *XcjState) GetJtj() bool {
if x != nil {
return x.Jtj
}
return false
}
func (x *XcjState) GetTgyxj() bool {
if x != nil {
return x.Tgyxj
}
return false
}
// 仿真运行时状态变化量,当前时刻与上一时刻比较得到
type VariationStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 新增或变化的列车的状态
UpdatedTrain []*TrainMapState `protobuf:"bytes,1,rep,name=updatedTrain,proto3" json:"updatedTrain,omitempty"`
// 移除的列车的索引
RemovedTrainId []string `protobuf:"bytes,2,rep,name=removedTrainId,proto3" json:"removedTrainId,omitempty"`
// 状态发生变化的道岔
UpdatedSwitch []*SwitchState `protobuf:"bytes,3,rep,name=updatedSwitch,proto3" json:"updatedSwitch,omitempty"`
// 状态发生变化的区段
UpdatedSection []*SectionState `protobuf:"bytes,4,rep,name=updatedSection,proto3" json:"updatedSection,omitempty"`
// 状态发送变化的继电器
UpdatedReply []*ReplyState `protobuf:"bytes,5,rep,name=updatedReply,proto3" json:"updatedReply,omitempty"`
}
func (x *VariationStatus) Reset() {
*x = VariationStatus{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *VariationStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VariationStatus) ProtoMessage() {}
func (x *VariationStatus) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[30]
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 VariationStatus.ProtoReflect.Descriptor instead.
func (*VariationStatus) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{30}
}
func (x *VariationStatus) GetUpdatedTrain() []*TrainMapState {
if x != nil {
return x.UpdatedTrain
}
return nil
}
func (x *VariationStatus) GetRemovedTrainId() []string {
if x != nil {
return x.RemovedTrainId
}
return nil
}
func (x *VariationStatus) GetUpdatedSwitch() []*SwitchState {
if x != nil {
return x.UpdatedSwitch
}
return nil
}
func (x *VariationStatus) GetUpdatedSection() []*SectionState {
if x != nil {
return x.UpdatedSection
}
return nil
}
func (x *VariationStatus) GetUpdatedReply() []*ReplyState {
if x != nil {
return x.UpdatedReply
}
return nil
}
// 仿真运行时的所有设备的状态
type AllDevicesStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 所有列车状态
TrainState []*TrainMapState `protobuf:"bytes,1,rep,name=trainState,proto3" json:"trainState,omitempty"`
// 所有道岔状态
SwitchState []*SwitchState `protobuf:"bytes,2,rep,name=switchState,proto3" json:"switchState,omitempty"`
// 物理区段状态
SectionState []*SectionState `protobuf:"bytes,3,rep,name=sectionState,proto3" json:"sectionState,omitempty"`
// 所有继电器状态
ReplyState []*ReplyState `protobuf:"bytes,4,rep,name=replyState,proto3" json:"replyState,omitempty"`
// 所有信号机状态
SignalState []*SignalState `protobuf:"bytes,5,rep,name=signalState,proto3" json:"signalState,omitempty"`
// 按钮状态
ButtonState []*ButtonState `protobuf:"bytes,6,rep,name=buttonState,proto3" json:"buttonState,omitempty"`
// 警铃状态
AlarmState []*AlarmState `protobuf:"bytes,7,rep,name=AlarmState,proto3" json:"AlarmState,omitempty"`
// 灯状态
LightState []*LightState `protobuf:"bytes,8,rep,name=LightState,proto3" json:"LightState,omitempty"`
// 屏蔽门状态
PsdState []*PsdState `protobuf:"bytes,9,rep,name=psdState,proto3" json:"psdState,omitempty"`
// 钥匙状态
KeyState []*KeyState `protobuf:"bytes,10,rep,name=KeyState,proto3" json:"KeyState,omitempty"`
// 站场图站台状态
PlatformState []*PlatformState `protobuf:"bytes,11,rep,name=platformState,proto3" json:"platformState,omitempty"`
// 应答器状态
BaliseState []*BaliseState `protobuf:"bytes,12,rep,name=baliseState,proto3" json:"baliseState,omitempty"`
// 车站联锁驱采状态
StationQc *StationQc `protobuf:"bytes,13,opt,name=stationQc,proto3" json:"stationQc,omitempty"`
// 车库门状态
CkmStates []*CkmState `protobuf:"bytes,14,rep,name=ckmStates,proto3" json:"ckmStates,omitempty"`
// 防淹门状态
FymStates []*CkmState `protobuf:"bytes,15,rep,name=fymStates,proto3" json:"fymStates,omitempty"`
// 洗车机状态
XcjStates []*XcjState `protobuf:"bytes,16,rep,name=xcjStates,proto3" json:"xcjStates,omitempty"`
// 计轴区段状态
AxleCountingSection []*AxleCountingSectionState `protobuf:"bytes,17,rep,name=axleCountingSection,proto3" json:"axleCountingSection,omitempty"`
}
func (x *AllDevicesStatus) Reset() {
*x = AllDevicesStatus{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AllDevicesStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AllDevicesStatus) ProtoMessage() {}
func (x *AllDevicesStatus) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[31]
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 AllDevicesStatus.ProtoReflect.Descriptor instead.
func (*AllDevicesStatus) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{31}
}
func (x *AllDevicesStatus) GetTrainState() []*TrainMapState {
if x != nil {
return x.TrainState
}
return nil
}
func (x *AllDevicesStatus) GetSwitchState() []*SwitchState {
if x != nil {
return x.SwitchState
}
return nil
}
func (x *AllDevicesStatus) GetSectionState() []*SectionState {
if x != nil {
return x.SectionState
}
return nil
}
func (x *AllDevicesStatus) GetReplyState() []*ReplyState {
if x != nil {
return x.ReplyState
}
return nil
}
func (x *AllDevicesStatus) GetSignalState() []*SignalState {
if x != nil {
return x.SignalState
}
return nil
}
func (x *AllDevicesStatus) GetButtonState() []*ButtonState {
if x != nil {
return x.ButtonState
}
return nil
}
func (x *AllDevicesStatus) GetAlarmState() []*AlarmState {
if x != nil {
return x.AlarmState
}
return nil
}
func (x *AllDevicesStatus) GetLightState() []*LightState {
if x != nil {
return x.LightState
}
return nil
}
func (x *AllDevicesStatus) GetPsdState() []*PsdState {
if x != nil {
return x.PsdState
}
return nil
}
func (x *AllDevicesStatus) GetKeyState() []*KeyState {
if x != nil {
return x.KeyState
}
return nil
}
func (x *AllDevicesStatus) GetPlatformState() []*PlatformState {
if x != nil {
return x.PlatformState
}
return nil
}
func (x *AllDevicesStatus) GetBaliseState() []*BaliseState {
if x != nil {
return x.BaliseState
}
return nil
}
func (x *AllDevicesStatus) GetStationQc() *StationQc {
if x != nil {
return x.StationQc
}
return nil
}
func (x *AllDevicesStatus) GetCkmStates() []*CkmState {
if x != nil {
return x.CkmStates
}
return nil
}
func (x *AllDevicesStatus) GetFymStates() []*CkmState {
if x != nil {
return x.FymStates
}
return nil
}
func (x *AllDevicesStatus) GetXcjStates() []*XcjState {
if x != nil {
return x.XcjStates
}
return nil
}
func (x *AllDevicesStatus) GetAxleCountingSection() []*AxleCountingSectionState {
if x != nil {
return x.AxleCountingSection
}
return nil
}
// 服务器端向前端推送的设备状态信息
type PushedDevicesStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// true-全量设备状态信息此时allStatus有效
// false - 增量设备状态消息此时varStatus有效
All bool `protobuf:"varint,1,opt,name=all,proto3" json:"all,omitempty"`
// 增量设备状态消息
VarStatus *VariationStatus `protobuf:"bytes,2,opt,name=varStatus,proto3" json:"varStatus,omitempty"`
// 全量设备状态信息
AllStatus *AllDevicesStatus `protobuf:"bytes,3,opt,name=allStatus,proto3" json:"allStatus,omitempty"`
}
func (x *PushedDevicesStatus) Reset() {
*x = PushedDevicesStatus{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PushedDevicesStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PushedDevicesStatus) ProtoMessage() {}
func (x *PushedDevicesStatus) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[32]
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 PushedDevicesStatus.ProtoReflect.Descriptor instead.
func (*PushedDevicesStatus) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{32}
}
func (x *PushedDevicesStatus) GetAll() bool {
if x != nil {
return x.All
}
return false
}
func (x *PushedDevicesStatus) GetVarStatus() *VariationStatus {
if x != nil {
return x.VarStatus
}
return nil
}
func (x *PushedDevicesStatus) GetAllStatus() *AllDevicesStatus {
if x != nil {
return x.AllStatus
}
return nil
}
// 仿真信息状态
type SimulationStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SimulationId string `protobuf:"bytes,1,opt,name=simulationId,proto3" json:"simulationId,omitempty"`
State SimulationStatus_SimulationState `protobuf:"varint,2,opt,name=state,proto3,enum=state.SimulationStatus_SimulationState" json:"state,omitempty"` // string description = 3;
}
func (x *SimulationStatus) Reset() {
*x = SimulationStatus{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SimulationStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SimulationStatus) ProtoMessage() {}
func (x *SimulationStatus) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[33]
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 SimulationStatus.ProtoReflect.Descriptor instead.
func (*SimulationStatus) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{33}
}
func (x *SimulationStatus) GetSimulationId() string {
if x != nil {
return x.SimulationId
}
return ""
}
func (x *SimulationStatus) GetState() SimulationStatus_SimulationState {
if x != nil {
return x.State
}
return SimulationStatus_Init
}
// 仿真在用的第三方接口状态列表
type SimulationThirdPartyApiService struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 服务列表
States []*SimulationThirdPartyApiServiceState `protobuf:"bytes,1,rep,name=states,proto3" json:"states,omitempty"`
}
func (x *SimulationThirdPartyApiService) Reset() {
*x = SimulationThirdPartyApiService{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SimulationThirdPartyApiService) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SimulationThirdPartyApiService) ProtoMessage() {}
func (x *SimulationThirdPartyApiService) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[34]
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 SimulationThirdPartyApiService.ProtoReflect.Descriptor instead.
func (*SimulationThirdPartyApiService) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{34}
}
func (x *SimulationThirdPartyApiService) GetStates() []*SimulationThirdPartyApiServiceState {
if x != nil {
return x.States
}
return nil
}
// 仿真第三方接口状态
type SimulationThirdPartyApiServiceState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 接口服务类型
Type SimulationThirdPartyApiService_Type `protobuf:"varint,1,opt,name=type,proto3,enum=state.SimulationThirdPartyApiService_Type" json:"type,omitempty"`
// 服务状态
State SimulationThirdPartyApiService_State `protobuf:"varint,2,opt,name=state,proto3,enum=state.SimulationThirdPartyApiService_State" json:"state,omitempty"`
// 服务描述
ServiceName string `protobuf:"bytes,3,opt,name=serviceName,proto3" json:"serviceName,omitempty"`
}
func (x *SimulationThirdPartyApiServiceState) Reset() {
*x = SimulationThirdPartyApiServiceState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SimulationThirdPartyApiServiceState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SimulationThirdPartyApiServiceState) ProtoMessage() {}
func (x *SimulationThirdPartyApiServiceState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[35]
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 SimulationThirdPartyApiServiceState.ProtoReflect.Descriptor instead.
func (*SimulationThirdPartyApiServiceState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{35}
}
func (x *SimulationThirdPartyApiServiceState) GetType() SimulationThirdPartyApiService_Type {
if x != nil {
return x.Type
}
return SimulationThirdPartyApiService_Undefined
}
func (x *SimulationThirdPartyApiServiceState) GetState() SimulationThirdPartyApiService_State {
if x != nil {
return x.State
}
return SimulationThirdPartyApiService_Normal
}
func (x *SimulationThirdPartyApiServiceState) GetServiceName() string {
if x != nil {
return x.ServiceName
}
return ""
}
// 列车控制状态
type TrainControlState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Buttons map[string]*TrainControlState_ControlButton `protobuf:"bytes,1,rep,name=buttons,proto3" json:"buttons,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
DriverKey []*TrainControlState_DriverKeySwitch `protobuf:"bytes,2,rep,name=driverKey,proto3" json:"driverKey,omitempty"` //驾驶端激活
SwitchKeyMap map[string]*TrainControlState_SwitchKeyChange `protobuf:"bytes,3,rep,name=switchKeyMap,proto3" json:"switchKeyMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// DirectionKeySwitch dirKey = 3; //接车运行方向
PushHandler *TrainControlState_PushHandler `protobuf:"bytes,4,opt,name=pushHandler,proto3" json:"pushHandler,omitempty"` //牵引制动手柄
LightMaps map[string]*TrainControlState_ControlLight `protobuf:"bytes,5,rep,name=lightMaps,proto3" json:"lightMaps,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *TrainControlState) Reset() {
*x = TrainControlState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainControlState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainControlState) ProtoMessage() {}
func (x *TrainControlState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[36]
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 TrainControlState.ProtoReflect.Descriptor instead.
func (*TrainControlState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{36}
}
func (x *TrainControlState) GetButtons() map[string]*TrainControlState_ControlButton {
if x != nil {
return x.Buttons
}
return nil
}
func (x *TrainControlState) GetDriverKey() []*TrainControlState_DriverKeySwitch {
if x != nil {
return x.DriverKey
}
return nil
}
func (x *TrainControlState) GetSwitchKeyMap() map[string]*TrainControlState_SwitchKeyChange {
if x != nil {
return x.SwitchKeyMap
}
return nil
}
func (x *TrainControlState) GetPushHandler() *TrainControlState_PushHandler {
if x != nil {
return x.PushHandler
}
return nil
}
func (x *TrainControlState) GetLightMaps() map[string]*TrainControlState_ControlLight {
if x != nil {
return x.LightMaps
}
return nil
}
// 返回前端列车控制状态
type TrainControlStateMsg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Buttons []*TrainControlState_ControlButton `protobuf:"bytes,1,rep,name=buttons,proto3" json:"buttons,omitempty"`
DriverKey []*TrainControlState_DriverKeySwitch `protobuf:"bytes,2,rep,name=driverKey,proto3" json:"driverKey,omitempty"` //驾驶端激活
SwitchKeys []*TrainControlState_SwitchKeyChange `protobuf:"bytes,3,rep,name=switchKeys,proto3" json:"switchKeys,omitempty"` //接车运行方向
PushHandler *TrainControlState_PushHandler `protobuf:"bytes,4,opt,name=pushHandler,proto3" json:"pushHandler,omitempty"` //牵引制动手柄
Lights []*TrainControlState_ControlLight `protobuf:"bytes,5,rep,name=lights,proto3" json:"lights,omitempty"`
}
func (x *TrainControlStateMsg) Reset() {
*x = TrainControlStateMsg{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainControlStateMsg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainControlStateMsg) ProtoMessage() {}
func (x *TrainControlStateMsg) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[37]
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 TrainControlStateMsg.ProtoReflect.Descriptor instead.
func (*TrainControlStateMsg) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{37}
}
func (x *TrainControlStateMsg) GetButtons() []*TrainControlState_ControlButton {
if x != nil {
return x.Buttons
}
return nil
}
func (x *TrainControlStateMsg) GetDriverKey() []*TrainControlState_DriverKeySwitch {
if x != nil {
return x.DriverKey
}
return nil
}
func (x *TrainControlStateMsg) GetSwitchKeys() []*TrainControlState_SwitchKeyChange {
if x != nil {
return x.SwitchKeys
}
return nil
}
func (x *TrainControlStateMsg) GetPushHandler() *TrainControlState_PushHandler {
if x != nil {
return x.PushHandler
}
return nil
}
func (x *TrainControlStateMsg) GetLights() []*TrainControlState_ControlLight {
if x != nil {
return x.Lights
}
return nil
}
type TrainVobcState_VobcBtmInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
BtmId uint32 `protobuf:"varint,1,opt,name=btmId,proto3" json:"btmId,omitempty"`
VobcId uint32 `protobuf:"varint,2,opt,name=vobcId,proto3" json:"vobcId,omitempty"`
VobcLifeId uint32 `protobuf:"varint,3,opt,name=vobcLifeId,proto3" json:"vobcLifeId,omitempty"`
}
func (x *TrainVobcState_VobcBtmInfo) Reset() {
*x = TrainVobcState_VobcBtmInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainVobcState_VobcBtmInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainVobcState_VobcBtmInfo) ProtoMessage() {}
func (x *TrainVobcState_VobcBtmInfo) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[40]
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 TrainVobcState_VobcBtmInfo.ProtoReflect.Descriptor instead.
func (*TrainVobcState_VobcBtmInfo) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{13, 0}
}
func (x *TrainVobcState_VobcBtmInfo) GetBtmId() uint32 {
if x != nil {
return x.BtmId
}
return 0
}
func (x *TrainVobcState_VobcBtmInfo) GetVobcId() uint32 {
if x != nil {
return x.VobcId
}
return 0
}
func (x *TrainVobcState_VobcBtmInfo) GetVobcLifeId() uint32 {
if x != nil {
return x.VobcLifeId
}
return 0
}
type StationQc_State struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Row int32 `protobuf:"varint,1,opt,name=row,proto3" json:"row,omitempty"` //行
Col int32 `protobuf:"varint,2,opt,name=col,proto3" json:"col,omitempty"` //列
On bool `protobuf:"varint,3,opt,name=on,proto3" json:"on,omitempty"` //接通
}
func (x *StationQc_State) Reset() {
*x = StationQc_State{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *StationQc_State) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StationQc_State) ProtoMessage() {}
func (x *StationQc_State) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[41]
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 StationQc_State.ProtoReflect.Descriptor instead.
func (*StationQc_State) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{27, 0}
}
func (x *StationQc_State) GetRow() int32 {
if x != nil {
return x.Row
}
return 0
}
func (x *StationQc_State) GetCol() int32 {
if x != nil {
return x.Col
}
return 0
}
func (x *StationQc_State) GetOn() bool {
if x != nil {
return x.On
}
return false
}
// int64 lineInitTimeStamp12PortA = 6; //12号线列出初始化时间戳
// int64 lineInitTimeStamp12PortB = 7; //12号线列出初始化时间戳
// bool line12ConnErrPortA = 8;//12号线连接错误因为12号线atp故障此时atp需要重启还是会发送数据通过此次属性标记atp状态情况(多次观察atp故障时atp输出数字量返回的数据最后一个直接是0)
// bool line12ConnErrPortB = 9;//12号线连接错误因为12号线atp故障此时atp需要重启还是会发送数据通过此次属性标记atp状态情况(多次观察atp故障时atp输出数字量返回的数据最后一个直接是0)
// bool TrainConnInitComplatePortA = 10;
// bool TrainConnInitComplatePortB = 11;
// bool activeTrainA = 12;
// bool activeTrainB = 13;
// bool Line12ConnErr = 14;
// int64 lineInitTimeStamp12 = 15;
type TrainControlState_ControlButton struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Passed bool `protobuf:"varint,3,opt,name=passed,proto3" json:"passed,omitempty"`
}
func (x *TrainControlState_ControlButton) Reset() {
*x = TrainControlState_ControlButton{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[45]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainControlState_ControlButton) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainControlState_ControlButton) ProtoMessage() {}
func (x *TrainControlState_ControlButton) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[45]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TrainControlState_ControlButton.ProtoReflect.Descriptor instead.
func (*TrainControlState_ControlButton) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{36, 3}
}
func (x *TrainControlState_ControlButton) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *TrainControlState_ControlButton) GetPassed() bool {
if x != nil {
return x.Passed
}
return false
}
type TrainControlState_DriverKeySwitch struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Val bool `protobuf:"varint,2,opt,name=val,proto3" json:"val,omitempty"` //0=关1=开
}
func (x *TrainControlState_DriverKeySwitch) Reset() {
*x = TrainControlState_DriverKeySwitch{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[46]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainControlState_DriverKeySwitch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainControlState_DriverKeySwitch) ProtoMessage() {}
func (x *TrainControlState_DriverKeySwitch) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[46]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TrainControlState_DriverKeySwitch.ProtoReflect.Descriptor instead.
func (*TrainControlState_DriverKeySwitch) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{36, 4}
}
func (x *TrainControlState_DriverKeySwitch) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *TrainControlState_DriverKeySwitch) GetVal() bool {
if x != nil {
return x.Val
}
return false
}
type TrainControlState_SwitchKeyChange struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Val uint32 `protobuf:"varint,2,opt,name=val,proto3" json:"val,omitempty"` //0=后(mm)1=前(AA),2=中位(AM)
}
func (x *TrainControlState_SwitchKeyChange) Reset() {
*x = TrainControlState_SwitchKeyChange{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainControlState_SwitchKeyChange) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainControlState_SwitchKeyChange) ProtoMessage() {}
func (x *TrainControlState_SwitchKeyChange) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 TrainControlState_SwitchKeyChange.ProtoReflect.Descriptor instead.
func (*TrainControlState_SwitchKeyChange) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{36, 5}
}
func (x *TrainControlState_SwitchKeyChange) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *TrainControlState_SwitchKeyChange) GetVal() uint32 {
if x != nil {
return x.Val
}
return 0
}
// 牵引制动手柄
type TrainControlState_PushHandler struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Val int32 `protobuf:"varint,2,opt,name=val,proto3" json:"val,omitempty"` // 牵引或制动 大于0是牵引小于0是制动 整体按照整型传输(*100)使用时除以100
}
func (x *TrainControlState_PushHandler) Reset() {
*x = TrainControlState_PushHandler{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainControlState_PushHandler) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainControlState_PushHandler) ProtoMessage() {}
func (x *TrainControlState_PushHandler) ProtoReflect() protoreflect.Message {
mi := &file_device_state_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 TrainControlState_PushHandler.ProtoReflect.Descriptor instead.
func (*TrainControlState_PushHandler) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{36, 6}
}
func (x *TrainControlState_PushHandler) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *TrainControlState_PushHandler) GetVal() int32 {
if x != nil {
return x.Val
}
return 0
}
type TrainControlState_ControlLight struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Val bool `protobuf:"varint,2,opt,name=val,proto3" json:"val,omitempty"`
}
func (x *TrainControlState_ControlLight) Reset() {
*x = TrainControlState_ControlLight{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TrainControlState_ControlLight) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TrainControlState_ControlLight) ProtoMessage() {}
func (x *TrainControlState_ControlLight) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[49]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TrainControlState_ControlLight.ProtoReflect.Descriptor instead.
func (*TrainControlState_ControlLight) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{36, 7}
}
func (x *TrainControlState_ControlLight) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *TrainControlState_ControlLight) GetVal() bool {
if x != nil {
return x.Val
}
return false
}
var File_device_state_proto protoreflect.FileDescriptor
var file_device_state_proto_rawDesc = []byte{
0x0a, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x1b, 0x73, 0x74, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69,
0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x5f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x72, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x35, 0x0a, 0x09, 0x4c, 0x69,
0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6e,
0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x49,
0x64, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02,
0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x18, 0x03,
0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x12, 0x1c,
0x0a, 0x09, 0x61, 0x78, 0x6c, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x08, 0x52, 0x09, 0x61, 0x78, 0x6c, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08,
0x61, 0x78, 0x6c, 0x65, 0x44, 0x72, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x61, 0x78, 0x6c, 0x65, 0x44, 0x72, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x78, 0x6c, 0x65,
0x50, 0x64, 0x72, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x78, 0x6c,
0x65, 0x50, 0x64, 0x72, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x18, 0x41, 0x78, 0x6c, 0x65, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02,
0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x22, 0x9d,
0x02, 0x0a, 0x0b, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16,
0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65,
0x12, 0x0e, 0x0a, 0x02, 0x64, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x64, 0x77,
0x12, 0x0e, 0x0a, 0x02, 0x66, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x66, 0x77,
0x12, 0x2a, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x14, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x10, 0x0a, 0x03,
0x71, 0x64, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x71, 0x64, 0x63, 0x12, 0x10,
0x0a, 0x03, 0x71, 0x66, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x71, 0x66, 0x63,
0x12, 0x10, 0x0a, 0x03, 0x71, 0x79, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x71,
0x79, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02,
0x64, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02,
0x66, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x79, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02,
0x79, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x22, 0x86,
0x02, 0x0a, 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c,
0x0a, 0x06, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x41, 0x73,
0x70, 0x65, 0x63, 0x74, 0x52, 0x06, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x0a, 0x05,
0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x4b, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61,
0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74,
0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61,
0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x61,
0x74, 0x65, 0x4d, 0x61, 0x70, 0x1a, 0x40, 0x0a, 0x12, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x74,
0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x61,
0x6c, 0x22, 0x3c, 0x0a, 0x06, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x07, 0x0a, 0x03, 0x4f,
0x46, 0x46, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x48, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x4c,
0x10, 0x02, 0x12, 0x05, 0x0a, 0x01, 0x55, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x48, 0x55, 0x10,
0x04, 0x12, 0x05, 0x0a, 0x01, 0x42, 0x10, 0x05, 0x12, 0x05, 0x0a, 0x01, 0x41, 0x10, 0x06, 0x22,
0x94, 0x01, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x6d, 0x70, 0x6a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
0x04, 0x65, 0x6d, 0x70, 0x6a, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x70, 0x6b, 0x73, 0x53, 0x74, 0x61,
0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
0x2e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x70, 0x6b,
0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x6d, 0x6b, 0x78, 0x4a, 0x53, 0x74,
0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x65, 0x2e, 0x4d, 0x6b, 0x78, 0x4a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x6d, 0x6b, 0x78,
0x4a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x1e, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe0, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x69, 0x6e,
0x43, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6e,
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x63, 0x6f, 0x6e, 0x6e, 0x12, 0x3f, 0x0a,
0x08, 0x63, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x23, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e,
0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e,
0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c,
0x0a, 0x11, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x61,
0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x54, 0x72, 0x61, 0x69, 0x6e,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x61, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x69,
0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e,
0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x56, 0x4f, 0x42, 0x43, 0x10, 0x01, 0x12, 0x0a, 0x0a,
0x06, 0x50, 0x43, 0x5f, 0x53, 0x49, 0x4d, 0x10, 0x02, 0x22, 0xcb, 0x0d, 0x0a, 0x0a, 0x54, 0x72,
0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x75, 0x70, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65,
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x12, 0x20,
0x0a, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
0x12, 0x12, 0x0a, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,
0x73, 0x68, 0x6f, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64,
0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x68, 0x65,
0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x72, 0x69, 0x66,
0x74, 0x54, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x72, 0x69, 0x66, 0x74,
0x54, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x75, 0x6e, 0x55, 0x70,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x75, 0x6e,
0x55, 0x70, 0x12, 0x32, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76,
0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x14, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69,
0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69,
0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x76, 0x6f, 0x62, 0x63, 0x53, 0x74, 0x61, 0x74,
0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x54, 0x72, 0x61, 0x69, 0x6e, 0x56, 0x6f, 0x62, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09,
0x76, 0x6f, 0x62, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61,
0x69, 0x6e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65,
0x72, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x6c, 0x61,
0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a,
0x0d, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x44, 0x69, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x10,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x44, 0x69, 0x61, 0x6d, 0x65,
0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x79, 0x6e, 0x61,
0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x79,
0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x74, 0x72, 0x61,
0x69, 0x6e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x36, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73, 0x41, 0x18, 0x12, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x74, 0x72, 0x61,
0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73, 0x41, 0x12, 0x36, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e,
0x45, 0x6e, 0x64, 0x73, 0x42, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f,
0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73, 0x53, 0x74,
0x61, 0x74, 0x65, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73, 0x42, 0x12,
0x22, 0x0a, 0x0c, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18,
0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65,
0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66,
0x73, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x69,
0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2a, 0x0a, 0x03, 0x74,
0x63, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61,
0x74, 0x65, 0x52, 0x03, 0x74, 0x63, 0x63, 0x12, 0x33, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x53,
0x74, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x74, 0x61,
0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x65, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07,
0x6f, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f,
0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x6c, 0x64, 0x4c, 0x69, 0x6e,
0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f,
0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b,
0x6f, 0x6c, 0x64, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x18, 0x1e, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0b, 0x6f, 0x6c, 0x64, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2c,
0x0a, 0x11, 0x6f, 0x6c, 0x64, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66,
0x73, 0x65, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6f, 0x6c, 0x64, 0x54, 0x61,
0x69, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x0f,
0x62, 0x74, 0x6d, 0x42, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x41, 0x18,
0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72,
0x61, 0x69, 0x6e, 0x42, 0x74, 0x6d, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x0f, 0x62, 0x74, 0x6d,
0x42, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x41, 0x12, 0x3e, 0x0a, 0x0f,
0x62, 0x74, 0x6d, 0x42, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x18,
0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72,
0x61, 0x69, 0x6e, 0x42, 0x74, 0x6d, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x0f, 0x62, 0x74, 0x6d,
0x42, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x12, 0x1c, 0x0a, 0x09,
0x54, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52,
0x09, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x72,
0x61, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28,
0x02, 0x52, 0x0d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x53, 0x70, 0x65, 0x65, 0x64,
0x12, 0x20, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x41, 0x63, 0x63, 0x18,
0x24, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x41,
0x63, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x42, 0x72,
0x61, 0x6b, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x54, 0x72, 0x61, 0x69, 0x6e,
0x4d, 0x61, 0x78, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x69,
0x6e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x18,
0x26, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x45, 0x6d, 0x65, 0x72,
0x67, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x09,
0x74, 0x72, 0x61, 0x69, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x1b, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61,
0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x74, 0x72,
0x61, 0x69, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x4a, 0x0a, 0x0d, 0x70, 0x75, 0x6c, 0x73, 0x65,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x18, 0x29, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24,
0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x65, 0x2e, 0x50, 0x75, 0x6c, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x70, 0x75, 0x6c, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x4d, 0x61, 0x70, 0x1a, 0x5e, 0x0a, 0x12, 0x50, 0x75, 0x6c, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x74, 0x61,
0x74, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x50, 0x75,
0x6c, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x22, 0x32, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x50, 0x6f, 0x72, 0x74,
0x12, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12,
0x0a, 0x0a, 0x06, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50,
0x4f, 0x52, 0x54, 0x5f, 0x42, 0x10, 0x02, 0x22, 0xc4, 0x01, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x69,
0x6e, 0x42, 0x74, 0x6d, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x62,
0x61, 0x6c, 0x69, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x0b, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a,
0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x42,
0x61, 0x6c, 0x69, 0x73, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72,
0x65, 0x73, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a,
0x0a, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x54, 0x4d, 0x53, 0x74, 0x61,
0x74, 0x65, 0x52, 0x0a, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x5b,
0x0a, 0x15, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x50, 0x75, 0x6c,
0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x6c, 0x73, 0x65,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x75,
0x6c, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x6c,
0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x33, 0x18, 0x03, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0b,
0x70, 0x75, 0x6c, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x33, 0x22, 0xf1, 0x06, 0x0a, 0x11,
0x54, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12,
0x1e, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12,
0x26, 0x0a, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65,
0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6e,
0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x4c,
0x69, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x69,
0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x4c,
0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0e, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12,
0x2c, 0x0a, 0x11, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x63, 0x63, 0x75,
0x70, 0x69, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a,
0x05, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c,
0x6f, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x70, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x08,
0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x75, 0x70, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a,
0x09, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
0x52, 0x09, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x12, 0x32, 0x0a, 0x14, 0x72,
0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x53, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x72, 0x75, 0x6e, 0x6e, 0x69,
0x6e, 0x67, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x12,
0x24, 0x0a, 0x0d, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x69, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x61, 0x6d, 0x70, 0x52, 0x65, 0x73,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x72,
0x61, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a,
0x0f, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64,
0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x12, 0x2a, 0x0a,
0x10, 0x68, 0x65, 0x61, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64,
0x31, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x53, 0x65, 0x6e,
0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x31, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x65, 0x61,
0x64, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x32, 0x18, 0x10, 0x20,
0x01, 0x28, 0x05, 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53,
0x70, 0x65, 0x65, 0x64, 0x32, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e,
0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x31, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52,
0x10, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64,
0x31, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53,
0x70, 0x65, 0x65, 0x64, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x61, 0x69,
0x6c, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x32, 0x12, 0x26, 0x0a,
0x0e, 0x68, 0x65, 0x61, 0x64, 0x52, 0x61, 0x64, 0x61, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18,
0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x52, 0x61, 0x64, 0x61, 0x72,
0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x61, 0x64,
0x61, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74,
0x61, 0x69, 0x6c, 0x52, 0x61, 0x64, 0x61, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x28, 0x0a,
0x0f, 0x75, 0x64, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x64, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72,
0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x6c,
0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x61,
0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x44,
0x69, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28,
0x02, 0x52, 0x0c, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22,
0xf4, 0x1c, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x56, 0x6f, 0x62, 0x63, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x66, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x66, 0x65, 0x53, 0x69, 0x67, 0x6e,
0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x63, 0x31, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x63, 0x31, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
0x12, 0x1c, 0x0a, 0x09, 0x74, 0x63, 0x32, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x63, 0x32, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2a,
0x0a, 0x10, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x77, 0x61,
0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x69,
0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x18,
0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x42, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
0x52, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x12, 0x24, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65,
0x6e, 0x63, 0x79, 0x42, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63,
0x79, 0x42, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26,
0x0a, 0x0e, 0x74, 0x75, 0x72, 0x6e, 0x62, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x74, 0x75, 0x72, 0x6e, 0x62, 0x61, 0x63, 0x6b,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6a, 0x75, 0x6d, 0x70, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6a, 0x75, 0x6d, 0x70,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x74, 0x6f, 0x18, 0x0b, 0x20,
0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x74, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x61, 0x6d, 0x18,
0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x66, 0x61, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x61,
0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x63, 0x61, 0x6d, 0x12, 0x34, 0x0a, 0x15,
0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x43, 0x69,
0x72, 0x63, 0x75, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x74, 0x72, 0x61,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x43, 0x69, 0x72, 0x63, 0x75,
0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x72, 0x61,
0x6b, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12,
0x70, 0x61, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x42, 0x72,
0x61, 0x6b, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52,
0x13, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x72, 0x61,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x72,
0x61, 0x6b, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
0x62, 0x72, 0x61, 0x6b, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72,
0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
0x72, 0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x65, 0x66, 0x74,
0x44, 0x6f, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18,
0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x4f,
0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x72, 0x69,
0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
0x6e, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x69, 0x67, 0x68, 0x74, 0x44,
0x6f, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x32,
0x0a, 0x14, 0x6c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43,
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x65,
0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
0x6e, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x72, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x43,
0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28,
0x08, 0x52, 0x15, 0x72, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73,
0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x44,
0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
0x61, 0x6c, 0x6c, 0x44, 0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f,
0x75, 0x64, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x64, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72,
0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x54, 0x69, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44,
0x6f, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x6f, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2a,
0x0a, 0x10, 0x6d, 0x6f, 0x64, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x42,
0x74, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6d, 0x6f, 0x64, 0x65, 0x4c, 0x65,
0x76, 0x65, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x42, 0x74, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f,
0x6e, 0x66, 0x69, 0x72, 0x6d, 0x42, 0x74, 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x42, 0x74, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x6f,
0x64, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x55, 0x70, 0x42, 0x74, 0x6e, 0x18, 0x1e, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0e, 0x6d, 0x6f, 0x64, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x55, 0x70, 0x42,
0x74, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x42, 0x74, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x74, 0x6f,
0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x42, 0x74, 0x6e, 0x12, 0x30, 0x0a, 0x13,
0x61, 0x74, 0x70, 0x4f, 0x72, 0x41, 0x74, 0x6f, 0x42, 0x79, 0x70, 0x61, 0x73, 0x73, 0x53, 0x74,
0x61, 0x74, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x74, 0x70, 0x4f, 0x72,
0x41, 0x74, 0x6f, 0x42, 0x79, 0x70, 0x61, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e,
0x0a, 0x12, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x75, 0x74, 0x65, 0x64, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x74, 0x72, 0x61, 0x69,
0x6e, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x74, 0x65, 0x64, 0x12, 0x2a,
0x0a, 0x10, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42,
0x74, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x63,
0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x74, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x72,
0x61, 0x6b, 0x65, 0x48, 0x65, 0x61, 0x76, 0x79, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x25, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0f, 0x62, 0x72, 0x61, 0x6b, 0x65, 0x48, 0x65, 0x61, 0x76, 0x79, 0x46,
0x61, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72,
0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x65, 0x66,
0x74, 0x44, 0x6f, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x69,
0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x27, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x61, 0x6b, 0x65, 0x55, 0x70, 0x42, 0x74, 0x6e, 0x18,
0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x61, 0x6b, 0x65, 0x55, 0x70, 0x42, 0x74, 0x6e,
0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x61, 0x75, 0x6c, 0x42, 0x74, 0x6e, 0x18,
0x29, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x61, 0x75, 0x6c, 0x42,
0x74, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x42, 0x74, 0x6e, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x6e, 0x64,
0x65, 0x72, 0x76, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x42, 0x74, 0x6e, 0x12, 0x1a, 0x0a, 0x08,
0x73, 0x6c, 0x65, 0x65, 0x70, 0x42, 0x74, 0x6e, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x73, 0x6c, 0x65, 0x65, 0x70, 0x42, 0x74, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x65, 0x6d, 0x65, 0x72,
0x67, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x2c,
0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x61,
0x6e, 0x64, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x6f, 0x6f, 0x72,
0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0d, 0x64, 0x6f, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24,
0x0a, 0x0d, 0x6c, 0x69, 0x66, 0x65, 0x44, 0x6f, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18,
0x2e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x66, 0x65, 0x44, 0x6f, 0x6f, 0x72, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x77,
0x50, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18,
0x2f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x77, 0x50,
0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24,
0x0a, 0x0d, 0x61, 0x74, 0x70, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x6e, 0x42, 0x74, 0x6e, 0x18,
0x30, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x74, 0x70, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4f,
0x6e, 0x42, 0x74, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x6f, 0x72, 0x4d, 0x6f, 0x64, 0x65,
0x41, 0x41, 0x18, 0x31, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x6f, 0x6f, 0x72, 0x4d, 0x6f,
0x64, 0x65, 0x41, 0x41, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x6f, 0x72, 0x4d, 0x6f, 0x64, 0x65,
0x41, 0x4d, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x6f, 0x6f, 0x72, 0x4d, 0x6f,
0x64, 0x65, 0x41, 0x4d, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x6f, 0x72, 0x4d, 0x6f, 0x64, 0x65,
0x4d, 0x4d, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x6f, 0x6f, 0x72, 0x4d, 0x6f,
0x64, 0x65, 0x4d, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x6f, 0x6f,
0x72, 0x4f, 0x75, 0x74, 0x4c, 0x65, 0x64, 0x18, 0x35, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x74,
0x72, 0x61, 0x69, 0x6e, 0x44, 0x6f, 0x6f, 0x72, 0x4f, 0x75, 0x74, 0x4c, 0x65, 0x64, 0x12, 0x28,
0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
0x6c, 0x18, 0x36, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x74,
0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x74, 0x6f, 0x42,
0x72, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x37, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0f, 0x61, 0x74, 0x6f, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
0x6e, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x61, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x18, 0x38, 0x20, 0x01, 0x28,
0x08, 0x52, 0x15, 0x61, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x74, 0x6f, 0x4c,
0x61, 0x7a, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x18, 0x39, 0x20,
0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x74, 0x6f, 0x4c, 0x61, 0x7a, 0x79, 0x43, 0x6f, 0x6d, 0x6d,
0x61, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x74, 0x6f, 0x41, 0x6c, 0x77,
0x61, 0x79, 0x73, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
0x61, 0x74, 0x6f, 0x41, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x12, 0x28,
0x0a, 0x0f, 0x61, 0x74, 0x6f, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f,
0x72, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x74, 0x6f, 0x4f, 0x70, 0x65, 0x6e,
0x4c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x74, 0x6f, 0x4f,
0x70, 0x65, 0x6e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x3d, 0x20, 0x01,
0x28, 0x08, 0x52, 0x10, 0x61, 0x74, 0x6f, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x69, 0x67, 0x68, 0x74,
0x44, 0x6f, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x74, 0x6f, 0x43, 0x6c, 0x6f, 0x73, 0x65,
0x4c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10,
0x61, 0x74, 0x6f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x4c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72,
0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x53, 0x70, 0x65, 0x65, 0x64, 0x53, 0x69, 0x67, 0x6c, 0x65,
0x18, 0x3f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6e, 0x6f, 0x53, 0x70, 0x65, 0x65, 0x64, 0x53,
0x69, 0x67, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61,
0x72, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x18, 0x40, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x74,
0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x12, 0x22,
0x0a, 0x0c, 0x6d, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x18, 0x41,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x42, 0x72, 0x61,
0x6b, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4f,
0x75, 0x74, 0x18, 0x42, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x52, 0x65,
0x6c, 0x61, 0x79, 0x18, 0x43, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x52,
0x65, 0x6c, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x44, 0x20, 0x01, 0x28, 0x08, 0x52,
0x11, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69,
0x76, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x72, 0x61, 0x6b, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63,
0x74, 0x69, 0x76, 0x65, 0x18, 0x45, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x72, 0x61, 0x6b,
0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x72,
0x61, 0x6b, 0x65, 0x51, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x18, 0x46, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0f, 0x62, 0x72, 0x61, 0x6b, 0x65, 0x51, 0x75, 0x61, 0x72, 0x61, 0x6e,
0x74, 0x69, 0x6e, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x41,
0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73,
0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x12, 0x30,
0x0a, 0x13, 0x61, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d,
0x6d, 0x61, 0x6e, 0x64, 0x31, 0x18, 0x48, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x74, 0x6f,
0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x31,
0x12, 0x30, 0x0a, 0x13, 0x61, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x32, 0x18, 0x49, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61,
0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
0x64, 0x32, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x33, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x08, 0x52,
0x13, 0x61, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d,
0x61, 0x6e, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f,
0x18, 0x4b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x22, 0x0a, 0x0c, 0x61, 0x74, 0x70, 0x43, 0x75, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
0x18, 0x4c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x74, 0x70, 0x43, 0x75, 0x74, 0x53, 0x77,
0x69, 0x74, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x1b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x45, 0x6d, 0x65,
0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x6c, 0x69, 0x67, 0x68, 0x74,
0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x1a, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x54,
0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x43, 0x69, 0x72,
0x63, 0x75, 0x69, 0x74, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x6c, 0x69, 0x67, 0x68,
0x74, 0x54, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x43,
0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44,
0x69, 0x72, 0x31, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74,
0x44, 0x69, 0x72, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72,
0x32, 0x18, 0x50, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69,
0x72, 0x32, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65,
0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x51, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x6c,
0x69, 0x67, 0x68, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
0x12, 0x34, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x6e, 0x69,
0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x52, 0x20, 0x01, 0x28, 0x08, 0x52,
0x15, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x43, 0x6f,
0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x74, 0x6f, 0x43, 0x6c, 0x6f,
0x73, 0x65, 0x52, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x53, 0x20, 0x01, 0x28,
0x08, 0x52, 0x11, 0x61, 0x74, 0x6f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x69, 0x67, 0x68, 0x74,
0x44, 0x6f, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x41, 0x74, 0x6f,
0x53, 0x65, 0x6e, 0x64, 0x18, 0x54, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6c, 0x69, 0x67, 0x68,
0x74, 0x41, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x46, 0x0a, 0x0c, 0x61, 0x74, 0x6f, 0x53,
0x74, 0x65, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22,
0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x56, 0x6f, 0x62, 0x63,
0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x74, 0x6f, 0x53, 0x74, 0x65, 0x70, 0x4c, 0x65, 0x76,
0x65, 0x6c, 0x52, 0x0c, 0x61, 0x74, 0x6f, 0x53, 0x74, 0x65, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x12, 0x43, 0x0a, 0x0b, 0x76, 0x6f, 0x62, 0x63, 0x42, 0x74, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18,
0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72,
0x61, 0x69, 0x6e, 0x56, 0x6f, 0x62, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x56, 0x6f, 0x62,
0x63, 0x42, 0x74, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x76, 0x6f, 0x62, 0x63, 0x42, 0x74,
0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x5b, 0x0a, 0x0b, 0x56, 0x6f, 0x62, 0x63, 0x42, 0x74, 0x6d,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x74, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x74, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f,
0x62, 0x63, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x6f, 0x62, 0x63,
0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x6f, 0x62, 0x63, 0x4c, 0x69, 0x66, 0x65, 0x49, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x76, 0x6f, 0x62, 0x63, 0x4c, 0x69, 0x66, 0x65,
0x49, 0x64, 0x22, 0xc1, 0x01, 0x0a, 0x0c, 0x41, 0x74, 0x6f, 0x53, 0x74, 0x65, 0x70, 0x4c, 0x65,
0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x54, 0x4f, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f,
0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10,
0x41, 0x54, 0x4f, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x31,
0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, 0x4f, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f, 0x4c,
0x45, 0x56, 0x45, 0x4c, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, 0x4f, 0x5f,
0x53, 0x54, 0x45, 0x50, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x14,
0x0a, 0x10, 0x41, 0x54, 0x4f, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c,
0x5f, 0x34, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, 0x4f, 0x5f, 0x53, 0x54, 0x45, 0x50,
0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54,
0x4f, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x36, 0x10, 0x06,
0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, 0x4f, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f, 0x4c, 0x45, 0x56,
0x45, 0x4c, 0x5f, 0x37, 0x10, 0x07, 0x22, 0x8d, 0x15, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x69, 0x6e,
0x4d, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x75, 0x70, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x75, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74,
0x69, 0x61, 0x6c, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c,
0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b,
0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x12,
0x0a, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x68,
0x6f, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x4f, 0x66,
0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64,
0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
0x50, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x72, 0x69, 0x66, 0x74, 0x54,
0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x72, 0x69, 0x66, 0x74, 0x54, 0x6f,
0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x75, 0x6e, 0x55, 0x70, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x75, 0x6e, 0x55, 0x70,
0x12, 0x32, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14,
0x74, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4b, 0x69, 0x6c,
0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x72,
0x61, 0x69, 0x6e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10,
0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44,
0x65, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x77, 0x68, 0x65, 0x65,
0x6c, 0x44, 0x69, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0d, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x44, 0x69, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x2a,
0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65,
0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69,
0x63, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x65,
0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x68, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x68, 0x65,
0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x11, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66, 0x73,
0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64,
0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x6e, 0x6b,
0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66,
0x66, 0x73, 0x65, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x61, 0x69, 0x6c,
0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x63,
0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18,
0x14, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x4c,
0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x6f, 0x70,
0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x18,
0x0a, 0x07, 0x75, 0x70, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52,
0x07, 0x75, 0x70, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x6e,
0x69, 0x6e, 0x67, 0x55, 0x70, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x75, 0x6e,
0x6e, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x12, 0x32, 0x0a, 0x14, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
0x67, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x18, 0x18,
0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x69,
0x72, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28,
0x02, 0x52, 0x0d, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x12, 0x26, 0x0a, 0x0e, 0x72, 0x61, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x72, 0x61, 0x6d, 0x70, 0x52, 0x65,
0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x76,
0x65, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28,
0x02, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x65, 0x61, 0x64,
0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x31, 0x18, 0x1d, 0x20, 0x01,
0x28, 0x05, 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70,
0x65, 0x65, 0x64, 0x31, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x65, 0x61, 0x64, 0x53, 0x65, 0x6e, 0x73,
0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x32, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
0x68, 0x65, 0x61, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x32,
0x12, 0x2a, 0x0a, 0x10, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70,
0x65, 0x65, 0x64, 0x31, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x61, 0x69, 0x6c,
0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x31, 0x12, 0x2a, 0x0a, 0x10,
0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x32,
0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x73,
0x6f, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x32, 0x12, 0x26, 0x0a, 0x0e, 0x68, 0x65, 0x61, 0x64,
0x52, 0x61, 0x64, 0x61, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x52, 0x61, 0x64, 0x61, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64,
0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x61, 0x64, 0x61, 0x72, 0x53, 0x70, 0x65,
0x65, 0x64, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x61,
0x64, 0x61, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x79, 0x6e, 0x61,
0x6d, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x23, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x49, 0x6e,
0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63,
0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x02,
0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26,
0x0a, 0x0e, 0x76, 0x6f, 0x62, 0x63, 0x4c, 0x69, 0x66, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c,
0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x76, 0x6f, 0x62, 0x63, 0x4c, 0x69, 0x66, 0x65,
0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x63, 0x31, 0x41, 0x63, 0x74,
0x69, 0x76, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x63, 0x31, 0x41, 0x63,
0x74, 0x69, 0x76, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x63, 0x32, 0x41, 0x63, 0x74, 0x69, 0x76,
0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x63, 0x32, 0x41, 0x63, 0x74, 0x69,
0x76, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46,
0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69,
0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2c,
0x0a, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x77,
0x61, 0x72, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e,
0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x2a,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x72, 0x61,
0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6d,
0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6d, 0x65, 0x72,
0x67, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x72, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x75, 0x72, 0x6e, 0x62, 0x61, 0x63, 0x6b, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x74, 0x75, 0x72, 0x6e,
0x62, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6a, 0x75,
0x6d, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
0x6a, 0x75, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x74,
0x6f, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x74, 0x6f, 0x12, 0x10, 0x0a, 0x03,
0x66, 0x61, 0x6d, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x66, 0x61, 0x6d, 0x12, 0x10,
0x0a, 0x03, 0x63, 0x61, 0x6d, 0x18, 0x31, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x63, 0x61, 0x6d,
0x12, 0x34, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x66, 0x65,
0x74, 0x79, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52,
0x15, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x43,
0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x6b, 0x69, 0x6e,
0x67, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x33, 0x20, 0x01,
0x28, 0x08, 0x52, 0x12, 0x70, 0x61, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x72, 0x61, 0x6b, 0x65,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61,
0x69, 0x6e, 0x42, 0x72, 0x61, 0x6b, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x34, 0x20,
0x01, 0x28, 0x08, 0x52, 0x13, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x42, 0x72, 0x61,
0x6b, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x35, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0d, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1e,
0x0a, 0x0a, 0x62, 0x72, 0x61, 0x6b, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x36, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6b, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1c,
0x0a, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x18, 0x37, 0x20, 0x01, 0x28,
0x03, 0x52, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x30, 0x0a, 0x13,
0x6c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6d, 0x6d,
0x61, 0x6e, 0x64, 0x18, 0x38, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6c, 0x65, 0x66, 0x74, 0x44,
0x6f, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x32,
0x0a, 0x14, 0x72, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x43,
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x69,
0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
0x6e, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x6c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x43, 0x6c,
0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x08,
0x52, 0x14, 0x6c, 0x65, 0x66, 0x74, 0x44, 0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43,
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x72, 0x69, 0x67, 0x68, 0x74, 0x44,
0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18,
0x3b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x6f, 0x72,
0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c,
0x61, 0x6c, 0x6c, 0x44, 0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x3c, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x44, 0x6f, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65,
0x12, 0x2a, 0x0a, 0x10, 0x76, 0x6f, 0x62, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x76, 0x6f, 0x62, 0x63,
0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x12,
0x74, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x4d, 0x71, 0x74, 0x74, 0x52, 0x12, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x79,
0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x74,
0x72, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73, 0x41, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x19, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x64,
0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x71, 0x74, 0x74, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69,
0x6e, 0x45, 0x6e, 0x64, 0x73, 0x41, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x45,
0x6e, 0x64, 0x73, 0x42, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x74, 0x61,
0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74,
0x65, 0x4d, 0x71, 0x74, 0x74, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73,
0x42, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e,
0x74, 0x18, 0x41, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x63,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x61, 0x69,
0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x69,
0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x43, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74,
0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x69,
0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x44, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72,
0x74, 0x12, 0x33, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x45,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6e,
0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xfc, 0x02, 0x0a, 0x08, 0x42, 0x54, 0x4d, 0x53, 0x74,
0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x12,
0x20, 0x0a, 0x0b, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x6c, 0x69, 0x73,
0x65, 0x12, 0x42, 0x0a, 0x1c, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x67,
0x72, 0x61, 0x6d, 0x46, 0x6f, 0x72, 0x50, 0x63, 0x53, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x6e,
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x54,
0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x46, 0x6f, 0x72, 0x50, 0x63, 0x53, 0x69, 0x6d, 0x52,
0x65, 0x73, 0x65, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61,
0x6d, 0x31, 0x32, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6c, 0x65,
0x67, 0x72, 0x61, 0x6d, 0x31, 0x32, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x69, 0x73,
0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x69, 0x73,
0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20,
0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75,
0x6e, 0x70, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x70,
0x61, 0x63, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x54, 0x79, 0x70,
0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x54,
0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x09,
0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a,
0x0b, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
0x24, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x4e,
0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44,
0x61, 0x74, 0x61, 0x53, 0x4e, 0x22, 0xe4, 0x04, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x44,
0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x71, 0x74, 0x74,
0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x76, 0x69, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x41, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x76, 0x69, 0x73, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x41, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x76, 0x69, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x42, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x76, 0x69, 0x73, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x42, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x76, 0x69, 0x73, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x43, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x76, 0x69, 0x73,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x43, 0x12, 0x36, 0x0a, 0x16, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52,
0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x31,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x31, 0x12, 0x36,
0x0a, 0x16, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63,
0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16,
0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x52, 0x32, 0x12, 0x36, 0x0a, 0x16, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52,
0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x33,
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x33, 0x12, 0x36,
0x0a, 0x16, 0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63,
0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16,
0x63, 0x75, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x52, 0x34, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x76, 0x6f, 0x6c, 0x76,
0x69, 0x6e, 0x67, 0x4d, 0x61, 0x73, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x08, 0x20, 0x01,
0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x76, 0x6f, 0x6c, 0x76, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x73,
0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x09,
0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6a, 0x75, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c,
0x69, 0x70, 0x41, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x70, 0x41,
0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x70, 0x52, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x73, 0x6c, 0x69, 0x70, 0x52, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x70, 0x44, 0x18,
0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x70, 0x44, 0x12, 0x18, 0x0a, 0x07,
0x69, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69,
0x64, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x64, 0x6c, 0x69, 0x6e, 0x67,
0x52, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x52,
0x12, 0x18, 0x0a, 0x07, 0x69, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x18, 0x10, 0x20, 0x01, 0x28,
0x05, 0x52, 0x07, 0x69, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74,
0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x74,
0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x18,
0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x22, 0xa8, 0x03, 0x0a,
0x12, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d,
0x71, 0x74, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x70, 0x65, 0x65, 0x64, 0x53, 0x65, 0x6e, 0x73,
0x6f, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
0x12, 0x73, 0x70, 0x65, 0x65, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x41, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x70, 0x65, 0x65, 0x64, 0x53, 0x65, 0x6e, 0x73,
0x6f, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
0x12, 0x73, 0x70, 0x65, 0x65, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x42, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x61, 0x64, 0x61, 0x72, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x61, 0x64, 0x61, 0x72, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x72, 0x61, 0x64, 0x61, 0x72, 0x43, 0x68,
0x65, 0x63, 0x6b, 0x53, 0x70, 0x65, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x13, 0x72, 0x61, 0x64, 0x61, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x70,
0x65, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x61, 0x64, 0x61, 0x72,
0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0e, 0x72, 0x61, 0x64, 0x61, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12,
0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01,
0x28, 0x08, 0x52, 0x09, 0x61, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a,
0x11, 0x61, 0x63, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x70, 0x65, 0x65, 0x64, 0x44, 0x69,
0x66, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x63, 0x63, 0x43, 0x68, 0x65,
0x63, 0x6b, 0x53, 0x70, 0x65, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x22, 0x0a, 0x0c, 0x61,
0x63, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12,
0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x4f, 0x75, 0x74, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x09,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x4f, 0x75, 0x74, 0x53, 0x70, 0x65, 0x65,
0x64, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x64, 0x61, 0x72, 0x4f, 0x75, 0x74, 0x53, 0x70, 0x65,
0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x61, 0x64, 0x61, 0x72, 0x4f,
0x75, 0x74, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x56, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x79,
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x78, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
0x08, 0x52, 0x02, 0x78, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72,
0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22,
0x49, 0x0a, 0x0b, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f,
0x77, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01,
0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x34, 0x0a, 0x0a, 0x41, 0x6c,
0x61, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69,
0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
0x22, 0x34, 0x0a, 0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16,
0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x08, 0x50, 0x73, 0x64, 0x53, 0x74,
0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x02, 0x69, 0x64, 0x12, 0x2d, 0x0a, 0x09, 0x61, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41,
0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x61, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74,
0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x67, 0x6a, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
0x03, 0x6d, 0x67, 0x6a, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x73,
0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x10, 0x0a,
0x03, 0x7a, 0x61, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x7a, 0x61, 0x77, 0x22,
0x80, 0x01, 0x0a, 0x08, 0x41, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x12, 0x12, 0x0a, 0x04, 0x6b, 0x6d, 0x64, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,
0x6b, 0x6d, 0x64, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x6d, 0x64, 0x77, 0x18, 0x03, 0x20, 0x01,
0x28, 0x08, 0x52, 0x04, 0x67, 0x6d, 0x64, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x67, 0x6a, 0x18,
0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6d, 0x67, 0x6a, 0x12, 0x10, 0x0a, 0x03, 0x7a, 0x61,
0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x7a, 0x61, 0x77, 0x12, 0x14, 0x0a, 0x05,
0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72,
0x63, 0x65, 0x22, 0x2e, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x67, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x67, 0x65,
0x61, 0x72, 0x22, 0x52, 0x0a, 0x09, 0x4d, 0x6b, 0x78, 0x4a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63,
0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74,
0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x52, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c,
0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x93, 0x02, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x69, 0x73,
0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61,
0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
0x52, 0x02, 0x6b, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x54, 0x65, 0x6c,
0x65, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x78,
0x65, 0x64, 0x54, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x69,
0x78, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x69, 0x78, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72,
0x54, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x2a, 0x0a, 0x10, 0x76, 0x61, 0x72, 0x69,
0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x52, 0x10, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65,
0x67, 0x72, 0x61, 0x6d, 0x12, 0x32, 0x0a, 0x14, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01,
0x28, 0x09, 0x52, 0x14, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x72,
0x54, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x6b,
0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0xb0, 0x01, 0x0a,
0x09, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x63, 0x12, 0x32, 0x0a, 0x08, 0x71, 0x64,
0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x63, 0x2e, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x71, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x32,
0x0a, 0x08, 0x63, 0x6a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x51, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x63, 0x6a, 0x53, 0x74, 0x61, 0x74,
0x65, 0x73, 0x1a, 0x3b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72,
0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x10, 0x0a,
0x03, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12,
0x0e, 0x0a, 0x02, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6e, 0x22,
0x7f, 0x0a, 0x08, 0x43, 0x6b, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d,
0x67, 0x6a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6d, 0x67, 0x6a, 0x12, 0x27, 0x0a,
0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6b, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52,
0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18,
0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04,
0x6d, 0x70, 0x6c, 0x6a, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6d, 0x70, 0x6c, 0x6a,
0x22, 0xf1, 0x01, 0x0a, 0x08, 0x58, 0x63, 0x6a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a,
0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x63, 0x6a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52,
0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x78, 0x71, 0x6a, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x52, 0x03, 0x78, 0x71, 0x6a, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x77, 0x6a, 0x4c,
0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x74, 0x77, 0x6a, 0x4c, 0x69,
0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x67, 0x71, 0x6a, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
0x52, 0x04, 0x74, 0x67, 0x71, 0x6a, 0x12, 0x14, 0x0a, 0x05, 0x78, 0x63, 0x6a, 0x78, 0x6a, 0x18,
0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x78, 0x63, 0x6a, 0x78, 0x6a, 0x12, 0x14, 0x0a, 0x05,
0x78, 0x63, 0x79, 0x78, 0x6a, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x78, 0x63, 0x79,
0x78, 0x6a, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x66, 0x6a, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20,
0x03, 0x28, 0x08, 0x52, 0x07, 0x63, 0x66, 0x6a, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03,
0x6a, 0x74, 0x6a, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6a, 0x74, 0x6a, 0x12, 0x14,
0x0a, 0x05, 0x74, 0x67, 0x79, 0x78, 0x6a, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x74,
0x67, 0x79, 0x78, 0x6a, 0x22, 0xa1, 0x02, 0x0a, 0x0f, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f,
0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0d, 0x75, 0x70,
0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x77,
0x69, 0x74, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x65, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x35, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c,
0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x52, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x98, 0x07, 0x0a, 0x10, 0x41, 0x6c, 0x6c,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a,
0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d,
0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74,
0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61,
0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x73, 0x77,
0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x13, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65,
0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52,
0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79,
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53,
0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61,
0x74, 0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b,
0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x62,
0x75, 0x74, 0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x31, 0x0a, 0x0a, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18,
0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c,
0x61, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61,
0x74, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x4c, 0x69, 0x67,
0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x73, 0x64, 0x53, 0x74,
0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x65, 0x2e, 0x50, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x70, 0x73, 0x64, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65,
0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4b,
0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x3a, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61,
0x74, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d,
0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a,
0x0b, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x61, 0x6c, 0x69, 0x73,
0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x53, 0x74,
0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x63,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53,
0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x63, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x51, 0x63, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6b, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73,
0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43,
0x6b, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x63, 0x6b, 0x6d, 0x53, 0x74, 0x61, 0x74,
0x65, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x66, 0x79, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18,
0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6b,
0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x66, 0x79, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65,
0x73, 0x12, 0x2d, 0x0a, 0x09, 0x78, 0x63, 0x6a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x10,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x58, 0x63, 0x6a,
0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x78, 0x63, 0x6a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73,
0x12, 0x51, 0x0a, 0x13, 0x61, 0x78, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67,
0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x78, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x69,
0x6e, 0x67, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x13,
0x61, 0x78, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x50, 0x75, 0x73, 0x68, 0x65, 0x64, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61,
0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x0a,
0x09, 0x76, 0x61, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41,
0x6c, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x53,
0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
0x22, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x69, 0x6d, 0x75,
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61,
0x74, 0x65, 0x22, 0x4b, 0x0a, 0x0f, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x10, 0x00, 0x12,
0x0b, 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05,
0x50, 0x61, 0x75, 0x73, 0x65, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x10, 0x04, 0x22,
0xeb, 0x01, 0x0a, 0x1e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68,
0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41,
0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06,
0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d,
0x0a, 0x09, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a,
0x08, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x73, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53,
0x65, 0x6d, 0x69, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x69, 0x6e,
0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x63, 0x5f, 0x73,
0x69, 0x6d, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x43, 0x49, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b,
0x41, 0x78, 0x6c, 0x65, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x05, 0x22, 0x1e, 0x0a,
0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c,
0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x22, 0xca, 0x01,
0x0a, 0x23, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72,
0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75,
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79,
0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52,
0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d,
0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74,
0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74,
0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb5, 0x07, 0x0a, 0x11, 0x54,
0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65,
0x12, 0x3f, 0x0a, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x75, 0x74, 0x74,
0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e,
0x73, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x02,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44,
0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x09,
0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x73, 0x77, 0x69,
0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x2a, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x77, 0x69,
0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x75, 0x73,
0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e,
0x64, 0x6c, 0x65, 0x72, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65,
0x72, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70, 0x73, 0x18, 0x05,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4c,
0x69, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6c,
0x69, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70, 0x73, 0x1a, 0x62, 0x0a, 0x0c, 0x42, 0x75, 0x74, 0x74,
0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74,
0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f,
0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x69, 0x0a, 0x11,
0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69,
0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0e, 0x4c, 0x69, 0x67, 0x68, 0x74,
0x4d, 0x61, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x61,
0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x67, 0x68,
0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x0d,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70,
0x61, 0x73, 0x73, 0x65, 0x64, 0x1a, 0x33, 0x0a, 0x0f, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b,
0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18,
0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x33, 0x0a, 0x0f, 0x53, 0x77,
0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a,
0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a,
0x2f, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10,
0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x76, 0x61, 0x6c,
0x1a, 0x30, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64,
0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x76,
0x61, 0x6c, 0x22, 0xf1, 0x02, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x40, 0x0a, 0x07, 0x62,
0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x75,
0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a,
0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x28, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65,
0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x09, 0x64, 0x72, 0x69, 0x76,
0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x0a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b,
0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74,
0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x43, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x52, 0x0a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x73, 0x12,
0x46, 0x0a, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50,
0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68,
0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74,
0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74,
0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06,
0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2a, 0x37, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x08,
0x0a, 0x04, 0x41, 0x78, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69,
0x63, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x10, 0x03, 0x42,
0x67, 0x0a, 0x25, 0x63, 0x6c, 0x75, 0x62, 0x2e, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e,
0x62, 0x6a, 0x72, 0x74, 0x73, 0x73, 0x2e, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x66,
0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x42, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x2c, 0x6a, 0x6f, 0x79, 0x6c,
0x69, 0x6e, 0x6b, 0x2e, 0x63, 0x6c, 0x75, 0x62, 0x2f, 0x62, 0x6a, 0x2d, 0x72, 0x74, 0x73, 0x74,
0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x64, 0x74, 0x6f, 0x2f, 0x73, 0x74, 0x61,
0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_device_state_proto_rawDescOnce sync.Once
file_device_state_proto_rawDescData = file_device_state_proto_rawDesc
)
func file_device_state_proto_rawDescGZIP() []byte {
file_device_state_proto_rawDescOnce.Do(func() {
file_device_state_proto_rawDescData = protoimpl.X.CompressGZIP(file_device_state_proto_rawDescData)
})
return file_device_state_proto_rawDescData
}
var file_device_state_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
var file_device_state_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
var file_device_state_proto_goTypes = []interface{}{
(SectionType)(0), // 0: state.SectionType
(Signal_Aspect)(0), // 1: state.Signal.Aspect
(TrainConnState_TrainConnType)(0), // 2: state.TrainConnState.TrainConnType
(TrainState_TrainPort)(0), // 3: state.TrainState.TrainPort
(TrainVobcState_AtoStepLevel)(0), // 4: state.TrainVobcState.AtoStepLevel
(SimulationStatus_SimulationState)(0), // 5: state.SimulationStatus.SimulationState
(SimulationThirdPartyApiService_Type)(0), // 6: state.SimulationThirdPartyApiService.Type
(SimulationThirdPartyApiService_State)(0), // 7: state.SimulationThirdPartyApiService.State
(*LinkState)(nil), // 8: state.LinkState
(*SectionState)(nil), // 9: state.SectionState
(*AxleCountingSectionState)(nil), // 10: state.AxleCountingSectionState
(*SwitchState)(nil), // 11: state.SwitchState
(*SignalState)(nil), // 12: state.SignalState
(*Signal)(nil), // 13: state.Signal
(*PlatformState)(nil), // 14: state.PlatformState
(*StationState)(nil), // 15: state.StationState
(*TrainConnState)(nil), // 16: state.TrainConnState
(*TrainState)(nil), // 17: state.TrainState
(*TrainBtmCache)(nil), // 18: state.TrainBtmCache
(*SensorSpeedPulseCount)(nil), // 19: state.SensorSpeedPulseCount
(*TrainDynamicState)(nil), // 20: state.TrainDynamicState
(*TrainVobcState)(nil), // 21: state.TrainVobcState
(*TrainMapState)(nil), // 22: state.TrainMapState
(*BTMState)(nil), // 23: state.BTMState
(*TrainDynamicConfigMqtt)(nil), // 24: state.TrainDynamicConfigMqtt
(*TrainEndsStateMqtt)(nil), // 25: state.TrainEndsStateMqtt
(*ReplyState)(nil), // 26: state.ReplyState
(*ButtonState)(nil), // 27: state.ButtonState
(*AlarmState)(nil), // 28: state.AlarmState
(*LightState)(nil), // 29: state.LightState
(*PsdState)(nil), // 30: state.PsdState
(*AsdState)(nil), // 31: state.AsdState
(*KeyState)(nil), // 32: state.KeyState
(*MkxJState)(nil), // 33: state.MkxJState
(*BaliseState)(nil), // 34: state.BaliseState
(*StationQc)(nil), // 35: state.StationQc
(*CkmState)(nil), // 36: state.CkmState
(*XcjState)(nil), // 37: state.XcjState
(*VariationStatus)(nil), // 38: state.VariationStatus
(*AllDevicesStatus)(nil), // 39: state.AllDevicesStatus
(*PushedDevicesStatus)(nil), // 40: state.PushedDevicesStatus
(*SimulationStatus)(nil), // 41: state.SimulationStatus
(*SimulationThirdPartyApiService)(nil), // 42: state.SimulationThirdPartyApiService
(*SimulationThirdPartyApiServiceState)(nil), // 43: state.SimulationThirdPartyApiServiceState
(*TrainControlState)(nil), // 44: state.TrainControlState
(*TrainControlStateMsg)(nil), // 45: state.TrainControlStateMsg
nil, // 46: state.SignalState.RelayStateMapEntry
nil, // 47: state.TrainState.PulseCountMapEntry
(*TrainVobcState_VobcBtmInfo)(nil), // 48: state.TrainVobcState.VobcBtmInfo
(*StationQc_State)(nil), // 49: state.StationQc.State
nil, // 50: state.TrainControlState.ButtonsEntry
nil, // 51: state.TrainControlState.SwitchKeyMapEntry
nil, // 52: state.TrainControlState.LightMapsEntry
(*TrainControlState_ControlButton)(nil), // 53: state.TrainControlState.ControlButton
(*TrainControlState_DriverKeySwitch)(nil), // 54: state.TrainControlState.DriverKeySwitch
(*TrainControlState_SwitchKeyChange)(nil), // 55: state.TrainControlState.SwitchKeyChange
(*TrainControlState_PushHandler)(nil), // 56: state.TrainControlState.PushHandler
(*TrainControlState_ControlLight)(nil), // 57: state.TrainControlState.ControlLight
(*request_proto.PointsParam)(nil), // 58: request.PointsParam
(*request_proto.SignalParam)(nil), // 59: request.SignalParam
(*common_proto.TrainDynamicConfig)(nil), // 60: common.TrainDynamicConfig
(*common_proto.TrainEndsState)(nil), // 61: common.TrainEndsState
(*request_proto.PsdParam)(nil), // 62: request.PsdParam
(*data_proto.KilometerSystem)(nil), // 63: graphicData.KilometerSystem
(*request_proto.CkmParam)(nil), // 64: request.CkmParam
(*request_proto.XcjParam)(nil), // 65: request.XcjParam
}
var file_device_state_proto_depIdxs = []int32{
58, // 0: state.SwitchState.param:type_name -> request.PointsParam
1, // 1: state.SignalState.aspect:type_name -> state.Signal.Aspect
59, // 2: state.SignalState.param:type_name -> request.SignalParam
46, // 3: state.SignalState.relayStateMap:type_name -> state.SignalState.RelayStateMapEntry
26, // 4: state.PlatformState.spksState:type_name -> state.ReplyState
33, // 5: state.PlatformState.mkxJState:type_name -> state.MkxJState
2, // 6: state.TrainConnState.connType:type_name -> state.TrainConnState.TrainConnType
20, // 7: state.TrainState.dynamicState:type_name -> state.TrainDynamicState
21, // 8: state.TrainState.vobcState:type_name -> state.TrainVobcState
60, // 9: state.TrainState.trainDynamicConfig:type_name -> common.TrainDynamicConfig
61, // 10: state.TrainState.trainEndsA:type_name -> common.TrainEndsState
61, // 11: state.TrainState.trainEndsB:type_name -> common.TrainEndsState
44, // 12: state.TrainState.tcc:type_name -> state.TrainControlState
16, // 13: state.TrainState.connState:type_name -> state.TrainConnState
18, // 14: state.TrainState.btmBaliseCacheA:type_name -> state.TrainBtmCache
18, // 15: state.TrainState.btmBaliseCacheB:type_name -> state.TrainBtmCache
3, // 16: state.TrainState.trainPort:type_name -> state.TrainState.TrainPort
47, // 17: state.TrainState.pulseCountMap:type_name -> state.TrainState.PulseCountMapEntry
23, // 18: state.TrainBtmCache.baliseList:type_name -> state.BTMState
4, // 19: state.TrainVobcState.atoStepLevel:type_name -> state.TrainVobcState.AtoStepLevel
48, // 20: state.TrainVobcState.vobcBtmInfo:type_name -> state.TrainVobcState.VobcBtmInfo
24, // 21: state.TrainMapState.trainDynamicConfig:type_name -> state.TrainDynamicConfigMqtt
25, // 22: state.TrainMapState.trainEndsA:type_name -> state.TrainEndsStateMqtt
25, // 23: state.TrainMapState.trainEndsB:type_name -> state.TrainEndsStateMqtt
16, // 24: state.TrainMapState.connState:type_name -> state.TrainConnState
31, // 25: state.PsdState.asdStates:type_name -> state.AsdState
62, // 26: state.PsdState.param:type_name -> request.PsdParam
26, // 27: state.MkxJState.replyState:type_name -> state.ReplyState
63, // 28: state.BaliseState.km:type_name -> graphicData.KilometerSystem
49, // 29: state.StationQc.qdStates:type_name -> state.StationQc.State
49, // 30: state.StationQc.cjStates:type_name -> state.StationQc.State
64, // 31: state.CkmState.param:type_name -> request.CkmParam
65, // 32: state.XcjState.param:type_name -> request.XcjParam
22, // 33: state.VariationStatus.updatedTrain:type_name -> state.TrainMapState
11, // 34: state.VariationStatus.updatedSwitch:type_name -> state.SwitchState
9, // 35: state.VariationStatus.updatedSection:type_name -> state.SectionState
26, // 36: state.VariationStatus.updatedReply:type_name -> state.ReplyState
22, // 37: state.AllDevicesStatus.trainState:type_name -> state.TrainMapState
11, // 38: state.AllDevicesStatus.switchState:type_name -> state.SwitchState
9, // 39: state.AllDevicesStatus.sectionState:type_name -> state.SectionState
26, // 40: state.AllDevicesStatus.replyState:type_name -> state.ReplyState
12, // 41: state.AllDevicesStatus.signalState:type_name -> state.SignalState
27, // 42: state.AllDevicesStatus.buttonState:type_name -> state.ButtonState
28, // 43: state.AllDevicesStatus.AlarmState:type_name -> state.AlarmState
29, // 44: state.AllDevicesStatus.LightState:type_name -> state.LightState
30, // 45: state.AllDevicesStatus.psdState:type_name -> state.PsdState
32, // 46: state.AllDevicesStatus.KeyState:type_name -> state.KeyState
14, // 47: state.AllDevicesStatus.platformState:type_name -> state.PlatformState
34, // 48: state.AllDevicesStatus.baliseState:type_name -> state.BaliseState
35, // 49: state.AllDevicesStatus.stationQc:type_name -> state.StationQc
36, // 50: state.AllDevicesStatus.ckmStates:type_name -> state.CkmState
36, // 51: state.AllDevicesStatus.fymStates:type_name -> state.CkmState
37, // 52: state.AllDevicesStatus.xcjStates:type_name -> state.XcjState
10, // 53: state.AllDevicesStatus.axleCountingSection:type_name -> state.AxleCountingSectionState
38, // 54: state.PushedDevicesStatus.varStatus:type_name -> state.VariationStatus
39, // 55: state.PushedDevicesStatus.allStatus:type_name -> state.AllDevicesStatus
5, // 56: state.SimulationStatus.state:type_name -> state.SimulationStatus.SimulationState
43, // 57: state.SimulationThirdPartyApiService.states:type_name -> state.SimulationThirdPartyApiServiceState
6, // 58: state.SimulationThirdPartyApiServiceState.type:type_name -> state.SimulationThirdPartyApiService.Type
7, // 59: state.SimulationThirdPartyApiServiceState.state:type_name -> state.SimulationThirdPartyApiService.State
50, // 60: state.TrainControlState.buttons:type_name -> state.TrainControlState.ButtonsEntry
54, // 61: state.TrainControlState.driverKey:type_name -> state.TrainControlState.DriverKeySwitch
51, // 62: state.TrainControlState.switchKeyMap:type_name -> state.TrainControlState.SwitchKeyMapEntry
56, // 63: state.TrainControlState.pushHandler:type_name -> state.TrainControlState.PushHandler
52, // 64: state.TrainControlState.lightMaps:type_name -> state.TrainControlState.LightMapsEntry
53, // 65: state.TrainControlStateMsg.buttons:type_name -> state.TrainControlState.ControlButton
54, // 66: state.TrainControlStateMsg.driverKey:type_name -> state.TrainControlState.DriverKeySwitch
55, // 67: state.TrainControlStateMsg.switchKeys:type_name -> state.TrainControlState.SwitchKeyChange
56, // 68: state.TrainControlStateMsg.pushHandler:type_name -> state.TrainControlState.PushHandler
57, // 69: state.TrainControlStateMsg.lights:type_name -> state.TrainControlState.ControlLight
19, // 70: state.TrainState.PulseCountMapEntry.value:type_name -> state.SensorSpeedPulseCount
53, // 71: state.TrainControlState.ButtonsEntry.value:type_name -> state.TrainControlState.ControlButton
55, // 72: state.TrainControlState.SwitchKeyMapEntry.value:type_name -> state.TrainControlState.SwitchKeyChange
57, // 73: state.TrainControlState.LightMapsEntry.value:type_name -> state.TrainControlState.ControlLight
74, // [74:74] is the sub-list for method output_type
74, // [74:74] is the sub-list for method input_type
74, // [74:74] is the sub-list for extension type_name
74, // [74:74] is the sub-list for extension extendee
0, // [0:74] is the sub-list for field type_name
}
func init() { file_device_state_proto_init() }
func file_device_state_proto_init() {
if File_device_state_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_device_state_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LinkState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SectionState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AxleCountingSectionState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SwitchState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignalState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[5].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_device_state_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PlatformState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StationState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainConnState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainBtmCache); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SensorSpeedPulseCount); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainDynamicState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainVobcState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainMapState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BTMState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainDynamicConfigMqtt); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainEndsStateMqtt); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReplyState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ButtonState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AlarmState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LightState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PsdState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AsdState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KeyState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MkxJState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BaliseState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StationQc); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CkmState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*XcjState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VariationStatus); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AllDevicesStatus); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PushedDevicesStatus); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulationStatus); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulationThirdPartyApiService); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulationThirdPartyApiServiceState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlStateMsg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainVobcState_VobcBtmInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StationQc_State); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_ControlButton); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_DriverKeySwitch); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_SwitchKeyChange); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_PushHandler); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_ControlLight); 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_device_state_proto_rawDesc,
NumEnums: 8,
NumMessages: 50,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_device_state_proto_goTypes,
DependencyIndexes: file_device_state_proto_depIdxs,
EnumInfos: file_device_state_proto_enumTypes,
MessageInfos: file_device_state_proto_msgTypes,
}.Build()
File_device_state_proto = out.File
file_device_state_proto_rawDesc = nil
file_device_state_proto_goTypes = nil
file_device_state_proto_depIdxs = nil
}