From 484028e72185780526f27c1b9371fc5637be3c72 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Tue, 25 Aug 2026 11:46:07 -0400 Subject: [PATCH] feat(GWC-37,WRK-32): refresh live alarm watch lists --- .../2026-08-19/remediation/00-tracking.md | 2 +- .../internal/generated/mxaccess_gateway.pb.go | 1012 +++---- .../mxaccess_gateway/v1/MxaccessGateway.java | 2404 ++++++++++++----- .../descriptors/mxaccessgw-client-v1.protoset | Bin 122737 -> 124000 bytes .../generated/mxaccess_gateway_pb2.py | 426 +-- clients/rust/protos/mxaccess_gateway.proto | 24 +- docs/AlarmClientDiscovery.md | 31 +- docs/Contracts.md | 9 + docs/GatewayConfiguration.md | 2 +- docs/MxAccessWorkerInstanceDesign.md | 12 + .../Generated/MxaccessGateway.cs | 1307 +++++---- .../Protos/mxaccess_gateway.proto | 24 +- .../Alarms/GatewayAlarmMonitor.cs | 142 +- .../GatewayAlarmMonitorProviderModeTests.cs | 124 +- .../ProtobufContractRoundTripTests.cs | 46 + .../MxAccess/AlarmCommandExecutorTests.cs | 30 + .../MxAccess/AlarmCommandHandlerTests.cs | 124 +- .../MxAccess/MxAccessStaSessionTests.cs | 5 + .../MxAccess/AlarmCommandHandler.cs | 28 +- .../MxAccess/FailoverAlarmConsumer.cs | 32 +- .../MxAccess/IAlarmCommandHandler.cs | 10 +- .../MxAccess/MxAccessCommandExecutor.cs | 25 + 22 files changed, 3961 insertions(+), 1858 deletions(-) diff --git a/archreview/2026-08-19/remediation/00-tracking.md b/archreview/2026-08-19/remediation/00-tracking.md index dc3e174..9dbd374 100644 --- a/archreview/2026-08-19/remediation/00-tracking.md +++ b/archreview/2026-08-19/remediation/00-tracking.md @@ -110,7 +110,7 @@ The continuation runs serially in the isolated `.worktrees/c3-p2-followups` work | I — gateway correctness/security | GWC-33/35, SEC-38/39 | `gpt-5.6-sol` high | Done | Focused regression tests green; NonWindows build clean | | J — secondary contracts | IPC-36/37 | `gpt-5.6-sol` high | Done | Shared launch constants and descriptor parity tests green | | K — client alarm parity | CLI-47/48/49/50 | `gpt-5.6-terra` high | Done | All five client suites green | -| L — live watch-list/proto wave | watch-list refresh follow-up + WRK-32 proto comment | `gpt-5.6-sol` high | Not started | Codegen clean; portable alarm/contract tests green; windev Worker.Tests green | +| L — live watch-list/proto wave | watch-list refresh follow-up + WRK-32 proto comment | `gpt-5.6-sol` high | In progress | Codegen clean; portable alarm/contract tests green; windev Worker.Tests green | | M — Windows gateway CI | TST-35 | `gpt-5.6-terra` medium | Not started | windev `live` mode proves Worker, gateway, full-slnx, and live smoke tiers | | N — integration and release | publish five clients + Contracts | `gpt-5.6-sol` high | Not started | Full local/windev gates; merged `main`; registry coordinates and Go tag verified | diff --git a/clients/go/internal/generated/mxaccess_gateway.pb.go b/clients/go/internal/generated/mxaccess_gateway.pb.go index 99596e8..3b7aa9d 100644 --- a/clients/go/internal/generated/mxaccess_gateway.pb.go +++ b/clients/go/internal/generated/mxaccess_gateway.pb.go @@ -61,6 +61,7 @@ const ( MxCommandKind_MX_COMMAND_KIND_WRITE_SECURED_BULK MxCommandKind = 32 MxCommandKind_MX_COMMAND_KIND_WRITE_SECURED2_BULK MxCommandKind = 33 MxCommandKind_MX_COMMAND_KIND_READ_BULK MxCommandKind = 34 + MxCommandKind_MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST MxCommandKind = 35 MxCommandKind_MX_COMMAND_KIND_PING MxCommandKind = 100 MxCommandKind_MX_COMMAND_KIND_GET_SESSION_STATE MxCommandKind = 101 MxCommandKind_MX_COMMAND_KIND_GET_WORKER_INFO MxCommandKind = 102 @@ -106,6 +107,7 @@ var ( 32: "MX_COMMAND_KIND_WRITE_SECURED_BULK", 33: "MX_COMMAND_KIND_WRITE_SECURED2_BULK", 34: "MX_COMMAND_KIND_READ_BULK", + 35: "MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST", 100: "MX_COMMAND_KIND_PING", 101: "MX_COMMAND_KIND_GET_SESSION_STATE", 102: "MX_COMMAND_KIND_GET_WORKER_INFO", @@ -148,6 +150,7 @@ var ( "MX_COMMAND_KIND_WRITE_SECURED_BULK": 32, "MX_COMMAND_KIND_WRITE_SECURED2_BULK": 33, "MX_COMMAND_KIND_READ_BULK": 34, + "MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST": 35, "MX_COMMAND_KIND_PING": 100, "MX_COMMAND_KIND_GET_SESSION_STATE": 101, "MX_COMMAND_KIND_GET_WORKER_INFO": 102, @@ -1286,6 +1289,7 @@ type MxCommand struct { // *MxCommand_WriteSecuredBulk // *MxCommand_WriteSecured2Bulk // *MxCommand_ReadBulk + // *MxCommand_UpdateAlarmWatchList // *MxCommand_Ping // *MxCommand_GetSessionState // *MxCommand_GetWorkerInfo @@ -1646,6 +1650,15 @@ func (x *MxCommand) GetReadBulk() *ReadBulkCommand { return nil } +func (x *MxCommand) GetUpdateAlarmWatchList() *UpdateAlarmWatchListCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_UpdateAlarmWatchList); ok { + return x.UpdateAlarmWatchList + } + } + return nil +} + func (x *MxCommand) GetPing() *PingCommand { if x != nil { if x, ok := x.Payload.(*MxCommand_Ping); ok { @@ -1831,6 +1844,10 @@ type MxCommand_ReadBulk struct { ReadBulk *ReadBulkCommand `protobuf:"bytes,43,opt,name=read_bulk,json=readBulk,proto3,oneof"` } +type MxCommand_UpdateAlarmWatchList struct { + UpdateAlarmWatchList *UpdateAlarmWatchListCommand `protobuf:"bytes,44,opt,name=update_alarm_watch_list,json=updateAlarmWatchList,proto3,oneof"` +} + type MxCommand_Ping struct { Ping *PingCommand `protobuf:"bytes,100,opt,name=ping,proto3,oneof"` } @@ -1919,6 +1936,8 @@ func (*MxCommand_WriteSecured2Bulk) isMxCommand_Payload() {} func (*MxCommand_ReadBulk) isMxCommand_Payload() {} +func (*MxCommand_UpdateAlarmWatchList) isMxCommand_Payload() {} + func (*MxCommand_Ping) isMxCommand_Payload() {} func (*MxCommand_GetSessionState) isMxCommand_Payload() {} @@ -3249,8 +3268,8 @@ func (x *SubscribeBulkCommand) GetTagAddresses() []string { // Subscription expression follows the canonical // `\\\Galaxy!` format (literal "Galaxy" provider). The // worker spins up a wnwrapConsumer-backed subscription on its STA on -// first call; subsequent calls are an error (use UnsubscribeAlarms then -// SubscribeAlarms to reconfigure). +// first call; subsequent calls are an error. Use UpdateAlarmWatchList to +// replace the standby targets without restarting the primary subscription. type SubscribeAlarmsCommand struct { state protoimpl.MessageState `protogen:"open.v1"` SubscriptionExpression string `protobuf:"bytes,1,opt,name=subscription_expression,json=subscriptionExpression,proto3" json:"subscription_expression,omitempty"` @@ -3258,10 +3277,14 @@ type SubscribeAlarmsCommand struct { ForcedMode AlarmProviderMode `protobuf:"varint,2,opt,name=forced_mode,json=forcedMode,proto3,enum=mxaccess_gateway.v1.AlarmProviderMode" json:"forced_mode,omitempty"` // Subtag watch-list resolved by the gateway (GR SQL + config). Empty in pure // alarmmgr mode; in subtag mode it bounds what the consumer can observe. - WatchList []*AlarmSubtagTarget `protobuf:"bytes,3,rep,name=watch_list,json=watchList,proto3" json:"watch_list,omitempty"` - Failover *AlarmFailoverConfig `protobuf:"bytes,4,opt,name=failover,proto3" json:"failover,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + WatchList []*AlarmSubtagTarget `protobuf:"bytes,3,rep,name=watch_list,json=watchList,proto3" json:"watch_list,omitempty"` + Failover *AlarmFailoverConfig `protobuf:"bytes,4,opt,name=failover,proto3" json:"failover,omitempty"` + // True when auto mode should retain subtag-fallback capability even if the + // gateway's initial discovery produced an empty watch list. False leaves an + // empty list as an intentional alarm-manager-only subscription. + FallbackEnabled bool `protobuf:"varint,5,opt,name=fallback_enabled,json=fallbackEnabled,proto3" json:"fallback_enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SubscribeAlarmsCommand) Reset() { @@ -3322,6 +3345,60 @@ func (x *SubscribeAlarmsCommand) GetFailover() *AlarmFailoverConfig { return nil } +func (x *SubscribeAlarmsCommand) GetFallbackEnabled() bool { + if x != nil { + return x.FallbackEnabled + } + return false +} + +// Replace the live alarm subscription's subtag standby targets. The worker +// constructs and attaches the replacement before swapping it into service, so +// a setup failure leaves the existing standby and active provider unchanged. +type UpdateAlarmWatchListCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + WatchList []*AlarmSubtagTarget `protobuf:"bytes,1,rep,name=watch_list,json=watchList,proto3" json:"watch_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateAlarmWatchListCommand) Reset() { + *x = UpdateAlarmWatchListCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateAlarmWatchListCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAlarmWatchListCommand) ProtoMessage() {} + +func (x *UpdateAlarmWatchListCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAlarmWatchListCommand.ProtoReflect.Descriptor instead. +func (*UpdateAlarmWatchListCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{32} +} + +func (x *UpdateAlarmWatchListCommand) GetWatchList() []*AlarmSubtagTarget { + if x != nil { + return x.WatchList + } + return nil +} + // Tear down the worker's alarm consumer. No-op if no subscription is // currently active. type UnsubscribeAlarmsCommand struct { @@ -3332,7 +3409,7 @@ type UnsubscribeAlarmsCommand struct { func (x *UnsubscribeAlarmsCommand) Reset() { *x = UnsubscribeAlarmsCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[32] + mi := &file_mxaccess_gateway_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3344,7 +3421,7 @@ func (x *UnsubscribeAlarmsCommand) String() string { func (*UnsubscribeAlarmsCommand) ProtoMessage() {} func (x *UnsubscribeAlarmsCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[32] + mi := &file_mxaccess_gateway_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3357,7 +3434,7 @@ func (x *UnsubscribeAlarmsCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use UnsubscribeAlarmsCommand.ProtoReflect.Descriptor instead. func (*UnsubscribeAlarmsCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{32} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{33} } // One alarm attribute the subtag fallback consumer advises. Addresses are full @@ -3376,7 +3453,7 @@ type AlarmSubtagTarget struct { func (x *AlarmSubtagTarget) Reset() { *x = AlarmSubtagTarget{} - mi := &file_mxaccess_gateway_proto_msgTypes[33] + mi := &file_mxaccess_gateway_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3388,7 +3465,7 @@ func (x *AlarmSubtagTarget) String() string { func (*AlarmSubtagTarget) ProtoMessage() {} func (x *AlarmSubtagTarget) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[33] + mi := &file_mxaccess_gateway_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3401,7 +3478,7 @@ func (x *AlarmSubtagTarget) ProtoReflect() protoreflect.Message { // Deprecated: Use AlarmSubtagTarget.ProtoReflect.Descriptor instead. func (*AlarmSubtagTarget) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{33} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{34} } func (x *AlarmSubtagTarget) GetAlarmFullReference() string { @@ -3457,7 +3534,7 @@ type AlarmFailoverConfig struct { func (x *AlarmFailoverConfig) Reset() { *x = AlarmFailoverConfig{} - mi := &file_mxaccess_gateway_proto_msgTypes[34] + mi := &file_mxaccess_gateway_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3469,7 +3546,7 @@ func (x *AlarmFailoverConfig) String() string { func (*AlarmFailoverConfig) ProtoMessage() {} func (x *AlarmFailoverConfig) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[34] + mi := &file_mxaccess_gateway_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3482,7 +3559,7 @@ func (x *AlarmFailoverConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AlarmFailoverConfig.ProtoReflect.Descriptor instead. func (*AlarmFailoverConfig) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{34} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{35} } func (x *AlarmFailoverConfig) GetConsecutiveFailureThreshold() int32 { @@ -3525,7 +3602,7 @@ type AcknowledgeAlarmCommand struct { func (x *AcknowledgeAlarmCommand) Reset() { *x = AcknowledgeAlarmCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[35] + mi := &file_mxaccess_gateway_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3537,7 +3614,7 @@ func (x *AcknowledgeAlarmCommand) String() string { func (*AcknowledgeAlarmCommand) ProtoMessage() {} func (x *AcknowledgeAlarmCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[35] + mi := &file_mxaccess_gateway_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3550,7 +3627,7 @@ func (x *AcknowledgeAlarmCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeAlarmCommand.ProtoReflect.Descriptor instead. func (*AcknowledgeAlarmCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{35} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{36} } func (x *AcknowledgeAlarmCommand) GetAlarmGuid() string { @@ -3607,7 +3684,7 @@ type QueryActiveAlarmsCommand struct { func (x *QueryActiveAlarmsCommand) Reset() { *x = QueryActiveAlarmsCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[36] + mi := &file_mxaccess_gateway_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3619,7 +3696,7 @@ func (x *QueryActiveAlarmsCommand) String() string { func (*QueryActiveAlarmsCommand) ProtoMessage() {} func (x *QueryActiveAlarmsCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[36] + mi := &file_mxaccess_gateway_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3632,7 +3709,7 @@ func (x *QueryActiveAlarmsCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryActiveAlarmsCommand.ProtoReflect.Descriptor instead. func (*QueryActiveAlarmsCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{36} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{37} } func (x *QueryActiveAlarmsCommand) GetAlarmFilterPrefix() string { @@ -3668,7 +3745,7 @@ type AcknowledgeAlarmByNameCommand struct { func (x *AcknowledgeAlarmByNameCommand) Reset() { *x = AcknowledgeAlarmByNameCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[37] + mi := &file_mxaccess_gateway_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3680,7 +3757,7 @@ func (x *AcknowledgeAlarmByNameCommand) String() string { func (*AcknowledgeAlarmByNameCommand) ProtoMessage() {} func (x *AcknowledgeAlarmByNameCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[37] + mi := &file_mxaccess_gateway_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3693,7 +3770,7 @@ func (x *AcknowledgeAlarmByNameCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeAlarmByNameCommand.ProtoReflect.Descriptor instead. func (*AcknowledgeAlarmByNameCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{37} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{38} } func (x *AcknowledgeAlarmByNameCommand) GetAlarmName() string { @@ -3762,7 +3839,7 @@ type UnsubscribeBulkCommand struct { func (x *UnsubscribeBulkCommand) Reset() { *x = UnsubscribeBulkCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[38] + mi := &file_mxaccess_gateway_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3774,7 +3851,7 @@ func (x *UnsubscribeBulkCommand) String() string { func (*UnsubscribeBulkCommand) ProtoMessage() {} func (x *UnsubscribeBulkCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[38] + mi := &file_mxaccess_gateway_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3787,7 +3864,7 @@ func (x *UnsubscribeBulkCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use UnsubscribeBulkCommand.ProtoReflect.Descriptor instead. func (*UnsubscribeBulkCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{38} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{39} } func (x *UnsubscribeBulkCommand) GetServerHandle() int32 { @@ -3818,7 +3895,7 @@ type WriteBulkCommand struct { func (x *WriteBulkCommand) Reset() { *x = WriteBulkCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[39] + mi := &file_mxaccess_gateway_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3830,7 +3907,7 @@ func (x *WriteBulkCommand) String() string { func (*WriteBulkCommand) ProtoMessage() {} func (x *WriteBulkCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[39] + mi := &file_mxaccess_gateway_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3843,7 +3920,7 @@ func (x *WriteBulkCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteBulkCommand.ProtoReflect.Descriptor instead. func (*WriteBulkCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{39} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{40} } func (x *WriteBulkCommand) GetServerHandle() int32 { @@ -3871,7 +3948,7 @@ type WriteBulkEntry struct { func (x *WriteBulkEntry) Reset() { *x = WriteBulkEntry{} - mi := &file_mxaccess_gateway_proto_msgTypes[40] + mi := &file_mxaccess_gateway_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3883,7 +3960,7 @@ func (x *WriteBulkEntry) String() string { func (*WriteBulkEntry) ProtoMessage() {} func (x *WriteBulkEntry) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[40] + mi := &file_mxaccess_gateway_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3896,7 +3973,7 @@ func (x *WriteBulkEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteBulkEntry.ProtoReflect.Descriptor instead. func (*WriteBulkEntry) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{40} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{41} } func (x *WriteBulkEntry) GetItemHandle() int32 { @@ -3931,7 +4008,7 @@ type Write2BulkCommand struct { func (x *Write2BulkCommand) Reset() { *x = Write2BulkCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[41] + mi := &file_mxaccess_gateway_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3943,7 +4020,7 @@ func (x *Write2BulkCommand) String() string { func (*Write2BulkCommand) ProtoMessage() {} func (x *Write2BulkCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[41] + mi := &file_mxaccess_gateway_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3956,7 +4033,7 @@ func (x *Write2BulkCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use Write2BulkCommand.ProtoReflect.Descriptor instead. func (*Write2BulkCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{41} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{42} } func (x *Write2BulkCommand) GetServerHandle() int32 { @@ -3985,7 +4062,7 @@ type Write2BulkEntry struct { func (x *Write2BulkEntry) Reset() { *x = Write2BulkEntry{} - mi := &file_mxaccess_gateway_proto_msgTypes[42] + mi := &file_mxaccess_gateway_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3997,7 +4074,7 @@ func (x *Write2BulkEntry) String() string { func (*Write2BulkEntry) ProtoMessage() {} func (x *Write2BulkEntry) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[42] + mi := &file_mxaccess_gateway_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4010,7 +4087,7 @@ func (x *Write2BulkEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use Write2BulkEntry.ProtoReflect.Descriptor instead. func (*Write2BulkEntry) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{42} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{43} } func (x *Write2BulkEntry) GetItemHandle() int32 { @@ -4055,7 +4132,7 @@ type WriteSecuredBulkCommand struct { func (x *WriteSecuredBulkCommand) Reset() { *x = WriteSecuredBulkCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[43] + mi := &file_mxaccess_gateway_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4067,7 +4144,7 @@ func (x *WriteSecuredBulkCommand) String() string { func (*WriteSecuredBulkCommand) ProtoMessage() {} func (x *WriteSecuredBulkCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[43] + mi := &file_mxaccess_gateway_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4080,7 +4157,7 @@ func (x *WriteSecuredBulkCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteSecuredBulkCommand.ProtoReflect.Descriptor instead. func (*WriteSecuredBulkCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{43} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{44} } func (x *WriteSecuredBulkCommand) GetServerHandle() int32 { @@ -4111,7 +4188,7 @@ type WriteSecuredBulkEntry struct { func (x *WriteSecuredBulkEntry) Reset() { *x = WriteSecuredBulkEntry{} - mi := &file_mxaccess_gateway_proto_msgTypes[44] + mi := &file_mxaccess_gateway_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4123,7 +4200,7 @@ func (x *WriteSecuredBulkEntry) String() string { func (*WriteSecuredBulkEntry) ProtoMessage() {} func (x *WriteSecuredBulkEntry) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[44] + mi := &file_mxaccess_gateway_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4136,7 +4213,7 @@ func (x *WriteSecuredBulkEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteSecuredBulkEntry.ProtoReflect.Descriptor instead. func (*WriteSecuredBulkEntry) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{44} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{45} } func (x *WriteSecuredBulkEntry) GetItemHandle() int32 { @@ -4179,7 +4256,7 @@ type WriteSecured2BulkCommand struct { func (x *WriteSecured2BulkCommand) Reset() { *x = WriteSecured2BulkCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[45] + mi := &file_mxaccess_gateway_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4191,7 +4268,7 @@ func (x *WriteSecured2BulkCommand) String() string { func (*WriteSecured2BulkCommand) ProtoMessage() {} func (x *WriteSecured2BulkCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[45] + mi := &file_mxaccess_gateway_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4204,7 +4281,7 @@ func (x *WriteSecured2BulkCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteSecured2BulkCommand.ProtoReflect.Descriptor instead. func (*WriteSecured2BulkCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{45} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{46} } func (x *WriteSecured2BulkCommand) GetServerHandle() int32 { @@ -4236,7 +4313,7 @@ type WriteSecured2BulkEntry struct { func (x *WriteSecured2BulkEntry) Reset() { *x = WriteSecured2BulkEntry{} - mi := &file_mxaccess_gateway_proto_msgTypes[46] + mi := &file_mxaccess_gateway_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4248,7 +4325,7 @@ func (x *WriteSecured2BulkEntry) String() string { func (*WriteSecured2BulkEntry) ProtoMessage() {} func (x *WriteSecured2BulkEntry) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[46] + mi := &file_mxaccess_gateway_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4261,7 +4338,7 @@ func (x *WriteSecured2BulkEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteSecured2BulkEntry.ProtoReflect.Descriptor instead. func (*WriteSecured2BulkEntry) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{46} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{47} } func (x *WriteSecured2BulkEntry) GetItemHandle() int32 { @@ -4323,7 +4400,7 @@ type ReadBulkCommand struct { func (x *ReadBulkCommand) Reset() { *x = ReadBulkCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[47] + mi := &file_mxaccess_gateway_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4335,7 +4412,7 @@ func (x *ReadBulkCommand) String() string { func (*ReadBulkCommand) ProtoMessage() {} func (x *ReadBulkCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[47] + mi := &file_mxaccess_gateway_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4348,7 +4425,7 @@ func (x *ReadBulkCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadBulkCommand.ProtoReflect.Descriptor instead. func (*ReadBulkCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{47} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{48} } func (x *ReadBulkCommand) GetServerHandle() int32 { @@ -4381,7 +4458,7 @@ type PingCommand struct { func (x *PingCommand) Reset() { *x = PingCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[48] + mi := &file_mxaccess_gateway_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4393,7 +4470,7 @@ func (x *PingCommand) String() string { func (*PingCommand) ProtoMessage() {} func (x *PingCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[48] + mi := &file_mxaccess_gateway_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4406,7 +4483,7 @@ func (x *PingCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use PingCommand.ProtoReflect.Descriptor instead. func (*PingCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{48} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{49} } func (x *PingCommand) GetMessage() string { @@ -4424,7 +4501,7 @@ type GetSessionStateCommand struct { func (x *GetSessionStateCommand) Reset() { *x = GetSessionStateCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[49] + mi := &file_mxaccess_gateway_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4436,7 +4513,7 @@ func (x *GetSessionStateCommand) String() string { func (*GetSessionStateCommand) ProtoMessage() {} func (x *GetSessionStateCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[49] + mi := &file_mxaccess_gateway_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4449,7 +4526,7 @@ func (x *GetSessionStateCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSessionStateCommand.ProtoReflect.Descriptor instead. func (*GetSessionStateCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{49} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{50} } type GetWorkerInfoCommand struct { @@ -4460,7 +4537,7 @@ type GetWorkerInfoCommand struct { func (x *GetWorkerInfoCommand) Reset() { *x = GetWorkerInfoCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[50] + mi := &file_mxaccess_gateway_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4472,7 +4549,7 @@ func (x *GetWorkerInfoCommand) String() string { func (*GetWorkerInfoCommand) ProtoMessage() {} func (x *GetWorkerInfoCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[50] + mi := &file_mxaccess_gateway_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4485,7 +4562,7 @@ func (x *GetWorkerInfoCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkerInfoCommand.ProtoReflect.Descriptor instead. func (*GetWorkerInfoCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{50} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{51} } type DrainEventsCommand struct { @@ -4497,7 +4574,7 @@ type DrainEventsCommand struct { func (x *DrainEventsCommand) Reset() { *x = DrainEventsCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[51] + mi := &file_mxaccess_gateway_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4509,7 +4586,7 @@ func (x *DrainEventsCommand) String() string { func (*DrainEventsCommand) ProtoMessage() {} func (x *DrainEventsCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[51] + mi := &file_mxaccess_gateway_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4522,7 +4599,7 @@ func (x *DrainEventsCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use DrainEventsCommand.ProtoReflect.Descriptor instead. func (*DrainEventsCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{51} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{52} } func (x *DrainEventsCommand) GetMaxEvents() uint32 { @@ -4541,7 +4618,7 @@ type ShutdownWorkerCommand struct { func (x *ShutdownWorkerCommand) Reset() { *x = ShutdownWorkerCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[52] + mi := &file_mxaccess_gateway_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4553,7 +4630,7 @@ func (x *ShutdownWorkerCommand) String() string { func (*ShutdownWorkerCommand) ProtoMessage() {} func (x *ShutdownWorkerCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[52] + mi := &file_mxaccess_gateway_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4566,7 +4643,7 @@ func (x *ShutdownWorkerCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use ShutdownWorkerCommand.ProtoReflect.Descriptor instead. func (*ShutdownWorkerCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{52} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{53} } func (x *ShutdownWorkerCommand) GetGracePeriod() *durationpb.Duration { @@ -4589,11 +4666,14 @@ type MxCommandReply struct { ReturnValue *MxValue `protobuf:"bytes,6,opt,name=return_value,json=returnValue,proto3" json:"return_value,omitempty"` // Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED / // WRITE_SECURED2 replies the worker holds the reply for a bounded window - // (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for + // (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for // the matching MXAccess OnWriteComplete callback and copies its status rows // here, so statuses[0] carries the real MXAccess commit outcome (success OR // failure) while protocol_status/hresult still describe command acceptance - // only. Empty statuses on a write reply means the completion did not arrive + // only. Callback correlation is recency-based per item handle: after the + // bounded wait, a sequential write's callback supersedes a timed-out + // predecessor, and a later stale callback for that predecessor is ignored. + // Empty statuses on a write reply means the completion did not arrive // within the window — the write is unconfirmed, not failed. Correlation is // best-effort per (server_handle, item_handle): MXAccess's callback carries // no transaction id, so concurrent writes to the same item within the @@ -4635,7 +4715,7 @@ type MxCommandReply struct { func (x *MxCommandReply) Reset() { *x = MxCommandReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[53] + mi := &file_mxaccess_gateway_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4647,7 +4727,7 @@ func (x *MxCommandReply) String() string { func (*MxCommandReply) ProtoMessage() {} func (x *MxCommandReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[53] + mi := &file_mxaccess_gateway_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4660,7 +4740,7 @@ func (x *MxCommandReply) ProtoReflect() protoreflect.Message { // Deprecated: Use MxCommandReply.ProtoReflect.Descriptor instead. func (*MxCommandReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{53} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{54} } func (x *MxCommandReply) GetSessionId() string { @@ -5108,7 +5188,7 @@ type RegisterReply struct { func (x *RegisterReply) Reset() { *x = RegisterReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[54] + mi := &file_mxaccess_gateway_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5120,7 +5200,7 @@ func (x *RegisterReply) String() string { func (*RegisterReply) ProtoMessage() {} func (x *RegisterReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[54] + mi := &file_mxaccess_gateway_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5133,7 +5213,7 @@ func (x *RegisterReply) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterReply.ProtoReflect.Descriptor instead. func (*RegisterReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{54} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{55} } func (x *RegisterReply) GetServerHandle() int32 { @@ -5152,7 +5232,7 @@ type AddItemReply struct { func (x *AddItemReply) Reset() { *x = AddItemReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[55] + mi := &file_mxaccess_gateway_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5164,7 +5244,7 @@ func (x *AddItemReply) String() string { func (*AddItemReply) ProtoMessage() {} func (x *AddItemReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[55] + mi := &file_mxaccess_gateway_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5177,7 +5257,7 @@ func (x *AddItemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddItemReply.ProtoReflect.Descriptor instead. func (*AddItemReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{55} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{56} } func (x *AddItemReply) GetItemHandle() int32 { @@ -5196,7 +5276,7 @@ type AddItem2Reply struct { func (x *AddItem2Reply) Reset() { *x = AddItem2Reply{} - mi := &file_mxaccess_gateway_proto_msgTypes[56] + mi := &file_mxaccess_gateway_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5208,7 +5288,7 @@ func (x *AddItem2Reply) String() string { func (*AddItem2Reply) ProtoMessage() {} func (x *AddItem2Reply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[56] + mi := &file_mxaccess_gateway_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5221,7 +5301,7 @@ func (x *AddItem2Reply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddItem2Reply.ProtoReflect.Descriptor instead. func (*AddItem2Reply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{56} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{57} } func (x *AddItem2Reply) GetItemHandle() int32 { @@ -5240,7 +5320,7 @@ type AddBufferedItemReply struct { func (x *AddBufferedItemReply) Reset() { *x = AddBufferedItemReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[57] + mi := &file_mxaccess_gateway_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5252,7 +5332,7 @@ func (x *AddBufferedItemReply) String() string { func (*AddBufferedItemReply) ProtoMessage() {} func (x *AddBufferedItemReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[57] + mi := &file_mxaccess_gateway_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5265,7 +5345,7 @@ func (x *AddBufferedItemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddBufferedItemReply.ProtoReflect.Descriptor instead. func (*AddBufferedItemReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{57} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{58} } func (x *AddBufferedItemReply) GetItemHandle() int32 { @@ -5284,7 +5364,7 @@ type SuspendReply struct { func (x *SuspendReply) Reset() { *x = SuspendReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[58] + mi := &file_mxaccess_gateway_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5296,7 +5376,7 @@ func (x *SuspendReply) String() string { func (*SuspendReply) ProtoMessage() {} func (x *SuspendReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[58] + mi := &file_mxaccess_gateway_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5309,7 +5389,7 @@ func (x *SuspendReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SuspendReply.ProtoReflect.Descriptor instead. func (*SuspendReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{58} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{59} } func (x *SuspendReply) GetStatus() *MxStatusProxy { @@ -5328,7 +5408,7 @@ type ActivateReply struct { func (x *ActivateReply) Reset() { *x = ActivateReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[59] + mi := &file_mxaccess_gateway_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5340,7 +5420,7 @@ func (x *ActivateReply) String() string { func (*ActivateReply) ProtoMessage() {} func (x *ActivateReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[59] + mi := &file_mxaccess_gateway_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5353,7 +5433,7 @@ func (x *ActivateReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivateReply.ProtoReflect.Descriptor instead. func (*ActivateReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{59} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{60} } func (x *ActivateReply) GetStatus() *MxStatusProxy { @@ -5372,7 +5452,7 @@ type AuthenticateUserReply struct { func (x *AuthenticateUserReply) Reset() { *x = AuthenticateUserReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[60] + mi := &file_mxaccess_gateway_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5384,7 +5464,7 @@ func (x *AuthenticateUserReply) String() string { func (*AuthenticateUserReply) ProtoMessage() {} func (x *AuthenticateUserReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[60] + mi := &file_mxaccess_gateway_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5397,7 +5477,7 @@ func (x *AuthenticateUserReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthenticateUserReply.ProtoReflect.Descriptor instead. func (*AuthenticateUserReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{60} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{61} } func (x *AuthenticateUserReply) GetUserId() int32 { @@ -5416,7 +5496,7 @@ type ArchestrAUserToIdReply struct { func (x *ArchestrAUserToIdReply) Reset() { *x = ArchestrAUserToIdReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[61] + mi := &file_mxaccess_gateway_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5428,7 +5508,7 @@ func (x *ArchestrAUserToIdReply) String() string { func (*ArchestrAUserToIdReply) ProtoMessage() {} func (x *ArchestrAUserToIdReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[61] + mi := &file_mxaccess_gateway_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5441,7 +5521,7 @@ func (x *ArchestrAUserToIdReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ArchestrAUserToIdReply.ProtoReflect.Descriptor instead. func (*ArchestrAUserToIdReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{61} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{62} } func (x *ArchestrAUserToIdReply) GetUserId() int32 { @@ -5464,7 +5544,7 @@ type SubscribeResult struct { func (x *SubscribeResult) Reset() { *x = SubscribeResult{} - mi := &file_mxaccess_gateway_proto_msgTypes[62] + mi := &file_mxaccess_gateway_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5476,7 +5556,7 @@ func (x *SubscribeResult) String() string { func (*SubscribeResult) ProtoMessage() {} func (x *SubscribeResult) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[62] + mi := &file_mxaccess_gateway_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5489,7 +5569,7 @@ func (x *SubscribeResult) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeResult.ProtoReflect.Descriptor instead. func (*SubscribeResult) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{62} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{63} } func (x *SubscribeResult) GetServerHandle() int32 { @@ -5536,7 +5616,7 @@ type BulkSubscribeReply struct { func (x *BulkSubscribeReply) Reset() { *x = BulkSubscribeReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[63] + mi := &file_mxaccess_gateway_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5548,7 +5628,7 @@ func (x *BulkSubscribeReply) String() string { func (*BulkSubscribeReply) ProtoMessage() {} func (x *BulkSubscribeReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[63] + mi := &file_mxaccess_gateway_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5561,7 +5641,7 @@ func (x *BulkSubscribeReply) ProtoReflect() protoreflect.Message { // Deprecated: Use BulkSubscribeReply.ProtoReflect.Descriptor instead. func (*BulkSubscribeReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{63} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{64} } func (x *BulkSubscribeReply) GetResults() []*SubscribeResult { @@ -5592,7 +5672,7 @@ type BulkWriteResult struct { func (x *BulkWriteResult) Reset() { *x = BulkWriteResult{} - mi := &file_mxaccess_gateway_proto_msgTypes[64] + mi := &file_mxaccess_gateway_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5604,7 +5684,7 @@ func (x *BulkWriteResult) String() string { func (*BulkWriteResult) ProtoMessage() {} func (x *BulkWriteResult) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[64] + mi := &file_mxaccess_gateway_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5617,7 +5697,7 @@ func (x *BulkWriteResult) ProtoReflect() protoreflect.Message { // Deprecated: Use BulkWriteResult.ProtoReflect.Descriptor instead. func (*BulkWriteResult) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{64} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{65} } func (x *BulkWriteResult) GetServerHandle() int32 { @@ -5671,7 +5751,7 @@ type BulkWriteReply struct { func (x *BulkWriteReply) Reset() { *x = BulkWriteReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[65] + mi := &file_mxaccess_gateway_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5683,7 +5763,7 @@ func (x *BulkWriteReply) String() string { func (*BulkWriteReply) ProtoMessage() {} func (x *BulkWriteReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[65] + mi := &file_mxaccess_gateway_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5696,7 +5776,7 @@ func (x *BulkWriteReply) ProtoReflect() protoreflect.Message { // Deprecated: Use BulkWriteReply.ProtoReflect.Descriptor instead. func (*BulkWriteReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{65} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{66} } func (x *BulkWriteReply) GetResults() []*BulkWriteResult { @@ -5742,7 +5822,7 @@ type BulkReadResult struct { func (x *BulkReadResult) Reset() { *x = BulkReadResult{} - mi := &file_mxaccess_gateway_proto_msgTypes[66] + mi := &file_mxaccess_gateway_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5754,7 +5834,7 @@ func (x *BulkReadResult) String() string { func (*BulkReadResult) ProtoMessage() {} func (x *BulkReadResult) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[66] + mi := &file_mxaccess_gateway_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5767,7 +5847,7 @@ func (x *BulkReadResult) ProtoReflect() protoreflect.Message { // Deprecated: Use BulkReadResult.ProtoReflect.Descriptor instead. func (*BulkReadResult) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{66} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{67} } func (x *BulkReadResult) GetServerHandle() int32 { @@ -5849,7 +5929,7 @@ type BulkReadReply struct { func (x *BulkReadReply) Reset() { *x = BulkReadReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[67] + mi := &file_mxaccess_gateway_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5861,7 +5941,7 @@ func (x *BulkReadReply) String() string { func (*BulkReadReply) ProtoMessage() {} func (x *BulkReadReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[67] + mi := &file_mxaccess_gateway_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5874,7 +5954,7 @@ func (x *BulkReadReply) ProtoReflect() protoreflect.Message { // Deprecated: Use BulkReadReply.ProtoReflect.Descriptor instead. func (*BulkReadReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{67} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{68} } func (x *BulkReadReply) GetResults() []*BulkReadResult { @@ -5893,7 +5973,7 @@ type SessionStateReply struct { func (x *SessionStateReply) Reset() { *x = SessionStateReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[68] + mi := &file_mxaccess_gateway_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5905,7 +5985,7 @@ func (x *SessionStateReply) String() string { func (*SessionStateReply) ProtoMessage() {} func (x *SessionStateReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[68] + mi := &file_mxaccess_gateway_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5918,7 +5998,7 @@ func (x *SessionStateReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionStateReply.ProtoReflect.Descriptor instead. func (*SessionStateReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{68} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{69} } func (x *SessionStateReply) GetState() SessionState { @@ -5940,7 +6020,7 @@ type WorkerInfoReply struct { func (x *WorkerInfoReply) Reset() { *x = WorkerInfoReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[69] + mi := &file_mxaccess_gateway_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5952,7 +6032,7 @@ func (x *WorkerInfoReply) String() string { func (*WorkerInfoReply) ProtoMessage() {} func (x *WorkerInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[69] + mi := &file_mxaccess_gateway_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5965,7 +6045,7 @@ func (x *WorkerInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkerInfoReply.ProtoReflect.Descriptor instead. func (*WorkerInfoReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{69} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{70} } func (x *WorkerInfoReply) GetWorkerProcessId() int32 { @@ -6009,7 +6089,7 @@ type DrainEventsReply struct { func (x *DrainEventsReply) Reset() { *x = DrainEventsReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[70] + mi := &file_mxaccess_gateway_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6021,7 +6101,7 @@ func (x *DrainEventsReply) String() string { func (*DrainEventsReply) ProtoMessage() {} func (x *DrainEventsReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[70] + mi := &file_mxaccess_gateway_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6034,7 +6114,7 @@ func (x *DrainEventsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DrainEventsReply.ProtoReflect.Descriptor instead. func (*DrainEventsReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{70} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{71} } func (x *DrainEventsReply) GetEvents() []*MxEvent { @@ -6063,7 +6143,7 @@ type AcknowledgeAlarmReplyPayload struct { func (x *AcknowledgeAlarmReplyPayload) Reset() { *x = AcknowledgeAlarmReplyPayload{} - mi := &file_mxaccess_gateway_proto_msgTypes[71] + mi := &file_mxaccess_gateway_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6075,7 +6155,7 @@ func (x *AcknowledgeAlarmReplyPayload) String() string { func (*AcknowledgeAlarmReplyPayload) ProtoMessage() {} func (x *AcknowledgeAlarmReplyPayload) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[71] + mi := &file_mxaccess_gateway_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6088,7 +6168,7 @@ func (x *AcknowledgeAlarmReplyPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeAlarmReplyPayload.ProtoReflect.Descriptor instead. func (*AcknowledgeAlarmReplyPayload) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{71} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{72} } func (x *AcknowledgeAlarmReplyPayload) GetNativeStatus() int32 { @@ -6118,7 +6198,7 @@ type QueryActiveAlarmsReplyPayload struct { func (x *QueryActiveAlarmsReplyPayload) Reset() { *x = QueryActiveAlarmsReplyPayload{} - mi := &file_mxaccess_gateway_proto_msgTypes[72] + mi := &file_mxaccess_gateway_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6130,7 +6210,7 @@ func (x *QueryActiveAlarmsReplyPayload) String() string { func (*QueryActiveAlarmsReplyPayload) ProtoMessage() {} func (x *QueryActiveAlarmsReplyPayload) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[72] + mi := &file_mxaccess_gateway_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6143,7 +6223,7 @@ func (x *QueryActiveAlarmsReplyPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryActiveAlarmsReplyPayload.ProtoReflect.Descriptor instead. func (*QueryActiveAlarmsReplyPayload) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{72} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{73} } func (x *QueryActiveAlarmsReplyPayload) GetSnapshots() []*ActiveAlarmSnapshot { @@ -6206,7 +6286,7 @@ type MxEvent struct { func (x *MxEvent) Reset() { *x = MxEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[73] + mi := &file_mxaccess_gateway_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6218,7 +6298,7 @@ func (x *MxEvent) String() string { func (*MxEvent) ProtoMessage() {} func (x *MxEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[73] + mi := &file_mxaccess_gateway_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6231,7 +6311,7 @@ func (x *MxEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use MxEvent.ProtoReflect.Descriptor instead. func (*MxEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{73} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{74} } func (x *MxEvent) GetFamily() MxEventFamily { @@ -6464,7 +6544,7 @@ type ReplayGap struct { func (x *ReplayGap) Reset() { *x = ReplayGap{} - mi := &file_mxaccess_gateway_proto_msgTypes[74] + mi := &file_mxaccess_gateway_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6476,7 +6556,7 @@ func (x *ReplayGap) String() string { func (*ReplayGap) ProtoMessage() {} func (x *ReplayGap) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[74] + mi := &file_mxaccess_gateway_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6489,7 +6569,7 @@ func (x *ReplayGap) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplayGap.ProtoReflect.Descriptor instead. func (*ReplayGap) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{74} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{75} } func (x *ReplayGap) GetRequestedAfterSequence() uint64 { @@ -6514,7 +6594,7 @@ type OnDataChangeEvent struct { func (x *OnDataChangeEvent) Reset() { *x = OnDataChangeEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[75] + mi := &file_mxaccess_gateway_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6526,7 +6606,7 @@ func (x *OnDataChangeEvent) String() string { func (*OnDataChangeEvent) ProtoMessage() {} func (x *OnDataChangeEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[75] + mi := &file_mxaccess_gateway_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6539,7 +6619,7 @@ func (x *OnDataChangeEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnDataChangeEvent.ProtoReflect.Descriptor instead. func (*OnDataChangeEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{75} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{76} } type OnWriteCompleteEvent struct { @@ -6550,7 +6630,7 @@ type OnWriteCompleteEvent struct { func (x *OnWriteCompleteEvent) Reset() { *x = OnWriteCompleteEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[76] + mi := &file_mxaccess_gateway_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6562,7 +6642,7 @@ func (x *OnWriteCompleteEvent) String() string { func (*OnWriteCompleteEvent) ProtoMessage() {} func (x *OnWriteCompleteEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[76] + mi := &file_mxaccess_gateway_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6575,7 +6655,7 @@ func (x *OnWriteCompleteEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnWriteCompleteEvent.ProtoReflect.Descriptor instead. func (*OnWriteCompleteEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{76} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{77} } type OperationCompleteEvent struct { @@ -6586,7 +6666,7 @@ type OperationCompleteEvent struct { func (x *OperationCompleteEvent) Reset() { *x = OperationCompleteEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[77] + mi := &file_mxaccess_gateway_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6598,7 +6678,7 @@ func (x *OperationCompleteEvent) String() string { func (*OperationCompleteEvent) ProtoMessage() {} func (x *OperationCompleteEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[77] + mi := &file_mxaccess_gateway_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6611,7 +6691,7 @@ func (x *OperationCompleteEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationCompleteEvent.ProtoReflect.Descriptor instead. func (*OperationCompleteEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{77} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{78} } type OnBufferedDataChangeEvent struct { @@ -6626,7 +6706,7 @@ type OnBufferedDataChangeEvent struct { func (x *OnBufferedDataChangeEvent) Reset() { *x = OnBufferedDataChangeEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[78] + mi := &file_mxaccess_gateway_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6638,7 +6718,7 @@ func (x *OnBufferedDataChangeEvent) String() string { func (*OnBufferedDataChangeEvent) ProtoMessage() {} func (x *OnBufferedDataChangeEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[78] + mi := &file_mxaccess_gateway_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6651,7 +6731,7 @@ func (x *OnBufferedDataChangeEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnBufferedDataChangeEvent.ProtoReflect.Descriptor instead. func (*OnBufferedDataChangeEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{78} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{79} } func (x *OnBufferedDataChangeEvent) GetDataType() MxDataType { @@ -6739,7 +6819,7 @@ type OnAlarmTransitionEvent struct { func (x *OnAlarmTransitionEvent) Reset() { *x = OnAlarmTransitionEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[79] + mi := &file_mxaccess_gateway_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6751,7 +6831,7 @@ func (x *OnAlarmTransitionEvent) String() string { func (*OnAlarmTransitionEvent) ProtoMessage() {} func (x *OnAlarmTransitionEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[79] + mi := &file_mxaccess_gateway_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6764,7 +6844,7 @@ func (x *OnAlarmTransitionEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnAlarmTransitionEvent.ProtoReflect.Descriptor instead. func (*OnAlarmTransitionEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{79} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{80} } func (x *OnAlarmTransitionEvent) GetAlarmFullReference() string { @@ -6884,7 +6964,7 @@ type OnAlarmProviderModeChangedEvent struct { func (x *OnAlarmProviderModeChangedEvent) Reset() { *x = OnAlarmProviderModeChangedEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[80] + mi := &file_mxaccess_gateway_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6896,7 +6976,7 @@ func (x *OnAlarmProviderModeChangedEvent) String() string { func (*OnAlarmProviderModeChangedEvent) ProtoMessage() {} func (x *OnAlarmProviderModeChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[80] + mi := &file_mxaccess_gateway_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6909,7 +6989,7 @@ func (x *OnAlarmProviderModeChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnAlarmProviderModeChangedEvent.ProtoReflect.Descriptor instead. func (*OnAlarmProviderModeChangedEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{80} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{81} } func (x *OnAlarmProviderModeChangedEvent) GetMode() AlarmProviderMode { @@ -6988,7 +7068,7 @@ type ActiveAlarmSnapshot struct { func (x *ActiveAlarmSnapshot) Reset() { *x = ActiveAlarmSnapshot{} - mi := &file_mxaccess_gateway_proto_msgTypes[81] + mi := &file_mxaccess_gateway_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7000,7 +7080,7 @@ func (x *ActiveAlarmSnapshot) String() string { func (*ActiveAlarmSnapshot) ProtoMessage() {} func (x *ActiveAlarmSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[81] + mi := &file_mxaccess_gateway_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7013,7 +7093,7 @@ func (x *ActiveAlarmSnapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use ActiveAlarmSnapshot.ProtoReflect.Descriptor instead. func (*ActiveAlarmSnapshot) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{81} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{82} } func (x *ActiveAlarmSnapshot) GetAlarmFullReference() string { @@ -7144,7 +7224,7 @@ type AcknowledgeAlarmRequest struct { func (x *AcknowledgeAlarmRequest) Reset() { *x = AcknowledgeAlarmRequest{} - mi := &file_mxaccess_gateway_proto_msgTypes[82] + mi := &file_mxaccess_gateway_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7156,7 +7236,7 @@ func (x *AcknowledgeAlarmRequest) String() string { func (*AcknowledgeAlarmRequest) ProtoMessage() {} func (x *AcknowledgeAlarmRequest) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[82] + mi := &file_mxaccess_gateway_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7169,7 +7249,7 @@ func (x *AcknowledgeAlarmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeAlarmRequest.ProtoReflect.Descriptor instead. func (*AcknowledgeAlarmRequest) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{82} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{83} } func (x *AcknowledgeAlarmRequest) GetClientCorrelationId() string { @@ -7224,7 +7304,7 @@ type AcknowledgeAlarmReply struct { func (x *AcknowledgeAlarmReply) Reset() { *x = AcknowledgeAlarmReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[83] + mi := &file_mxaccess_gateway_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7236,7 +7316,7 @@ func (x *AcknowledgeAlarmReply) String() string { func (*AcknowledgeAlarmReply) ProtoMessage() {} func (x *AcknowledgeAlarmReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[83] + mi := &file_mxaccess_gateway_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7249,7 +7329,7 @@ func (x *AcknowledgeAlarmReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeAlarmReply.ProtoReflect.Descriptor instead. func (*AcknowledgeAlarmReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{83} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{84} } func (x *AcknowledgeAlarmReply) GetCorrelationId() string { @@ -7300,7 +7380,7 @@ type StreamAlarmsRequest struct { func (x *StreamAlarmsRequest) Reset() { *x = StreamAlarmsRequest{} - mi := &file_mxaccess_gateway_proto_msgTypes[84] + mi := &file_mxaccess_gateway_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7312,7 +7392,7 @@ func (x *StreamAlarmsRequest) String() string { func (*StreamAlarmsRequest) ProtoMessage() {} func (x *StreamAlarmsRequest) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[84] + mi := &file_mxaccess_gateway_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7325,7 +7405,7 @@ func (x *StreamAlarmsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamAlarmsRequest.ProtoReflect.Descriptor instead. func (*StreamAlarmsRequest) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{84} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{85} } func (x *StreamAlarmsRequest) GetClientCorrelationId() string { @@ -7365,7 +7445,7 @@ type AlarmFeedMessage struct { func (x *AlarmFeedMessage) Reset() { *x = AlarmFeedMessage{} - mi := &file_mxaccess_gateway_proto_msgTypes[85] + mi := &file_mxaccess_gateway_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7377,7 +7457,7 @@ func (x *AlarmFeedMessage) String() string { func (*AlarmFeedMessage) ProtoMessage() {} func (x *AlarmFeedMessage) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[85] + mi := &file_mxaccess_gateway_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7390,7 +7470,7 @@ func (x *AlarmFeedMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use AlarmFeedMessage.ProtoReflect.Descriptor instead. func (*AlarmFeedMessage) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{85} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{86} } func (x *AlarmFeedMessage) GetPayload() isAlarmFeedMessage_Payload { @@ -7500,7 +7580,7 @@ type AlarmProviderStatus struct { func (x *AlarmProviderStatus) Reset() { *x = AlarmProviderStatus{} - mi := &file_mxaccess_gateway_proto_msgTypes[86] + mi := &file_mxaccess_gateway_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7512,7 +7592,7 @@ func (x *AlarmProviderStatus) String() string { func (*AlarmProviderStatus) ProtoMessage() {} func (x *AlarmProviderStatus) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[86] + mi := &file_mxaccess_gateway_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7525,7 +7605,7 @@ func (x *AlarmProviderStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AlarmProviderStatus.ProtoReflect.Descriptor instead. func (*AlarmProviderStatus) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{86} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{87} } func (x *AlarmProviderStatus) GetMode() AlarmProviderMode { @@ -7578,7 +7658,7 @@ type AlarmSnapshotStatus struct { func (x *AlarmSnapshotStatus) Reset() { *x = AlarmSnapshotStatus{} - mi := &file_mxaccess_gateway_proto_msgTypes[87] + mi := &file_mxaccess_gateway_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7590,7 +7670,7 @@ func (x *AlarmSnapshotStatus) String() string { func (*AlarmSnapshotStatus) ProtoMessage() {} func (x *AlarmSnapshotStatus) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[87] + mi := &file_mxaccess_gateway_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7603,7 +7683,7 @@ func (x *AlarmSnapshotStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AlarmSnapshotStatus.ProtoReflect.Descriptor instead. func (*AlarmSnapshotStatus) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{87} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{88} } func (x *AlarmSnapshotStatus) GetTruncated() bool { @@ -7637,7 +7717,7 @@ type MxStatusProxy struct { func (x *MxStatusProxy) Reset() { *x = MxStatusProxy{} - mi := &file_mxaccess_gateway_proto_msgTypes[88] + mi := &file_mxaccess_gateway_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7649,7 +7729,7 @@ func (x *MxStatusProxy) String() string { func (*MxStatusProxy) ProtoMessage() {} func (x *MxStatusProxy) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[88] + mi := &file_mxaccess_gateway_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7662,7 +7742,7 @@ func (x *MxStatusProxy) ProtoReflect() protoreflect.Message { // Deprecated: Use MxStatusProxy.ProtoReflect.Descriptor instead. func (*MxStatusProxy) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{88} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{89} } func (x *MxStatusProxy) GetSuccess() int32 { @@ -7740,7 +7820,7 @@ type MxValue struct { func (x *MxValue) Reset() { *x = MxValue{} - mi := &file_mxaccess_gateway_proto_msgTypes[89] + mi := &file_mxaccess_gateway_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7752,7 +7832,7 @@ func (x *MxValue) String() string { func (*MxValue) ProtoMessage() {} func (x *MxValue) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[89] + mi := &file_mxaccess_gateway_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7765,7 +7845,7 @@ func (x *MxValue) ProtoReflect() protoreflect.Message { // Deprecated: Use MxValue.ProtoReflect.Descriptor instead. func (*MxValue) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{89} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{90} } func (x *MxValue) GetDataType() MxDataType { @@ -7988,7 +8068,7 @@ type MxArray struct { func (x *MxArray) Reset() { *x = MxArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[90] + mi := &file_mxaccess_gateway_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8000,7 +8080,7 @@ func (x *MxArray) String() string { func (*MxArray) ProtoMessage() {} func (x *MxArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[90] + mi := &file_mxaccess_gateway_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8013,7 +8093,7 @@ func (x *MxArray) ProtoReflect() protoreflect.Message { // Deprecated: Use MxArray.ProtoReflect.Descriptor instead. func (*MxArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{90} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{91} } func (x *MxArray) GetElementDataType() MxDataType { @@ -8197,7 +8277,7 @@ type MxSparseArray struct { func (x *MxSparseArray) Reset() { *x = MxSparseArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[91] + mi := &file_mxaccess_gateway_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8209,7 +8289,7 @@ func (x *MxSparseArray) String() string { func (*MxSparseArray) ProtoMessage() {} func (x *MxSparseArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[91] + mi := &file_mxaccess_gateway_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8222,7 +8302,7 @@ func (x *MxSparseArray) ProtoReflect() protoreflect.Message { // Deprecated: Use MxSparseArray.ProtoReflect.Descriptor instead. func (*MxSparseArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{91} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{92} } func (x *MxSparseArray) GetElementDataType() MxDataType { @@ -8256,7 +8336,7 @@ type MxSparseElement struct { func (x *MxSparseElement) Reset() { *x = MxSparseElement{} - mi := &file_mxaccess_gateway_proto_msgTypes[92] + mi := &file_mxaccess_gateway_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8268,7 +8348,7 @@ func (x *MxSparseElement) String() string { func (*MxSparseElement) ProtoMessage() {} func (x *MxSparseElement) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[92] + mi := &file_mxaccess_gateway_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8281,7 +8361,7 @@ func (x *MxSparseElement) ProtoReflect() protoreflect.Message { // Deprecated: Use MxSparseElement.ProtoReflect.Descriptor instead. func (*MxSparseElement) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{92} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{93} } func (x *MxSparseElement) GetIndex() uint32 { @@ -8307,7 +8387,7 @@ type BoolArray struct { func (x *BoolArray) Reset() { *x = BoolArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[93] + mi := &file_mxaccess_gateway_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8319,7 +8399,7 @@ func (x *BoolArray) String() string { func (*BoolArray) ProtoMessage() {} func (x *BoolArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[93] + mi := &file_mxaccess_gateway_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8332,7 +8412,7 @@ func (x *BoolArray) ProtoReflect() protoreflect.Message { // Deprecated: Use BoolArray.ProtoReflect.Descriptor instead. func (*BoolArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{93} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{94} } func (x *BoolArray) GetValues() []bool { @@ -8351,7 +8431,7 @@ type Int32Array struct { func (x *Int32Array) Reset() { *x = Int32Array{} - mi := &file_mxaccess_gateway_proto_msgTypes[94] + mi := &file_mxaccess_gateway_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8363,7 +8443,7 @@ func (x *Int32Array) String() string { func (*Int32Array) ProtoMessage() {} func (x *Int32Array) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[94] + mi := &file_mxaccess_gateway_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8376,7 +8456,7 @@ func (x *Int32Array) ProtoReflect() protoreflect.Message { // Deprecated: Use Int32Array.ProtoReflect.Descriptor instead. func (*Int32Array) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{94} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{95} } func (x *Int32Array) GetValues() []int32 { @@ -8395,7 +8475,7 @@ type Int64Array struct { func (x *Int64Array) Reset() { *x = Int64Array{} - mi := &file_mxaccess_gateway_proto_msgTypes[95] + mi := &file_mxaccess_gateway_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8407,7 +8487,7 @@ func (x *Int64Array) String() string { func (*Int64Array) ProtoMessage() {} func (x *Int64Array) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[95] + mi := &file_mxaccess_gateway_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8420,7 +8500,7 @@ func (x *Int64Array) ProtoReflect() protoreflect.Message { // Deprecated: Use Int64Array.ProtoReflect.Descriptor instead. func (*Int64Array) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{95} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{96} } func (x *Int64Array) GetValues() []int64 { @@ -8439,7 +8519,7 @@ type FloatArray struct { func (x *FloatArray) Reset() { *x = FloatArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[96] + mi := &file_mxaccess_gateway_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8451,7 +8531,7 @@ func (x *FloatArray) String() string { func (*FloatArray) ProtoMessage() {} func (x *FloatArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[96] + mi := &file_mxaccess_gateway_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8464,7 +8544,7 @@ func (x *FloatArray) ProtoReflect() protoreflect.Message { // Deprecated: Use FloatArray.ProtoReflect.Descriptor instead. func (*FloatArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{96} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{97} } func (x *FloatArray) GetValues() []float32 { @@ -8483,7 +8563,7 @@ type DoubleArray struct { func (x *DoubleArray) Reset() { *x = DoubleArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[97] + mi := &file_mxaccess_gateway_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8495,7 +8575,7 @@ func (x *DoubleArray) String() string { func (*DoubleArray) ProtoMessage() {} func (x *DoubleArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[97] + mi := &file_mxaccess_gateway_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8508,7 +8588,7 @@ func (x *DoubleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DoubleArray.ProtoReflect.Descriptor instead. func (*DoubleArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{97} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{98} } func (x *DoubleArray) GetValues() []float64 { @@ -8527,7 +8607,7 @@ type StringArray struct { func (x *StringArray) Reset() { *x = StringArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[98] + mi := &file_mxaccess_gateway_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8539,7 +8619,7 @@ func (x *StringArray) String() string { func (*StringArray) ProtoMessage() {} func (x *StringArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[98] + mi := &file_mxaccess_gateway_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8552,7 +8632,7 @@ func (x *StringArray) ProtoReflect() protoreflect.Message { // Deprecated: Use StringArray.ProtoReflect.Descriptor instead. func (*StringArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{98} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{99} } func (x *StringArray) GetValues() []string { @@ -8571,7 +8651,7 @@ type TimestampArray struct { func (x *TimestampArray) Reset() { *x = TimestampArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[99] + mi := &file_mxaccess_gateway_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8583,7 +8663,7 @@ func (x *TimestampArray) String() string { func (*TimestampArray) ProtoMessage() {} func (x *TimestampArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[99] + mi := &file_mxaccess_gateway_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8596,7 +8676,7 @@ func (x *TimestampArray) ProtoReflect() protoreflect.Message { // Deprecated: Use TimestampArray.ProtoReflect.Descriptor instead. func (*TimestampArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{99} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{100} } func (x *TimestampArray) GetValues() []*timestamppb.Timestamp { @@ -8615,7 +8695,7 @@ type RawArray struct { func (x *RawArray) Reset() { *x = RawArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[100] + mi := &file_mxaccess_gateway_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8627,7 +8707,7 @@ func (x *RawArray) String() string { func (*RawArray) ProtoMessage() {} func (x *RawArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[100] + mi := &file_mxaccess_gateway_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8640,7 +8720,7 @@ func (x *RawArray) ProtoReflect() protoreflect.Message { // Deprecated: Use RawArray.ProtoReflect.Descriptor instead. func (*RawArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{100} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{101} } func (x *RawArray) GetValues() [][]byte { @@ -8660,7 +8740,7 @@ type ProtocolStatus struct { func (x *ProtocolStatus) Reset() { *x = ProtocolStatus{} - mi := &file_mxaccess_gateway_proto_msgTypes[101] + mi := &file_mxaccess_gateway_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8672,7 +8752,7 @@ func (x *ProtocolStatus) String() string { func (*ProtocolStatus) ProtoMessage() {} func (x *ProtocolStatus) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[101] + mi := &file_mxaccess_gateway_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8685,7 +8765,7 @@ func (x *ProtocolStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolStatus.ProtoReflect.Descriptor instead. func (*ProtocolStatus) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{101} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{102} } func (x *ProtocolStatus) GetCode() ProtocolStatusCode { @@ -8745,7 +8825,7 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\n" + "session_id\x18\x01 \x01(\tR\tsessionId\x122\n" + "\x15client_correlation_id\x18\x02 \x01(\tR\x13clientCorrelationId\x128\n" + - "\acommand\x18\x03 \x01(\v2\x1e.mxaccess_gateway.v1.MxCommandR\acommand\"\x8e\x1a\n" + + "\acommand\x18\x03 \x01(\v2\x1e.mxaccess_gateway.v1.MxCommandR\acommand\"\xf9\x1a\n" + "\tMxCommand\x126\n" + "\x04kind\x18\x01 \x01(\x0e2\".mxaccess_gateway.v1.MxCommandKindR\x04kind\x12B\n" + "\bregister\x18\n" + @@ -8787,7 +8867,8 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "write2Bulk\x12\\\n" + "\x12write_secured_bulk\x18) \x01(\v2,.mxaccess_gateway.v1.WriteSecuredBulkCommandH\x00R\x10writeSecuredBulk\x12_\n" + "\x13write_secured2_bulk\x18* \x01(\v2-.mxaccess_gateway.v1.WriteSecured2BulkCommandH\x00R\x11writeSecured2Bulk\x12C\n" + - "\tread_bulk\x18+ \x01(\v2$.mxaccess_gateway.v1.ReadBulkCommandH\x00R\breadBulk\x126\n" + + "\tread_bulk\x18+ \x01(\v2$.mxaccess_gateway.v1.ReadBulkCommandH\x00R\breadBulk\x12i\n" + + "\x17update_alarm_watch_list\x18, \x01(\v20.mxaccess_gateway.v1.UpdateAlarmWatchListCommandH\x00R\x14updateAlarmWatchList\x126\n" + "\x04ping\x18d \x01(\v2 .mxaccess_gateway.v1.PingCommandH\x00R\x04ping\x12Y\n" + "\x11get_session_state\x18e \x01(\v2+.mxaccess_gateway.v1.GetSessionStateCommandH\x00R\x0fgetSessionState\x12S\n" + "\x0fget_worker_info\x18f \x01(\v2).mxaccess_gateway.v1.GetWorkerInfoCommandH\x00R\rgetWorkerInfo\x12L\n" + @@ -8888,14 +8969,18 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\fitem_handles\x18\x02 \x03(\x05R\vitemHandles\"`\n" + "\x14SubscribeBulkCommand\x12#\n" + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12#\n" + - "\rtag_addresses\x18\x02 \x03(\tR\ftagAddresses\"\xa7\x02\n" + + "\rtag_addresses\x18\x02 \x03(\tR\ftagAddresses\"\xd2\x02\n" + "\x16SubscribeAlarmsCommand\x127\n" + "\x17subscription_expression\x18\x01 \x01(\tR\x16subscriptionExpression\x12G\n" + "\vforced_mode\x18\x02 \x01(\x0e2&.mxaccess_gateway.v1.AlarmProviderModeR\n" + "forcedMode\x12E\n" + "\n" + "watch_list\x18\x03 \x03(\v2&.mxaccess_gateway.v1.AlarmSubtagTargetR\twatchList\x12D\n" + - "\bfailover\x18\x04 \x01(\v2(.mxaccess_gateway.v1.AlarmFailoverConfigR\bfailover\"\x1a\n" + + "\bfailover\x18\x04 \x01(\v2(.mxaccess_gateway.v1.AlarmFailoverConfigR\bfailover\x12)\n" + + "\x10fallback_enabled\x18\x05 \x01(\bR\x0ffallbackEnabled\"d\n" + + "\x1bUpdateAlarmWatchListCommand\x12E\n" + + "\n" + + "watch_list\x18\x01 \x03(\v2&.mxaccess_gateway.v1.AlarmSubtagTargetR\twatchList\"\x1a\n" + "\x18UnsubscribeAlarmsCommand\"\x9c\x02\n" + "\x11AlarmSubtagTarget\x120\n" + "\x14alarm_full_reference\x18\x01 \x01(\tR\x12alarmFullReference\x126\n" + @@ -9292,7 +9377,7 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\x06values\x18\x01 \x03(\fR\x06values\"g\n" + "\x0eProtocolStatus\x12;\n" + "\x04code\x18\x01 \x01(\x0e2'.mxaccess_gateway.v1.ProtocolStatusCodeR\x04code\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage*\x9f\v\n" + + "\amessage\x18\x02 \x01(\tR\amessage*\xcc\v\n" + "\rMxCommandKind\x12\x1f\n" + "\x1bMX_COMMAND_KIND_UNSPECIFIED\x10\x00\x12\x1c\n" + "\x18MX_COMMAND_KIND_REGISTER\x10\x01\x12\x1e\n" + @@ -9329,7 +9414,8 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\x1bMX_COMMAND_KIND_WRITE2_BULK\x10\x1f\x12&\n" + "\"MX_COMMAND_KIND_WRITE_SECURED_BULK\x10 \x12'\n" + "#MX_COMMAND_KIND_WRITE_SECURED2_BULK\x10!\x12\x1d\n" + - "\x19MX_COMMAND_KIND_READ_BULK\x10\"\x12\x18\n" + + "\x19MX_COMMAND_KIND_READ_BULK\x10\"\x12+\n" + + "'MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST\x10#\x12\x18\n" + "\x14MX_COMMAND_KIND_PING\x10d\x12%\n" + "!MX_COMMAND_KIND_GET_SESSION_STATE\x10e\x12#\n" + "\x1fMX_COMMAND_KIND_GET_WORKER_INFO\x10f\x12 \n" + @@ -9447,7 +9533,7 @@ func file_mxaccess_gateway_proto_rawDescGZIP() []byte { } var file_mxaccess_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_mxaccess_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 102) +var file_mxaccess_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 103) var file_mxaccess_gateway_proto_goTypes = []any{ (MxCommandKind)(0), // 0: mxaccess_gateway.v1.MxCommandKind (AlarmProviderMode)(0), // 1: mxaccess_gateway.v1.AlarmProviderMode @@ -9491,85 +9577,86 @@ var file_mxaccess_gateway_proto_goTypes = []any{ (*UnAdviseItemBulkCommand)(nil), // 39: mxaccess_gateway.v1.UnAdviseItemBulkCommand (*SubscribeBulkCommand)(nil), // 40: mxaccess_gateway.v1.SubscribeBulkCommand (*SubscribeAlarmsCommand)(nil), // 41: mxaccess_gateway.v1.SubscribeAlarmsCommand - (*UnsubscribeAlarmsCommand)(nil), // 42: mxaccess_gateway.v1.UnsubscribeAlarmsCommand - (*AlarmSubtagTarget)(nil), // 43: mxaccess_gateway.v1.AlarmSubtagTarget - (*AlarmFailoverConfig)(nil), // 44: mxaccess_gateway.v1.AlarmFailoverConfig - (*AcknowledgeAlarmCommand)(nil), // 45: mxaccess_gateway.v1.AcknowledgeAlarmCommand - (*QueryActiveAlarmsCommand)(nil), // 46: mxaccess_gateway.v1.QueryActiveAlarmsCommand - (*AcknowledgeAlarmByNameCommand)(nil), // 47: mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand - (*UnsubscribeBulkCommand)(nil), // 48: mxaccess_gateway.v1.UnsubscribeBulkCommand - (*WriteBulkCommand)(nil), // 49: mxaccess_gateway.v1.WriteBulkCommand - (*WriteBulkEntry)(nil), // 50: mxaccess_gateway.v1.WriteBulkEntry - (*Write2BulkCommand)(nil), // 51: mxaccess_gateway.v1.Write2BulkCommand - (*Write2BulkEntry)(nil), // 52: mxaccess_gateway.v1.Write2BulkEntry - (*WriteSecuredBulkCommand)(nil), // 53: mxaccess_gateway.v1.WriteSecuredBulkCommand - (*WriteSecuredBulkEntry)(nil), // 54: mxaccess_gateway.v1.WriteSecuredBulkEntry - (*WriteSecured2BulkCommand)(nil), // 55: mxaccess_gateway.v1.WriteSecured2BulkCommand - (*WriteSecured2BulkEntry)(nil), // 56: mxaccess_gateway.v1.WriteSecured2BulkEntry - (*ReadBulkCommand)(nil), // 57: mxaccess_gateway.v1.ReadBulkCommand - (*PingCommand)(nil), // 58: mxaccess_gateway.v1.PingCommand - (*GetSessionStateCommand)(nil), // 59: mxaccess_gateway.v1.GetSessionStateCommand - (*GetWorkerInfoCommand)(nil), // 60: mxaccess_gateway.v1.GetWorkerInfoCommand - (*DrainEventsCommand)(nil), // 61: mxaccess_gateway.v1.DrainEventsCommand - (*ShutdownWorkerCommand)(nil), // 62: mxaccess_gateway.v1.ShutdownWorkerCommand - (*MxCommandReply)(nil), // 63: mxaccess_gateway.v1.MxCommandReply - (*RegisterReply)(nil), // 64: mxaccess_gateway.v1.RegisterReply - (*AddItemReply)(nil), // 65: mxaccess_gateway.v1.AddItemReply - (*AddItem2Reply)(nil), // 66: mxaccess_gateway.v1.AddItem2Reply - (*AddBufferedItemReply)(nil), // 67: mxaccess_gateway.v1.AddBufferedItemReply - (*SuspendReply)(nil), // 68: mxaccess_gateway.v1.SuspendReply - (*ActivateReply)(nil), // 69: mxaccess_gateway.v1.ActivateReply - (*AuthenticateUserReply)(nil), // 70: mxaccess_gateway.v1.AuthenticateUserReply - (*ArchestrAUserToIdReply)(nil), // 71: mxaccess_gateway.v1.ArchestrAUserToIdReply - (*SubscribeResult)(nil), // 72: mxaccess_gateway.v1.SubscribeResult - (*BulkSubscribeReply)(nil), // 73: mxaccess_gateway.v1.BulkSubscribeReply - (*BulkWriteResult)(nil), // 74: mxaccess_gateway.v1.BulkWriteResult - (*BulkWriteReply)(nil), // 75: mxaccess_gateway.v1.BulkWriteReply - (*BulkReadResult)(nil), // 76: mxaccess_gateway.v1.BulkReadResult - (*BulkReadReply)(nil), // 77: mxaccess_gateway.v1.BulkReadReply - (*SessionStateReply)(nil), // 78: mxaccess_gateway.v1.SessionStateReply - (*WorkerInfoReply)(nil), // 79: mxaccess_gateway.v1.WorkerInfoReply - (*DrainEventsReply)(nil), // 80: mxaccess_gateway.v1.DrainEventsReply - (*AcknowledgeAlarmReplyPayload)(nil), // 81: mxaccess_gateway.v1.AcknowledgeAlarmReplyPayload - (*QueryActiveAlarmsReplyPayload)(nil), // 82: mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload - (*MxEvent)(nil), // 83: mxaccess_gateway.v1.MxEvent - (*ReplayGap)(nil), // 84: mxaccess_gateway.v1.ReplayGap - (*OnDataChangeEvent)(nil), // 85: mxaccess_gateway.v1.OnDataChangeEvent - (*OnWriteCompleteEvent)(nil), // 86: mxaccess_gateway.v1.OnWriteCompleteEvent - (*OperationCompleteEvent)(nil), // 87: mxaccess_gateway.v1.OperationCompleteEvent - (*OnBufferedDataChangeEvent)(nil), // 88: mxaccess_gateway.v1.OnBufferedDataChangeEvent - (*OnAlarmTransitionEvent)(nil), // 89: mxaccess_gateway.v1.OnAlarmTransitionEvent - (*OnAlarmProviderModeChangedEvent)(nil), // 90: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent - (*ActiveAlarmSnapshot)(nil), // 91: mxaccess_gateway.v1.ActiveAlarmSnapshot - (*AcknowledgeAlarmRequest)(nil), // 92: mxaccess_gateway.v1.AcknowledgeAlarmRequest - (*AcknowledgeAlarmReply)(nil), // 93: mxaccess_gateway.v1.AcknowledgeAlarmReply - (*StreamAlarmsRequest)(nil), // 94: mxaccess_gateway.v1.StreamAlarmsRequest - (*AlarmFeedMessage)(nil), // 95: mxaccess_gateway.v1.AlarmFeedMessage - (*AlarmProviderStatus)(nil), // 96: mxaccess_gateway.v1.AlarmProviderStatus - (*AlarmSnapshotStatus)(nil), // 97: mxaccess_gateway.v1.AlarmSnapshotStatus - (*MxStatusProxy)(nil), // 98: mxaccess_gateway.v1.MxStatusProxy - (*MxValue)(nil), // 99: mxaccess_gateway.v1.MxValue - (*MxArray)(nil), // 100: mxaccess_gateway.v1.MxArray - (*MxSparseArray)(nil), // 101: mxaccess_gateway.v1.MxSparseArray - (*MxSparseElement)(nil), // 102: mxaccess_gateway.v1.MxSparseElement - (*BoolArray)(nil), // 103: mxaccess_gateway.v1.BoolArray - (*Int32Array)(nil), // 104: mxaccess_gateway.v1.Int32Array - (*Int64Array)(nil), // 105: mxaccess_gateway.v1.Int64Array - (*FloatArray)(nil), // 106: mxaccess_gateway.v1.FloatArray - (*DoubleArray)(nil), // 107: mxaccess_gateway.v1.DoubleArray - (*StringArray)(nil), // 108: mxaccess_gateway.v1.StringArray - (*TimestampArray)(nil), // 109: mxaccess_gateway.v1.TimestampArray - (*RawArray)(nil), // 110: mxaccess_gateway.v1.RawArray - (*ProtocolStatus)(nil), // 111: mxaccess_gateway.v1.ProtocolStatus - (*durationpb.Duration)(nil), // 112: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 113: google.protobuf.Timestamp + (*UpdateAlarmWatchListCommand)(nil), // 42: mxaccess_gateway.v1.UpdateAlarmWatchListCommand + (*UnsubscribeAlarmsCommand)(nil), // 43: mxaccess_gateway.v1.UnsubscribeAlarmsCommand + (*AlarmSubtagTarget)(nil), // 44: mxaccess_gateway.v1.AlarmSubtagTarget + (*AlarmFailoverConfig)(nil), // 45: mxaccess_gateway.v1.AlarmFailoverConfig + (*AcknowledgeAlarmCommand)(nil), // 46: mxaccess_gateway.v1.AcknowledgeAlarmCommand + (*QueryActiveAlarmsCommand)(nil), // 47: mxaccess_gateway.v1.QueryActiveAlarmsCommand + (*AcknowledgeAlarmByNameCommand)(nil), // 48: mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand + (*UnsubscribeBulkCommand)(nil), // 49: mxaccess_gateway.v1.UnsubscribeBulkCommand + (*WriteBulkCommand)(nil), // 50: mxaccess_gateway.v1.WriteBulkCommand + (*WriteBulkEntry)(nil), // 51: mxaccess_gateway.v1.WriteBulkEntry + (*Write2BulkCommand)(nil), // 52: mxaccess_gateway.v1.Write2BulkCommand + (*Write2BulkEntry)(nil), // 53: mxaccess_gateway.v1.Write2BulkEntry + (*WriteSecuredBulkCommand)(nil), // 54: mxaccess_gateway.v1.WriteSecuredBulkCommand + (*WriteSecuredBulkEntry)(nil), // 55: mxaccess_gateway.v1.WriteSecuredBulkEntry + (*WriteSecured2BulkCommand)(nil), // 56: mxaccess_gateway.v1.WriteSecured2BulkCommand + (*WriteSecured2BulkEntry)(nil), // 57: mxaccess_gateway.v1.WriteSecured2BulkEntry + (*ReadBulkCommand)(nil), // 58: mxaccess_gateway.v1.ReadBulkCommand + (*PingCommand)(nil), // 59: mxaccess_gateway.v1.PingCommand + (*GetSessionStateCommand)(nil), // 60: mxaccess_gateway.v1.GetSessionStateCommand + (*GetWorkerInfoCommand)(nil), // 61: mxaccess_gateway.v1.GetWorkerInfoCommand + (*DrainEventsCommand)(nil), // 62: mxaccess_gateway.v1.DrainEventsCommand + (*ShutdownWorkerCommand)(nil), // 63: mxaccess_gateway.v1.ShutdownWorkerCommand + (*MxCommandReply)(nil), // 64: mxaccess_gateway.v1.MxCommandReply + (*RegisterReply)(nil), // 65: mxaccess_gateway.v1.RegisterReply + (*AddItemReply)(nil), // 66: mxaccess_gateway.v1.AddItemReply + (*AddItem2Reply)(nil), // 67: mxaccess_gateway.v1.AddItem2Reply + (*AddBufferedItemReply)(nil), // 68: mxaccess_gateway.v1.AddBufferedItemReply + (*SuspendReply)(nil), // 69: mxaccess_gateway.v1.SuspendReply + (*ActivateReply)(nil), // 70: mxaccess_gateway.v1.ActivateReply + (*AuthenticateUserReply)(nil), // 71: mxaccess_gateway.v1.AuthenticateUserReply + (*ArchestrAUserToIdReply)(nil), // 72: mxaccess_gateway.v1.ArchestrAUserToIdReply + (*SubscribeResult)(nil), // 73: mxaccess_gateway.v1.SubscribeResult + (*BulkSubscribeReply)(nil), // 74: mxaccess_gateway.v1.BulkSubscribeReply + (*BulkWriteResult)(nil), // 75: mxaccess_gateway.v1.BulkWriteResult + (*BulkWriteReply)(nil), // 76: mxaccess_gateway.v1.BulkWriteReply + (*BulkReadResult)(nil), // 77: mxaccess_gateway.v1.BulkReadResult + (*BulkReadReply)(nil), // 78: mxaccess_gateway.v1.BulkReadReply + (*SessionStateReply)(nil), // 79: mxaccess_gateway.v1.SessionStateReply + (*WorkerInfoReply)(nil), // 80: mxaccess_gateway.v1.WorkerInfoReply + (*DrainEventsReply)(nil), // 81: mxaccess_gateway.v1.DrainEventsReply + (*AcknowledgeAlarmReplyPayload)(nil), // 82: mxaccess_gateway.v1.AcknowledgeAlarmReplyPayload + (*QueryActiveAlarmsReplyPayload)(nil), // 83: mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload + (*MxEvent)(nil), // 84: mxaccess_gateway.v1.MxEvent + (*ReplayGap)(nil), // 85: mxaccess_gateway.v1.ReplayGap + (*OnDataChangeEvent)(nil), // 86: mxaccess_gateway.v1.OnDataChangeEvent + (*OnWriteCompleteEvent)(nil), // 87: mxaccess_gateway.v1.OnWriteCompleteEvent + (*OperationCompleteEvent)(nil), // 88: mxaccess_gateway.v1.OperationCompleteEvent + (*OnBufferedDataChangeEvent)(nil), // 89: mxaccess_gateway.v1.OnBufferedDataChangeEvent + (*OnAlarmTransitionEvent)(nil), // 90: mxaccess_gateway.v1.OnAlarmTransitionEvent + (*OnAlarmProviderModeChangedEvent)(nil), // 91: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent + (*ActiveAlarmSnapshot)(nil), // 92: mxaccess_gateway.v1.ActiveAlarmSnapshot + (*AcknowledgeAlarmRequest)(nil), // 93: mxaccess_gateway.v1.AcknowledgeAlarmRequest + (*AcknowledgeAlarmReply)(nil), // 94: mxaccess_gateway.v1.AcknowledgeAlarmReply + (*StreamAlarmsRequest)(nil), // 95: mxaccess_gateway.v1.StreamAlarmsRequest + (*AlarmFeedMessage)(nil), // 96: mxaccess_gateway.v1.AlarmFeedMessage + (*AlarmProviderStatus)(nil), // 97: mxaccess_gateway.v1.AlarmProviderStatus + (*AlarmSnapshotStatus)(nil), // 98: mxaccess_gateway.v1.AlarmSnapshotStatus + (*MxStatusProxy)(nil), // 99: mxaccess_gateway.v1.MxStatusProxy + (*MxValue)(nil), // 100: mxaccess_gateway.v1.MxValue + (*MxArray)(nil), // 101: mxaccess_gateway.v1.MxArray + (*MxSparseArray)(nil), // 102: mxaccess_gateway.v1.MxSparseArray + (*MxSparseElement)(nil), // 103: mxaccess_gateway.v1.MxSparseElement + (*BoolArray)(nil), // 104: mxaccess_gateway.v1.BoolArray + (*Int32Array)(nil), // 105: mxaccess_gateway.v1.Int32Array + (*Int64Array)(nil), // 106: mxaccess_gateway.v1.Int64Array + (*FloatArray)(nil), // 107: mxaccess_gateway.v1.FloatArray + (*DoubleArray)(nil), // 108: mxaccess_gateway.v1.DoubleArray + (*StringArray)(nil), // 109: mxaccess_gateway.v1.StringArray + (*TimestampArray)(nil), // 110: mxaccess_gateway.v1.TimestampArray + (*RawArray)(nil), // 111: mxaccess_gateway.v1.RawArray + (*ProtocolStatus)(nil), // 112: mxaccess_gateway.v1.ProtocolStatus + (*durationpb.Duration)(nil), // 113: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 114: google.protobuf.Timestamp } var file_mxaccess_gateway_proto_depIdxs = []int32{ - 112, // 0: mxaccess_gateway.v1.OpenSessionRequest.command_timeout:type_name -> google.protobuf.Duration - 112, // 1: mxaccess_gateway.v1.OpenSessionReply.default_command_timeout:type_name -> google.protobuf.Duration - 111, // 2: mxaccess_gateway.v1.OpenSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 113, // 0: mxaccess_gateway.v1.OpenSessionRequest.command_timeout:type_name -> google.protobuf.Duration + 113, // 1: mxaccess_gateway.v1.OpenSessionReply.default_command_timeout:type_name -> google.protobuf.Duration + 112, // 2: mxaccess_gateway.v1.OpenSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus 9, // 3: mxaccess_gateway.v1.CloseSessionReply.final_state:type_name -> mxaccess_gateway.v1.SessionState - 111, // 4: mxaccess_gateway.v1.CloseSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 112, // 4: mxaccess_gateway.v1.CloseSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus 17, // 5: mxaccess_gateway.v1.MxCommandRequest.command:type_name -> mxaccess_gateway.v1.MxCommand 0, // 6: mxaccess_gateway.v1.MxCommand.kind:type_name -> mxaccess_gateway.v1.MxCommandKind 18, // 7: mxaccess_gateway.v1.MxCommand.register:type_name -> mxaccess_gateway.v1.RegisterCommand @@ -9595,159 +9682,161 @@ var file_mxaccess_gateway_proto_depIdxs = []int32{ 38, // 27: mxaccess_gateway.v1.MxCommand.remove_item_bulk:type_name -> mxaccess_gateway.v1.RemoveItemBulkCommand 39, // 28: mxaccess_gateway.v1.MxCommand.un_advise_item_bulk:type_name -> mxaccess_gateway.v1.UnAdviseItemBulkCommand 40, // 29: mxaccess_gateway.v1.MxCommand.subscribe_bulk:type_name -> mxaccess_gateway.v1.SubscribeBulkCommand - 48, // 30: mxaccess_gateway.v1.MxCommand.unsubscribe_bulk:type_name -> mxaccess_gateway.v1.UnsubscribeBulkCommand + 49, // 30: mxaccess_gateway.v1.MxCommand.unsubscribe_bulk:type_name -> mxaccess_gateway.v1.UnsubscribeBulkCommand 41, // 31: mxaccess_gateway.v1.MxCommand.subscribe_alarms:type_name -> mxaccess_gateway.v1.SubscribeAlarmsCommand - 42, // 32: mxaccess_gateway.v1.MxCommand.unsubscribe_alarms:type_name -> mxaccess_gateway.v1.UnsubscribeAlarmsCommand - 45, // 33: mxaccess_gateway.v1.MxCommand.acknowledge_alarm_command:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmCommand - 46, // 34: mxaccess_gateway.v1.MxCommand.query_active_alarms_command:type_name -> mxaccess_gateway.v1.QueryActiveAlarmsCommand - 47, // 35: mxaccess_gateway.v1.MxCommand.acknowledge_alarm_by_name_command:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand - 49, // 36: mxaccess_gateway.v1.MxCommand.write_bulk:type_name -> mxaccess_gateway.v1.WriteBulkCommand - 51, // 37: mxaccess_gateway.v1.MxCommand.write2_bulk:type_name -> mxaccess_gateway.v1.Write2BulkCommand - 53, // 38: mxaccess_gateway.v1.MxCommand.write_secured_bulk:type_name -> mxaccess_gateway.v1.WriteSecuredBulkCommand - 55, // 39: mxaccess_gateway.v1.MxCommand.write_secured2_bulk:type_name -> mxaccess_gateway.v1.WriteSecured2BulkCommand - 57, // 40: mxaccess_gateway.v1.MxCommand.read_bulk:type_name -> mxaccess_gateway.v1.ReadBulkCommand - 58, // 41: mxaccess_gateway.v1.MxCommand.ping:type_name -> mxaccess_gateway.v1.PingCommand - 59, // 42: mxaccess_gateway.v1.MxCommand.get_session_state:type_name -> mxaccess_gateway.v1.GetSessionStateCommand - 60, // 43: mxaccess_gateway.v1.MxCommand.get_worker_info:type_name -> mxaccess_gateway.v1.GetWorkerInfoCommand - 61, // 44: mxaccess_gateway.v1.MxCommand.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsCommand - 62, // 45: mxaccess_gateway.v1.MxCommand.shutdown_worker:type_name -> mxaccess_gateway.v1.ShutdownWorkerCommand - 99, // 46: mxaccess_gateway.v1.WriteCommand.value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 47: mxaccess_gateway.v1.Write2Command.value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 48: mxaccess_gateway.v1.Write2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 49: mxaccess_gateway.v1.WriteSecuredCommand.value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 50: mxaccess_gateway.v1.WriteSecured2Command.value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 51: mxaccess_gateway.v1.WriteSecured2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue - 1, // 52: mxaccess_gateway.v1.SubscribeAlarmsCommand.forced_mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode - 43, // 53: mxaccess_gateway.v1.SubscribeAlarmsCommand.watch_list:type_name -> mxaccess_gateway.v1.AlarmSubtagTarget - 44, // 54: mxaccess_gateway.v1.SubscribeAlarmsCommand.failover:type_name -> mxaccess_gateway.v1.AlarmFailoverConfig - 50, // 55: mxaccess_gateway.v1.WriteBulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteBulkEntry - 99, // 56: mxaccess_gateway.v1.WriteBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue - 52, // 57: mxaccess_gateway.v1.Write2BulkCommand.entries:type_name -> mxaccess_gateway.v1.Write2BulkEntry - 99, // 58: mxaccess_gateway.v1.Write2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 59: mxaccess_gateway.v1.Write2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue - 54, // 60: mxaccess_gateway.v1.WriteSecuredBulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteSecuredBulkEntry - 99, // 61: mxaccess_gateway.v1.WriteSecuredBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue - 56, // 62: mxaccess_gateway.v1.WriteSecured2BulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteSecured2BulkEntry - 99, // 63: mxaccess_gateway.v1.WriteSecured2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 64: mxaccess_gateway.v1.WriteSecured2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue - 112, // 65: mxaccess_gateway.v1.ShutdownWorkerCommand.grace_period:type_name -> google.protobuf.Duration - 0, // 66: mxaccess_gateway.v1.MxCommandReply.kind:type_name -> mxaccess_gateway.v1.MxCommandKind - 111, // 67: mxaccess_gateway.v1.MxCommandReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus - 99, // 68: mxaccess_gateway.v1.MxCommandReply.return_value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 69: mxaccess_gateway.v1.MxCommandReply.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy - 64, // 70: mxaccess_gateway.v1.MxCommandReply.register:type_name -> mxaccess_gateway.v1.RegisterReply - 65, // 71: mxaccess_gateway.v1.MxCommandReply.add_item:type_name -> mxaccess_gateway.v1.AddItemReply - 66, // 72: mxaccess_gateway.v1.MxCommandReply.add_item2:type_name -> mxaccess_gateway.v1.AddItem2Reply - 67, // 73: mxaccess_gateway.v1.MxCommandReply.add_buffered_item:type_name -> mxaccess_gateway.v1.AddBufferedItemReply - 68, // 74: mxaccess_gateway.v1.MxCommandReply.suspend:type_name -> mxaccess_gateway.v1.SuspendReply - 69, // 75: mxaccess_gateway.v1.MxCommandReply.activate:type_name -> mxaccess_gateway.v1.ActivateReply - 70, // 76: mxaccess_gateway.v1.MxCommandReply.authenticate_user:type_name -> mxaccess_gateway.v1.AuthenticateUserReply - 71, // 77: mxaccess_gateway.v1.MxCommandReply.archestra_user_to_id:type_name -> mxaccess_gateway.v1.ArchestrAUserToIdReply - 73, // 78: mxaccess_gateway.v1.MxCommandReply.add_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 73, // 79: mxaccess_gateway.v1.MxCommandReply.advise_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 73, // 80: mxaccess_gateway.v1.MxCommandReply.remove_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 73, // 81: mxaccess_gateway.v1.MxCommandReply.un_advise_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 73, // 82: mxaccess_gateway.v1.MxCommandReply.subscribe_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 73, // 83: mxaccess_gateway.v1.MxCommandReply.unsubscribe_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 81, // 84: mxaccess_gateway.v1.MxCommandReply.acknowledge_alarm:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmReplyPayload - 82, // 85: mxaccess_gateway.v1.MxCommandReply.query_active_alarms:type_name -> mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload - 75, // 86: mxaccess_gateway.v1.MxCommandReply.write_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply - 75, // 87: mxaccess_gateway.v1.MxCommandReply.write2_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply - 75, // 88: mxaccess_gateway.v1.MxCommandReply.write_secured_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply - 75, // 89: mxaccess_gateway.v1.MxCommandReply.write_secured2_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply - 77, // 90: mxaccess_gateway.v1.MxCommandReply.read_bulk:type_name -> mxaccess_gateway.v1.BulkReadReply - 78, // 91: mxaccess_gateway.v1.MxCommandReply.session_state:type_name -> mxaccess_gateway.v1.SessionStateReply - 79, // 92: mxaccess_gateway.v1.MxCommandReply.worker_info:type_name -> mxaccess_gateway.v1.WorkerInfoReply - 80, // 93: mxaccess_gateway.v1.MxCommandReply.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsReply - 98, // 94: mxaccess_gateway.v1.SuspendReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy - 98, // 95: mxaccess_gateway.v1.ActivateReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy - 72, // 96: mxaccess_gateway.v1.BulkSubscribeReply.results:type_name -> mxaccess_gateway.v1.SubscribeResult - 98, // 97: mxaccess_gateway.v1.BulkWriteResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy - 74, // 98: mxaccess_gateway.v1.BulkWriteReply.results:type_name -> mxaccess_gateway.v1.BulkWriteResult - 99, // 99: mxaccess_gateway.v1.BulkReadResult.value:type_name -> mxaccess_gateway.v1.MxValue - 113, // 100: mxaccess_gateway.v1.BulkReadResult.source_timestamp:type_name -> google.protobuf.Timestamp - 98, // 101: mxaccess_gateway.v1.BulkReadResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy - 76, // 102: mxaccess_gateway.v1.BulkReadReply.results:type_name -> mxaccess_gateway.v1.BulkReadResult - 9, // 103: mxaccess_gateway.v1.SessionStateReply.state:type_name -> mxaccess_gateway.v1.SessionState - 83, // 104: mxaccess_gateway.v1.DrainEventsReply.events:type_name -> mxaccess_gateway.v1.MxEvent - 91, // 105: mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload.snapshots:type_name -> mxaccess_gateway.v1.ActiveAlarmSnapshot - 2, // 106: mxaccess_gateway.v1.MxEvent.family:type_name -> mxaccess_gateway.v1.MxEventFamily - 99, // 107: mxaccess_gateway.v1.MxEvent.value:type_name -> mxaccess_gateway.v1.MxValue - 113, // 108: mxaccess_gateway.v1.MxEvent.source_timestamp:type_name -> google.protobuf.Timestamp - 98, // 109: mxaccess_gateway.v1.MxEvent.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy - 113, // 110: mxaccess_gateway.v1.MxEvent.worker_timestamp:type_name -> google.protobuf.Timestamp - 113, // 111: mxaccess_gateway.v1.MxEvent.gateway_receive_timestamp:type_name -> google.protobuf.Timestamp - 84, // 112: mxaccess_gateway.v1.MxEvent.replay_gap:type_name -> mxaccess_gateway.v1.ReplayGap - 85, // 113: mxaccess_gateway.v1.MxEvent.on_data_change:type_name -> mxaccess_gateway.v1.OnDataChangeEvent - 86, // 114: mxaccess_gateway.v1.MxEvent.on_write_complete:type_name -> mxaccess_gateway.v1.OnWriteCompleteEvent - 87, // 115: mxaccess_gateway.v1.MxEvent.operation_complete:type_name -> mxaccess_gateway.v1.OperationCompleteEvent - 88, // 116: mxaccess_gateway.v1.MxEvent.on_buffered_data_change:type_name -> mxaccess_gateway.v1.OnBufferedDataChangeEvent - 89, // 117: mxaccess_gateway.v1.MxEvent.on_alarm_transition:type_name -> mxaccess_gateway.v1.OnAlarmTransitionEvent - 90, // 118: mxaccess_gateway.v1.MxEvent.on_alarm_provider_mode_changed:type_name -> mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent - 7, // 119: mxaccess_gateway.v1.OnBufferedDataChangeEvent.data_type:type_name -> mxaccess_gateway.v1.MxDataType - 100, // 120: mxaccess_gateway.v1.OnBufferedDataChangeEvent.quality_values:type_name -> mxaccess_gateway.v1.MxArray - 100, // 121: mxaccess_gateway.v1.OnBufferedDataChangeEvent.timestamp_values:type_name -> mxaccess_gateway.v1.MxArray - 3, // 122: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_kind:type_name -> mxaccess_gateway.v1.AlarmTransitionKind - 113, // 123: mxaccess_gateway.v1.OnAlarmTransitionEvent.original_raise_timestamp:type_name -> google.protobuf.Timestamp - 113, // 124: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_timestamp:type_name -> google.protobuf.Timestamp - 99, // 125: mxaccess_gateway.v1.OnAlarmTransitionEvent.current_value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 126: mxaccess_gateway.v1.OnAlarmTransitionEvent.limit_value:type_name -> mxaccess_gateway.v1.MxValue - 1, // 127: mxaccess_gateway.v1.OnAlarmTransitionEvent.source_provider:type_name -> mxaccess_gateway.v1.AlarmProviderMode - 1, // 128: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent.mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode - 113, // 129: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent.at:type_name -> google.protobuf.Timestamp - 113, // 130: mxaccess_gateway.v1.ActiveAlarmSnapshot.original_raise_timestamp:type_name -> google.protobuf.Timestamp - 4, // 131: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_state:type_name -> mxaccess_gateway.v1.AlarmConditionState - 113, // 132: mxaccess_gateway.v1.ActiveAlarmSnapshot.last_transition_timestamp:type_name -> google.protobuf.Timestamp - 99, // 133: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_value:type_name -> mxaccess_gateway.v1.MxValue - 99, // 134: mxaccess_gateway.v1.ActiveAlarmSnapshot.limit_value:type_name -> mxaccess_gateway.v1.MxValue - 1, // 135: mxaccess_gateway.v1.ActiveAlarmSnapshot.source_provider:type_name -> mxaccess_gateway.v1.AlarmProviderMode - 111, // 136: mxaccess_gateway.v1.AcknowledgeAlarmReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus - 98, // 137: mxaccess_gateway.v1.AcknowledgeAlarmReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy - 91, // 138: mxaccess_gateway.v1.AlarmFeedMessage.active_alarm:type_name -> mxaccess_gateway.v1.ActiveAlarmSnapshot - 89, // 139: mxaccess_gateway.v1.AlarmFeedMessage.transition:type_name -> mxaccess_gateway.v1.OnAlarmTransitionEvent - 96, // 140: mxaccess_gateway.v1.AlarmFeedMessage.provider_status:type_name -> mxaccess_gateway.v1.AlarmProviderStatus - 97, // 141: mxaccess_gateway.v1.AlarmFeedMessage.snapshot_status:type_name -> mxaccess_gateway.v1.AlarmSnapshotStatus - 1, // 142: mxaccess_gateway.v1.AlarmProviderStatus.mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode - 113, // 143: mxaccess_gateway.v1.AlarmProviderStatus.since:type_name -> google.protobuf.Timestamp - 5, // 144: mxaccess_gateway.v1.MxStatusProxy.category:type_name -> mxaccess_gateway.v1.MxStatusCategory - 6, // 145: mxaccess_gateway.v1.MxStatusProxy.detected_by:type_name -> mxaccess_gateway.v1.MxStatusSource - 7, // 146: mxaccess_gateway.v1.MxValue.data_type:type_name -> mxaccess_gateway.v1.MxDataType - 113, // 147: mxaccess_gateway.v1.MxValue.timestamp_value:type_name -> google.protobuf.Timestamp - 100, // 148: mxaccess_gateway.v1.MxValue.array_value:type_name -> mxaccess_gateway.v1.MxArray - 101, // 149: mxaccess_gateway.v1.MxValue.sparse_array_value:type_name -> mxaccess_gateway.v1.MxSparseArray - 7, // 150: mxaccess_gateway.v1.MxArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType - 103, // 151: mxaccess_gateway.v1.MxArray.bool_values:type_name -> mxaccess_gateway.v1.BoolArray - 104, // 152: mxaccess_gateway.v1.MxArray.int32_values:type_name -> mxaccess_gateway.v1.Int32Array - 105, // 153: mxaccess_gateway.v1.MxArray.int64_values:type_name -> mxaccess_gateway.v1.Int64Array - 106, // 154: mxaccess_gateway.v1.MxArray.float_values:type_name -> mxaccess_gateway.v1.FloatArray - 107, // 155: mxaccess_gateway.v1.MxArray.double_values:type_name -> mxaccess_gateway.v1.DoubleArray - 108, // 156: mxaccess_gateway.v1.MxArray.string_values:type_name -> mxaccess_gateway.v1.StringArray - 109, // 157: mxaccess_gateway.v1.MxArray.timestamp_values:type_name -> mxaccess_gateway.v1.TimestampArray - 110, // 158: mxaccess_gateway.v1.MxArray.raw_values:type_name -> mxaccess_gateway.v1.RawArray - 7, // 159: mxaccess_gateway.v1.MxSparseArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType - 102, // 160: mxaccess_gateway.v1.MxSparseArray.elements:type_name -> mxaccess_gateway.v1.MxSparseElement - 99, // 161: mxaccess_gateway.v1.MxSparseElement.value:type_name -> mxaccess_gateway.v1.MxValue - 113, // 162: mxaccess_gateway.v1.TimestampArray.values:type_name -> google.protobuf.Timestamp - 8, // 163: mxaccess_gateway.v1.ProtocolStatus.code:type_name -> mxaccess_gateway.v1.ProtocolStatusCode - 11, // 164: mxaccess_gateway.v1.MxAccessGateway.OpenSession:input_type -> mxaccess_gateway.v1.OpenSessionRequest - 13, // 165: mxaccess_gateway.v1.MxAccessGateway.CloseSession:input_type -> mxaccess_gateway.v1.CloseSessionRequest - 16, // 166: mxaccess_gateway.v1.MxAccessGateway.Invoke:input_type -> mxaccess_gateway.v1.MxCommandRequest - 15, // 167: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:input_type -> mxaccess_gateway.v1.StreamEventsRequest - 92, // 168: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:input_type -> mxaccess_gateway.v1.AcknowledgeAlarmRequest - 94, // 169: mxaccess_gateway.v1.MxAccessGateway.StreamAlarms:input_type -> mxaccess_gateway.v1.StreamAlarmsRequest - 10, // 170: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:input_type -> mxaccess_gateway.v1.QueryActiveAlarmsRequest - 12, // 171: mxaccess_gateway.v1.MxAccessGateway.OpenSession:output_type -> mxaccess_gateway.v1.OpenSessionReply - 14, // 172: mxaccess_gateway.v1.MxAccessGateway.CloseSession:output_type -> mxaccess_gateway.v1.CloseSessionReply - 63, // 173: mxaccess_gateway.v1.MxAccessGateway.Invoke:output_type -> mxaccess_gateway.v1.MxCommandReply - 83, // 174: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:output_type -> mxaccess_gateway.v1.MxEvent - 93, // 175: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:output_type -> mxaccess_gateway.v1.AcknowledgeAlarmReply - 95, // 176: mxaccess_gateway.v1.MxAccessGateway.StreamAlarms:output_type -> mxaccess_gateway.v1.AlarmFeedMessage - 91, // 177: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:output_type -> mxaccess_gateway.v1.ActiveAlarmSnapshot - 171, // [171:178] is the sub-list for method output_type - 164, // [164:171] is the sub-list for method input_type - 164, // [164:164] is the sub-list for extension type_name - 164, // [164:164] is the sub-list for extension extendee - 0, // [0:164] is the sub-list for field type_name + 43, // 32: mxaccess_gateway.v1.MxCommand.unsubscribe_alarms:type_name -> mxaccess_gateway.v1.UnsubscribeAlarmsCommand + 46, // 33: mxaccess_gateway.v1.MxCommand.acknowledge_alarm_command:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmCommand + 47, // 34: mxaccess_gateway.v1.MxCommand.query_active_alarms_command:type_name -> mxaccess_gateway.v1.QueryActiveAlarmsCommand + 48, // 35: mxaccess_gateway.v1.MxCommand.acknowledge_alarm_by_name_command:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand + 50, // 36: mxaccess_gateway.v1.MxCommand.write_bulk:type_name -> mxaccess_gateway.v1.WriteBulkCommand + 52, // 37: mxaccess_gateway.v1.MxCommand.write2_bulk:type_name -> mxaccess_gateway.v1.Write2BulkCommand + 54, // 38: mxaccess_gateway.v1.MxCommand.write_secured_bulk:type_name -> mxaccess_gateway.v1.WriteSecuredBulkCommand + 56, // 39: mxaccess_gateway.v1.MxCommand.write_secured2_bulk:type_name -> mxaccess_gateway.v1.WriteSecured2BulkCommand + 58, // 40: mxaccess_gateway.v1.MxCommand.read_bulk:type_name -> mxaccess_gateway.v1.ReadBulkCommand + 42, // 41: mxaccess_gateway.v1.MxCommand.update_alarm_watch_list:type_name -> mxaccess_gateway.v1.UpdateAlarmWatchListCommand + 59, // 42: mxaccess_gateway.v1.MxCommand.ping:type_name -> mxaccess_gateway.v1.PingCommand + 60, // 43: mxaccess_gateway.v1.MxCommand.get_session_state:type_name -> mxaccess_gateway.v1.GetSessionStateCommand + 61, // 44: mxaccess_gateway.v1.MxCommand.get_worker_info:type_name -> mxaccess_gateway.v1.GetWorkerInfoCommand + 62, // 45: mxaccess_gateway.v1.MxCommand.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsCommand + 63, // 46: mxaccess_gateway.v1.MxCommand.shutdown_worker:type_name -> mxaccess_gateway.v1.ShutdownWorkerCommand + 100, // 47: mxaccess_gateway.v1.WriteCommand.value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 48: mxaccess_gateway.v1.Write2Command.value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 49: mxaccess_gateway.v1.Write2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 50: mxaccess_gateway.v1.WriteSecuredCommand.value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 51: mxaccess_gateway.v1.WriteSecured2Command.value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 52: mxaccess_gateway.v1.WriteSecured2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 1, // 53: mxaccess_gateway.v1.SubscribeAlarmsCommand.forced_mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode + 44, // 54: mxaccess_gateway.v1.SubscribeAlarmsCommand.watch_list:type_name -> mxaccess_gateway.v1.AlarmSubtagTarget + 45, // 55: mxaccess_gateway.v1.SubscribeAlarmsCommand.failover:type_name -> mxaccess_gateway.v1.AlarmFailoverConfig + 44, // 56: mxaccess_gateway.v1.UpdateAlarmWatchListCommand.watch_list:type_name -> mxaccess_gateway.v1.AlarmSubtagTarget + 51, // 57: mxaccess_gateway.v1.WriteBulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteBulkEntry + 100, // 58: mxaccess_gateway.v1.WriteBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 53, // 59: mxaccess_gateway.v1.Write2BulkCommand.entries:type_name -> mxaccess_gateway.v1.Write2BulkEntry + 100, // 60: mxaccess_gateway.v1.Write2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 61: mxaccess_gateway.v1.Write2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 55, // 62: mxaccess_gateway.v1.WriteSecuredBulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteSecuredBulkEntry + 100, // 63: mxaccess_gateway.v1.WriteSecuredBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 57, // 64: mxaccess_gateway.v1.WriteSecured2BulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteSecured2BulkEntry + 100, // 65: mxaccess_gateway.v1.WriteSecured2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 66: mxaccess_gateway.v1.WriteSecured2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 113, // 67: mxaccess_gateway.v1.ShutdownWorkerCommand.grace_period:type_name -> google.protobuf.Duration + 0, // 68: mxaccess_gateway.v1.MxCommandReply.kind:type_name -> mxaccess_gateway.v1.MxCommandKind + 112, // 69: mxaccess_gateway.v1.MxCommandReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 100, // 70: mxaccess_gateway.v1.MxCommandReply.return_value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 71: mxaccess_gateway.v1.MxCommandReply.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 65, // 72: mxaccess_gateway.v1.MxCommandReply.register:type_name -> mxaccess_gateway.v1.RegisterReply + 66, // 73: mxaccess_gateway.v1.MxCommandReply.add_item:type_name -> mxaccess_gateway.v1.AddItemReply + 67, // 74: mxaccess_gateway.v1.MxCommandReply.add_item2:type_name -> mxaccess_gateway.v1.AddItem2Reply + 68, // 75: mxaccess_gateway.v1.MxCommandReply.add_buffered_item:type_name -> mxaccess_gateway.v1.AddBufferedItemReply + 69, // 76: mxaccess_gateway.v1.MxCommandReply.suspend:type_name -> mxaccess_gateway.v1.SuspendReply + 70, // 77: mxaccess_gateway.v1.MxCommandReply.activate:type_name -> mxaccess_gateway.v1.ActivateReply + 71, // 78: mxaccess_gateway.v1.MxCommandReply.authenticate_user:type_name -> mxaccess_gateway.v1.AuthenticateUserReply + 72, // 79: mxaccess_gateway.v1.MxCommandReply.archestra_user_to_id:type_name -> mxaccess_gateway.v1.ArchestrAUserToIdReply + 74, // 80: mxaccess_gateway.v1.MxCommandReply.add_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 74, // 81: mxaccess_gateway.v1.MxCommandReply.advise_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 74, // 82: mxaccess_gateway.v1.MxCommandReply.remove_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 74, // 83: mxaccess_gateway.v1.MxCommandReply.un_advise_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 74, // 84: mxaccess_gateway.v1.MxCommandReply.subscribe_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 74, // 85: mxaccess_gateway.v1.MxCommandReply.unsubscribe_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 82, // 86: mxaccess_gateway.v1.MxCommandReply.acknowledge_alarm:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmReplyPayload + 83, // 87: mxaccess_gateway.v1.MxCommandReply.query_active_alarms:type_name -> mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload + 76, // 88: mxaccess_gateway.v1.MxCommandReply.write_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply + 76, // 89: mxaccess_gateway.v1.MxCommandReply.write2_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply + 76, // 90: mxaccess_gateway.v1.MxCommandReply.write_secured_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply + 76, // 91: mxaccess_gateway.v1.MxCommandReply.write_secured2_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply + 78, // 92: mxaccess_gateway.v1.MxCommandReply.read_bulk:type_name -> mxaccess_gateway.v1.BulkReadReply + 79, // 93: mxaccess_gateway.v1.MxCommandReply.session_state:type_name -> mxaccess_gateway.v1.SessionStateReply + 80, // 94: mxaccess_gateway.v1.MxCommandReply.worker_info:type_name -> mxaccess_gateway.v1.WorkerInfoReply + 81, // 95: mxaccess_gateway.v1.MxCommandReply.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsReply + 99, // 96: mxaccess_gateway.v1.SuspendReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 99, // 97: mxaccess_gateway.v1.ActivateReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 73, // 98: mxaccess_gateway.v1.BulkSubscribeReply.results:type_name -> mxaccess_gateway.v1.SubscribeResult + 99, // 99: mxaccess_gateway.v1.BulkWriteResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 75, // 100: mxaccess_gateway.v1.BulkWriteReply.results:type_name -> mxaccess_gateway.v1.BulkWriteResult + 100, // 101: mxaccess_gateway.v1.BulkReadResult.value:type_name -> mxaccess_gateway.v1.MxValue + 114, // 102: mxaccess_gateway.v1.BulkReadResult.source_timestamp:type_name -> google.protobuf.Timestamp + 99, // 103: mxaccess_gateway.v1.BulkReadResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 77, // 104: mxaccess_gateway.v1.BulkReadReply.results:type_name -> mxaccess_gateway.v1.BulkReadResult + 9, // 105: mxaccess_gateway.v1.SessionStateReply.state:type_name -> mxaccess_gateway.v1.SessionState + 84, // 106: mxaccess_gateway.v1.DrainEventsReply.events:type_name -> mxaccess_gateway.v1.MxEvent + 92, // 107: mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload.snapshots:type_name -> mxaccess_gateway.v1.ActiveAlarmSnapshot + 2, // 108: mxaccess_gateway.v1.MxEvent.family:type_name -> mxaccess_gateway.v1.MxEventFamily + 100, // 109: mxaccess_gateway.v1.MxEvent.value:type_name -> mxaccess_gateway.v1.MxValue + 114, // 110: mxaccess_gateway.v1.MxEvent.source_timestamp:type_name -> google.protobuf.Timestamp + 99, // 111: mxaccess_gateway.v1.MxEvent.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 114, // 112: mxaccess_gateway.v1.MxEvent.worker_timestamp:type_name -> google.protobuf.Timestamp + 114, // 113: mxaccess_gateway.v1.MxEvent.gateway_receive_timestamp:type_name -> google.protobuf.Timestamp + 85, // 114: mxaccess_gateway.v1.MxEvent.replay_gap:type_name -> mxaccess_gateway.v1.ReplayGap + 86, // 115: mxaccess_gateway.v1.MxEvent.on_data_change:type_name -> mxaccess_gateway.v1.OnDataChangeEvent + 87, // 116: mxaccess_gateway.v1.MxEvent.on_write_complete:type_name -> mxaccess_gateway.v1.OnWriteCompleteEvent + 88, // 117: mxaccess_gateway.v1.MxEvent.operation_complete:type_name -> mxaccess_gateway.v1.OperationCompleteEvent + 89, // 118: mxaccess_gateway.v1.MxEvent.on_buffered_data_change:type_name -> mxaccess_gateway.v1.OnBufferedDataChangeEvent + 90, // 119: mxaccess_gateway.v1.MxEvent.on_alarm_transition:type_name -> mxaccess_gateway.v1.OnAlarmTransitionEvent + 91, // 120: mxaccess_gateway.v1.MxEvent.on_alarm_provider_mode_changed:type_name -> mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent + 7, // 121: mxaccess_gateway.v1.OnBufferedDataChangeEvent.data_type:type_name -> mxaccess_gateway.v1.MxDataType + 101, // 122: mxaccess_gateway.v1.OnBufferedDataChangeEvent.quality_values:type_name -> mxaccess_gateway.v1.MxArray + 101, // 123: mxaccess_gateway.v1.OnBufferedDataChangeEvent.timestamp_values:type_name -> mxaccess_gateway.v1.MxArray + 3, // 124: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_kind:type_name -> mxaccess_gateway.v1.AlarmTransitionKind + 114, // 125: mxaccess_gateway.v1.OnAlarmTransitionEvent.original_raise_timestamp:type_name -> google.protobuf.Timestamp + 114, // 126: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_timestamp:type_name -> google.protobuf.Timestamp + 100, // 127: mxaccess_gateway.v1.OnAlarmTransitionEvent.current_value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 128: mxaccess_gateway.v1.OnAlarmTransitionEvent.limit_value:type_name -> mxaccess_gateway.v1.MxValue + 1, // 129: mxaccess_gateway.v1.OnAlarmTransitionEvent.source_provider:type_name -> mxaccess_gateway.v1.AlarmProviderMode + 1, // 130: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent.mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode + 114, // 131: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent.at:type_name -> google.protobuf.Timestamp + 114, // 132: mxaccess_gateway.v1.ActiveAlarmSnapshot.original_raise_timestamp:type_name -> google.protobuf.Timestamp + 4, // 133: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_state:type_name -> mxaccess_gateway.v1.AlarmConditionState + 114, // 134: mxaccess_gateway.v1.ActiveAlarmSnapshot.last_transition_timestamp:type_name -> google.protobuf.Timestamp + 100, // 135: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 136: mxaccess_gateway.v1.ActiveAlarmSnapshot.limit_value:type_name -> mxaccess_gateway.v1.MxValue + 1, // 137: mxaccess_gateway.v1.ActiveAlarmSnapshot.source_provider:type_name -> mxaccess_gateway.v1.AlarmProviderMode + 112, // 138: mxaccess_gateway.v1.AcknowledgeAlarmReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 99, // 139: mxaccess_gateway.v1.AcknowledgeAlarmReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 92, // 140: mxaccess_gateway.v1.AlarmFeedMessage.active_alarm:type_name -> mxaccess_gateway.v1.ActiveAlarmSnapshot + 90, // 141: mxaccess_gateway.v1.AlarmFeedMessage.transition:type_name -> mxaccess_gateway.v1.OnAlarmTransitionEvent + 97, // 142: mxaccess_gateway.v1.AlarmFeedMessage.provider_status:type_name -> mxaccess_gateway.v1.AlarmProviderStatus + 98, // 143: mxaccess_gateway.v1.AlarmFeedMessage.snapshot_status:type_name -> mxaccess_gateway.v1.AlarmSnapshotStatus + 1, // 144: mxaccess_gateway.v1.AlarmProviderStatus.mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode + 114, // 145: mxaccess_gateway.v1.AlarmProviderStatus.since:type_name -> google.protobuf.Timestamp + 5, // 146: mxaccess_gateway.v1.MxStatusProxy.category:type_name -> mxaccess_gateway.v1.MxStatusCategory + 6, // 147: mxaccess_gateway.v1.MxStatusProxy.detected_by:type_name -> mxaccess_gateway.v1.MxStatusSource + 7, // 148: mxaccess_gateway.v1.MxValue.data_type:type_name -> mxaccess_gateway.v1.MxDataType + 114, // 149: mxaccess_gateway.v1.MxValue.timestamp_value:type_name -> google.protobuf.Timestamp + 101, // 150: mxaccess_gateway.v1.MxValue.array_value:type_name -> mxaccess_gateway.v1.MxArray + 102, // 151: mxaccess_gateway.v1.MxValue.sparse_array_value:type_name -> mxaccess_gateway.v1.MxSparseArray + 7, // 152: mxaccess_gateway.v1.MxArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType + 104, // 153: mxaccess_gateway.v1.MxArray.bool_values:type_name -> mxaccess_gateway.v1.BoolArray + 105, // 154: mxaccess_gateway.v1.MxArray.int32_values:type_name -> mxaccess_gateway.v1.Int32Array + 106, // 155: mxaccess_gateway.v1.MxArray.int64_values:type_name -> mxaccess_gateway.v1.Int64Array + 107, // 156: mxaccess_gateway.v1.MxArray.float_values:type_name -> mxaccess_gateway.v1.FloatArray + 108, // 157: mxaccess_gateway.v1.MxArray.double_values:type_name -> mxaccess_gateway.v1.DoubleArray + 109, // 158: mxaccess_gateway.v1.MxArray.string_values:type_name -> mxaccess_gateway.v1.StringArray + 110, // 159: mxaccess_gateway.v1.MxArray.timestamp_values:type_name -> mxaccess_gateway.v1.TimestampArray + 111, // 160: mxaccess_gateway.v1.MxArray.raw_values:type_name -> mxaccess_gateway.v1.RawArray + 7, // 161: mxaccess_gateway.v1.MxSparseArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType + 103, // 162: mxaccess_gateway.v1.MxSparseArray.elements:type_name -> mxaccess_gateway.v1.MxSparseElement + 100, // 163: mxaccess_gateway.v1.MxSparseElement.value:type_name -> mxaccess_gateway.v1.MxValue + 114, // 164: mxaccess_gateway.v1.TimestampArray.values:type_name -> google.protobuf.Timestamp + 8, // 165: mxaccess_gateway.v1.ProtocolStatus.code:type_name -> mxaccess_gateway.v1.ProtocolStatusCode + 11, // 166: mxaccess_gateway.v1.MxAccessGateway.OpenSession:input_type -> mxaccess_gateway.v1.OpenSessionRequest + 13, // 167: mxaccess_gateway.v1.MxAccessGateway.CloseSession:input_type -> mxaccess_gateway.v1.CloseSessionRequest + 16, // 168: mxaccess_gateway.v1.MxAccessGateway.Invoke:input_type -> mxaccess_gateway.v1.MxCommandRequest + 15, // 169: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:input_type -> mxaccess_gateway.v1.StreamEventsRequest + 93, // 170: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:input_type -> mxaccess_gateway.v1.AcknowledgeAlarmRequest + 95, // 171: mxaccess_gateway.v1.MxAccessGateway.StreamAlarms:input_type -> mxaccess_gateway.v1.StreamAlarmsRequest + 10, // 172: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:input_type -> mxaccess_gateway.v1.QueryActiveAlarmsRequest + 12, // 173: mxaccess_gateway.v1.MxAccessGateway.OpenSession:output_type -> mxaccess_gateway.v1.OpenSessionReply + 14, // 174: mxaccess_gateway.v1.MxAccessGateway.CloseSession:output_type -> mxaccess_gateway.v1.CloseSessionReply + 64, // 175: mxaccess_gateway.v1.MxAccessGateway.Invoke:output_type -> mxaccess_gateway.v1.MxCommandReply + 84, // 176: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:output_type -> mxaccess_gateway.v1.MxEvent + 94, // 177: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:output_type -> mxaccess_gateway.v1.AcknowledgeAlarmReply + 96, // 178: mxaccess_gateway.v1.MxAccessGateway.StreamAlarms:output_type -> mxaccess_gateway.v1.AlarmFeedMessage + 92, // 179: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:output_type -> mxaccess_gateway.v1.ActiveAlarmSnapshot + 173, // [173:180] is the sub-list for method output_type + 166, // [166:173] is the sub-list for method input_type + 166, // [166:166] is the sub-list for extension type_name + 166, // [166:166] is the sub-list for extension extendee + 0, // [0:166] is the sub-list for field type_name } func init() { file_mxaccess_gateway_proto_init() } @@ -9790,13 +9879,14 @@ func file_mxaccess_gateway_proto_init() { (*MxCommand_WriteSecuredBulk)(nil), (*MxCommand_WriteSecured2Bulk)(nil), (*MxCommand_ReadBulk)(nil), + (*MxCommand_UpdateAlarmWatchList)(nil), (*MxCommand_Ping)(nil), (*MxCommand_GetSessionState)(nil), (*MxCommand_GetWorkerInfo)(nil), (*MxCommand_DrainEvents)(nil), (*MxCommand_ShutdownWorker)(nil), } - file_mxaccess_gateway_proto_msgTypes[53].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[54].OneofWrappers = []any{ (*MxCommandReply_Register)(nil), (*MxCommandReply_AddItem)(nil), (*MxCommandReply_AddItem2)(nil), @@ -9822,8 +9912,8 @@ func file_mxaccess_gateway_proto_init() { (*MxCommandReply_WorkerInfo)(nil), (*MxCommandReply_DrainEvents)(nil), } - file_mxaccess_gateway_proto_msgTypes[64].OneofWrappers = []any{} - file_mxaccess_gateway_proto_msgTypes[73].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[65].OneofWrappers = []any{} + file_mxaccess_gateway_proto_msgTypes[74].OneofWrappers = []any{ (*MxEvent_OnDataChange)(nil), (*MxEvent_OnWriteComplete)(nil), (*MxEvent_OperationComplete)(nil), @@ -9831,15 +9921,15 @@ func file_mxaccess_gateway_proto_init() { (*MxEvent_OnAlarmTransition)(nil), (*MxEvent_OnAlarmProviderModeChanged)(nil), } - file_mxaccess_gateway_proto_msgTypes[83].OneofWrappers = []any{} - file_mxaccess_gateway_proto_msgTypes[85].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[84].OneofWrappers = []any{} + file_mxaccess_gateway_proto_msgTypes[86].OneofWrappers = []any{ (*AlarmFeedMessage_ActiveAlarm)(nil), (*AlarmFeedMessage_SnapshotComplete)(nil), (*AlarmFeedMessage_Transition)(nil), (*AlarmFeedMessage_ProviderStatus)(nil), (*AlarmFeedMessage_SnapshotStatus)(nil), } - file_mxaccess_gateway_proto_msgTypes[89].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[90].OneofWrappers = []any{ (*MxValue_BoolValue)(nil), (*MxValue_Int32Value)(nil), (*MxValue_Int64Value)(nil), @@ -9851,7 +9941,7 @@ func file_mxaccess_gateway_proto_init() { (*MxValue_RawValue)(nil), (*MxValue_SparseArrayValue)(nil), } - file_mxaccess_gateway_proto_msgTypes[90].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[91].OneofWrappers = []any{ (*MxArray_BoolValues)(nil), (*MxArray_Int32Values)(nil), (*MxArray_Int64Values)(nil), @@ -9867,7 +9957,7 @@ func file_mxaccess_gateway_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_mxaccess_gateway_proto_rawDesc), len(file_mxaccess_gateway_proto_rawDesc)), NumEnums: 10, - NumMessages: 102, + NumMessages: 103, NumExtensions: 0, NumServices: 1, }, diff --git a/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java b/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java index 153aea4..a9f9bca 100644 --- a/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java +++ b/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java @@ -171,6 +171,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { * MX_COMMAND_KIND_READ_BULK = 34; */ MX_COMMAND_KIND_READ_BULK(34), + /** + * MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST = 35; + */ + MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST(35), /** * MX_COMMAND_KIND_PING = 100; */ @@ -343,6 +347,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { * MX_COMMAND_KIND_READ_BULK = 34; */ public static final int MX_COMMAND_KIND_READ_BULK_VALUE = 34; + /** + * MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST = 35; + */ + public static final int MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST_VALUE = 35; /** * MX_COMMAND_KIND_PING = 100; */ @@ -424,6 +432,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { case 32: return MX_COMMAND_KIND_WRITE_SECURED_BULK; case 33: return MX_COMMAND_KIND_WRITE_SECURED2_BULK; case 34: return MX_COMMAND_KIND_READ_BULK; + case 35: return MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST; case 100: return MX_COMMAND_KIND_PING; case 101: return MX_COMMAND_KIND_GET_SESSION_STATE; case 102: return MX_COMMAND_KIND_GET_WORKER_INFO; @@ -8948,6 +8957,21 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { */ mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommandOrBuilder getReadBulkOrBuilder(); + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + * @return Whether the updateAlarmWatchList field is set. + */ + boolean hasUpdateAlarmWatchList(); + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + * @return The updateAlarmWatchList. + */ + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand getUpdateAlarmWatchList(); + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommandOrBuilder getUpdateAlarmWatchListOrBuilder(); + /** * .mxaccess_gateway.v1.PingCommand ping = 100; * @return Whether the ping field is set. @@ -9103,6 +9127,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { WRITE_SECURED_BULK(41), WRITE_SECURED2_BULK(42), READ_BULK(43), + UPDATE_ALARM_WATCH_LIST(44), PING(100), GET_SESSION_STATE(101), GET_WORKER_INFO(102), @@ -9159,6 +9184,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { case 41: return WRITE_SECURED_BULK; case 42: return WRITE_SECURED2_BULK; case 43: return READ_BULK; + case 44: return UPDATE_ALARM_WATCH_LIST; case 100: return PING; case 101: return GET_SESSION_STATE; case 102: return GET_WORKER_INFO; @@ -10251,6 +10277,37 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance(); } + public static final int UPDATE_ALARM_WATCH_LIST_FIELD_NUMBER = 44; + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + * @return Whether the updateAlarmWatchList field is set. + */ + @java.lang.Override + public boolean hasUpdateAlarmWatchList() { + return payloadCase_ == 44; + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + * @return The updateAlarmWatchList. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand getUpdateAlarmWatchList() { + if (payloadCase_ == 44) { + return (mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommandOrBuilder getUpdateAlarmWatchListOrBuilder() { + if (payloadCase_ == 44) { + return (mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance(); + } + public static final int PING_FIELD_NUMBER = 100; /** * .mxaccess_gateway.v1.PingCommand ping = 100; @@ -10525,6 +10582,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (payloadCase_ == 43) { output.writeMessage(43, (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_); } + if (payloadCase_ == 44) { + output.writeMessage(44, (mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) payload_); + } if (payloadCase_ == 100) { output.writeMessage(100, (mxaccess_gateway.v1.MxaccessGateway.PingCommand) payload_); } @@ -10689,6 +10749,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { size += com.google.protobuf.CodedOutputStream .computeMessageSize(43, (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_); } + if (payloadCase_ == 44) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(44, (mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) payload_); + } if (payloadCase_ == 100) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(100, (mxaccess_gateway.v1.MxaccessGateway.PingCommand) payload_); @@ -10863,6 +10927,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!getReadBulk() .equals(other.getReadBulk())) return false; break; + case 44: + if (!getUpdateAlarmWatchList() + .equals(other.getUpdateAlarmWatchList())) return false; + break; case 100: if (!getPing() .equals(other.getPing())) return false; @@ -11036,6 +11104,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { hash = (37 * hash) + READ_BULK_FIELD_NUMBER; hash = (53 * hash) + getReadBulk().hashCode(); break; + case 44: + hash = (37 * hash) + UPDATE_ALARM_WATCH_LIST_FIELD_NUMBER; + hash = (53 * hash) + getUpdateAlarmWatchList().hashCode(); + break; case 100: hash = (37 * hash) + PING_FIELD_NUMBER; hash = (53 * hash) + getPing().hashCode(); @@ -11294,6 +11366,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (readBulkBuilder_ != null) { readBulkBuilder_.clear(); } + if (updateAlarmWatchListBuilder_ != null) { + updateAlarmWatchListBuilder_.clear(); + } if (pingBuilder_ != null) { pingBuilder_.clear(); } @@ -11494,6 +11569,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { readBulkBuilder_ != null) { result.payload_ = readBulkBuilder_.build(); } + if (payloadCase_ == 44 && + updateAlarmWatchListBuilder_ != null) { + result.payload_ = updateAlarmWatchListBuilder_.build(); + } if (payloadCase_ == 100 && pingBuilder_ != null) { result.payload_ = pingBuilder_.build(); @@ -11668,6 +11747,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { mergeReadBulk(other.getReadBulk()); break; } + case UPDATE_ALARM_WATCH_LIST: { + mergeUpdateAlarmWatchList(other.getUpdateAlarmWatchList()); + break; + } case PING: { mergePing(other.getPing()); break; @@ -11961,6 +12044,13 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { payloadCase_ = 43; break; } // case 346 + case 354: { + input.readMessage( + internalGetUpdateAlarmWatchListFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 44; + break; + } // case 354 case 802: { input.readMessage( internalGetPingFieldBuilder().getBuilder(), @@ -16908,6 +16998,148 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return readBulkBuilder_; } + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand, mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommandOrBuilder> updateAlarmWatchListBuilder_; + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + * @return Whether the updateAlarmWatchList field is set. + */ + @java.lang.Override + public boolean hasUpdateAlarmWatchList() { + return payloadCase_ == 44; + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + * @return The updateAlarmWatchList. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand getUpdateAlarmWatchList() { + if (updateAlarmWatchListBuilder_ == null) { + if (payloadCase_ == 44) { + return (mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance(); + } else { + if (payloadCase_ == 44) { + return updateAlarmWatchListBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + public Builder setUpdateAlarmWatchList(mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand value) { + if (updateAlarmWatchListBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + updateAlarmWatchListBuilder_.setMessage(value); + } + payloadCase_ = 44; + return this; + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + public Builder setUpdateAlarmWatchList( + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.Builder builderForValue) { + if (updateAlarmWatchListBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + updateAlarmWatchListBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 44; + return this; + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + public Builder mergeUpdateAlarmWatchList(mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand value) { + if (updateAlarmWatchListBuilder_ == null) { + if (payloadCase_ == 44 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.newBuilder((mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 44) { + updateAlarmWatchListBuilder_.mergeFrom(value); + } else { + updateAlarmWatchListBuilder_.setMessage(value); + } + } + payloadCase_ = 44; + return this; + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + public Builder clearUpdateAlarmWatchList() { + if (updateAlarmWatchListBuilder_ == null) { + if (payloadCase_ == 44) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 44) { + payloadCase_ = 0; + payload_ = null; + } + updateAlarmWatchListBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.Builder getUpdateAlarmWatchListBuilder() { + return internalGetUpdateAlarmWatchListFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommandOrBuilder getUpdateAlarmWatchListOrBuilder() { + if ((payloadCase_ == 44) && (updateAlarmWatchListBuilder_ != null)) { + return updateAlarmWatchListBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 44) { + return (mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.UpdateAlarmWatchListCommand update_alarm_watch_list = 44; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand, mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommandOrBuilder> + internalGetUpdateAlarmWatchListFieldBuilder() { + if (updateAlarmWatchListBuilder_ == null) { + if (!(payloadCase_ == 44)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance(); + } + updateAlarmWatchListBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand, mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommandOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 44; + onChanged(); + return updateAlarmWatchListBuilder_; + } + private com.google.protobuf.SingleFieldBuilder< mxaccess_gateway.v1.MxaccessGateway.PingCommand, mxaccess_gateway.v1.MxaccessGateway.PingCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.PingCommandOrBuilder> pingBuilder_; /** @@ -32708,6 +32940,18 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { * .mxaccess_gateway.v1.AlarmFailoverConfig failover = 4; */ mxaccess_gateway.v1.MxaccessGateway.AlarmFailoverConfigOrBuilder getFailoverOrBuilder(); + + /** + *
+     * True when auto mode should retain subtag-fallback capability even if the
+     * gateway's initial discovery produced an empty watch list. False leaves an
+     * empty list as an intentional alarm-manager-only subscription.
+     * 
+ * + * bool fallback_enabled = 5; + * @return The fallbackEnabled. + */ + boolean getFallbackEnabled(); } /** *
@@ -32715,8 +32959,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
    * Subscription expression follows the canonical
    * `\\<machine>\Galaxy!<area>` format (literal "Galaxy" provider). The
    * worker spins up a wnwrapConsumer-backed subscription on its STA on
-   * first call; subsequent calls are an error (use UnsubscribeAlarms then
-   * SubscribeAlarms to reconfigure).
+   * first call; subsequent calls are an error. Use UpdateAlarmWatchList to
+   * replace the standby targets without restarting the primary subscription.
    * 
* * Protobuf type {@code mxaccess_gateway.v1.SubscribeAlarmsCommand} @@ -32916,6 +33160,23 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return failover_ == null ? mxaccess_gateway.v1.MxaccessGateway.AlarmFailoverConfig.getDefaultInstance() : failover_; } + public static final int FALLBACK_ENABLED_FIELD_NUMBER = 5; + private boolean fallbackEnabled_ = false; + /** + *
+     * True when auto mode should retain subtag-fallback capability even if the
+     * gateway's initial discovery produced an empty watch list. False leaves an
+     * empty list as an intentional alarm-manager-only subscription.
+     * 
+ * + * bool fallback_enabled = 5; + * @return The fallbackEnabled. + */ + @java.lang.Override + public boolean getFallbackEnabled() { + return fallbackEnabled_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -32942,6 +33203,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (((bitField0_ & 0x00000001) != 0)) { output.writeMessage(4, getFailover()); } + if (fallbackEnabled_ != false) { + output.writeBool(5, fallbackEnabled_); + } getUnknownFields().writeTo(output); } @@ -32966,6 +33230,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, getFailover()); } + if (fallbackEnabled_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, fallbackEnabled_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -32991,6 +33259,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!getFailover() .equals(other.getFailover())) return false; } + if (getFallbackEnabled() + != other.getFallbackEnabled()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -33014,6 +33284,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { hash = (37 * hash) + FAILOVER_FIELD_NUMBER; hash = (53 * hash) + getFailover().hashCode(); } + hash = (37 * hash) + FALLBACK_ENABLED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getFallbackEnabled()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -33117,8 +33390,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { * Subscription expression follows the canonical * `\\<machine>\Galaxy!<area>` format (literal "Galaxy" provider). The * worker spins up a wnwrapConsumer-backed subscription on its STA on - * first call; subsequent calls are an error (use UnsubscribeAlarms then - * SubscribeAlarms to reconfigure). + * first call; subsequent calls are an error. Use UpdateAlarmWatchList to + * replace the standby targets without restarting the primary subscription. * * * Protobuf type {@code mxaccess_gateway.v1.SubscribeAlarmsCommand} @@ -33175,6 +33448,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { failoverBuilder_.dispose(); failoverBuilder_ = null; } + fallbackEnabled_ = false; return this; } @@ -33234,6 +33508,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { : failoverBuilder_.build(); to_bitField0_ |= 0x00000001; } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.fallbackEnabled_ = fallbackEnabled_; + } result.bitField0_ |= to_bitField0_; } @@ -33286,6 +33563,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (other.hasFailover()) { mergeFailover(other.getFailover()); } + if (other.getFallbackEnabled() != false) { + setFallbackEnabled(other.getFallbackEnabled()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -33342,6 +33622,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { bitField0_ |= 0x00000008; break; } // case 34 + case 40: { + fallbackEnabled_ = input.readBool(); + bitField0_ |= 0x00000010; + break; + } // case 40 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -33953,6 +34238,56 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return failoverBuilder_; } + private boolean fallbackEnabled_ ; + /** + *
+       * True when auto mode should retain subtag-fallback capability even if the
+       * gateway's initial discovery produced an empty watch list. False leaves an
+       * empty list as an intentional alarm-manager-only subscription.
+       * 
+ * + * bool fallback_enabled = 5; + * @return The fallbackEnabled. + */ + @java.lang.Override + public boolean getFallbackEnabled() { + return fallbackEnabled_; + } + /** + *
+       * True when auto mode should retain subtag-fallback capability even if the
+       * gateway's initial discovery produced an empty watch list. False leaves an
+       * empty list as an intentional alarm-manager-only subscription.
+       * 
+ * + * bool fallback_enabled = 5; + * @param value The fallbackEnabled to set. + * @return This builder for chaining. + */ + public Builder setFallbackEnabled(boolean value) { + + fallbackEnabled_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + *
+       * True when auto mode should retain subtag-fallback capability even if the
+       * gateway's initial discovery produced an empty watch list. False leaves an
+       * empty list as an intentional alarm-manager-only subscription.
+       * 
+ * + * bool fallback_enabled = 5; + * @return This builder for chaining. + */ + public Builder clearFallbackEnabled() { + bitField0_ = (bitField0_ & ~0x00000010); + fallbackEnabled_ = false; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.SubscribeAlarmsCommand) } @@ -34004,6 +34339,758 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { } + public interface UpdateAlarmWatchListCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.UpdateAlarmWatchListCommand) + com.google.protobuf.MessageOrBuilder { + + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + java.util.List + getWatchListList(); + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget getWatchList(int index); + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + int getWatchListCount(); + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + java.util.List + getWatchListOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTargetOrBuilder getWatchListOrBuilder( + int index); + } + /** + *
+   * Replace the live alarm subscription's subtag standby targets. The worker
+   * constructs and attaches the replacement before swapping it into service, so
+   * a setup failure leaves the existing standby and active provider unchanged.
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.UpdateAlarmWatchListCommand} + */ + public static final class UpdateAlarmWatchListCommand extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.UpdateAlarmWatchListCommand) + UpdateAlarmWatchListCommandOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "UpdateAlarmWatchListCommand"); + } + // Use UpdateAlarmWatchListCommand.newBuilder() to construct. + private UpdateAlarmWatchListCommand(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private UpdateAlarmWatchListCommand() { + watchList_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.class, mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.Builder.class); + } + + public static final int WATCH_LIST_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private java.util.List watchList_; + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + @java.lang.Override + public java.util.List getWatchListList() { + return watchList_; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + @java.lang.Override + public java.util.List + getWatchListOrBuilderList() { + return watchList_; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + @java.lang.Override + public int getWatchListCount() { + return watchList_.size(); + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget getWatchList(int index) { + return watchList_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTargetOrBuilder getWatchListOrBuilder( + int index) { + return watchList_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < watchList_.size(); i++) { + output.writeMessage(1, watchList_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < watchList_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, watchList_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand other = (mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) obj; + + if (!getWatchListList() + .equals(other.getWatchListList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getWatchListCount() > 0) { + hash = (37 * hash) + WATCH_LIST_FIELD_NUMBER; + hash = (53 * hash) + getWatchListList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Replace the live alarm subscription's subtag standby targets. The worker
+     * constructs and attaches the replacement before swapping it into service, so
+     * a setup failure leaves the existing standby and active provider unchanged.
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.UpdateAlarmWatchListCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.UpdateAlarmWatchListCommand) + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.class, mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (watchListBuilder_ == null) { + watchList_ = java.util.Collections.emptyList(); + } else { + watchList_ = null; + watchListBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand build() { + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand result = new mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand result) { + if (watchListBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + watchList_ = java.util.Collections.unmodifiableList(watchList_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.watchList_ = watchList_; + } else { + result.watchList_ = watchListBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand.getDefaultInstance()) return this; + if (watchListBuilder_ == null) { + if (!other.watchList_.isEmpty()) { + if (watchList_.isEmpty()) { + watchList_ = other.watchList_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureWatchListIsMutable(); + watchList_.addAll(other.watchList_); + } + onChanged(); + } + } else { + if (!other.watchList_.isEmpty()) { + if (watchListBuilder_.isEmpty()) { + watchListBuilder_.dispose(); + watchListBuilder_ = null; + watchList_ = other.watchList_; + bitField0_ = (bitField0_ & ~0x00000001); + watchListBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetWatchListFieldBuilder() : null; + } else { + watchListBuilder_.addAllMessages(other.watchList_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.parser(), + extensionRegistry); + if (watchListBuilder_ == null) { + ensureWatchListIsMutable(); + watchList_.add(m); + } else { + watchListBuilder_.addMessage(m); + } + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.util.List watchList_ = + java.util.Collections.emptyList(); + private void ensureWatchListIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + watchList_ = new java.util.ArrayList(watchList_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTargetOrBuilder> watchListBuilder_; + + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public java.util.List getWatchListList() { + if (watchListBuilder_ == null) { + return java.util.Collections.unmodifiableList(watchList_); + } else { + return watchListBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public int getWatchListCount() { + if (watchListBuilder_ == null) { + return watchList_.size(); + } else { + return watchListBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget getWatchList(int index) { + if (watchListBuilder_ == null) { + return watchList_.get(index); + } else { + return watchListBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder setWatchList( + int index, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget value) { + if (watchListBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureWatchListIsMutable(); + watchList_.set(index, value); + onChanged(); + } else { + watchListBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder setWatchList( + int index, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder builderForValue) { + if (watchListBuilder_ == null) { + ensureWatchListIsMutable(); + watchList_.set(index, builderForValue.build()); + onChanged(); + } else { + watchListBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder addWatchList(mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget value) { + if (watchListBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureWatchListIsMutable(); + watchList_.add(value); + onChanged(); + } else { + watchListBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder addWatchList( + int index, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget value) { + if (watchListBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureWatchListIsMutable(); + watchList_.add(index, value); + onChanged(); + } else { + watchListBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder addWatchList( + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder builderForValue) { + if (watchListBuilder_ == null) { + ensureWatchListIsMutable(); + watchList_.add(builderForValue.build()); + onChanged(); + } else { + watchListBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder addWatchList( + int index, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder builderForValue) { + if (watchListBuilder_ == null) { + ensureWatchListIsMutable(); + watchList_.add(index, builderForValue.build()); + onChanged(); + } else { + watchListBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder addAllWatchList( + java.lang.Iterable values) { + if (watchListBuilder_ == null) { + ensureWatchListIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, watchList_); + onChanged(); + } else { + watchListBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder clearWatchList() { + if (watchListBuilder_ == null) { + watchList_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + watchListBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public Builder removeWatchList(int index) { + if (watchListBuilder_ == null) { + ensureWatchListIsMutable(); + watchList_.remove(index); + onChanged(); + } else { + watchListBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder getWatchListBuilder( + int index) { + return internalGetWatchListFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTargetOrBuilder getWatchListOrBuilder( + int index) { + if (watchListBuilder_ == null) { + return watchList_.get(index); } else { + return watchListBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public java.util.List + getWatchListOrBuilderList() { + if (watchListBuilder_ != null) { + return watchListBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(watchList_); + } + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder addWatchListBuilder() { + return internalGetWatchListFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder addWatchListBuilder( + int index) { + return internalGetWatchListFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.AlarmSubtagTarget watch_list = 1; + */ + public java.util.List + getWatchListBuilderList() { + return internalGetWatchListFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTargetOrBuilder> + internalGetWatchListFieldBuilder() { + if (watchListBuilder_ == null) { + watchListBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTarget.Builder, mxaccess_gateway.v1.MxaccessGateway.AlarmSubtagTargetOrBuilder>( + watchList_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + watchList_ = null; + } + return watchListBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.UpdateAlarmWatchListCommand) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.UpdateAlarmWatchListCommand) + private static final mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public UpdateAlarmWatchListCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.UpdateAlarmWatchListCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface UnsubscribeAlarmsCommandOrBuilder extends // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.UnsubscribeAlarmsCommand) com.google.protobuf.MessageOrBuilder { @@ -50535,11 +51622,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -50556,11 +51646,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -50576,11 +51669,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -50596,11 +51692,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -50617,11 +51716,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -51360,11 +52462,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -51383,11 +52488,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -51407,11 +52515,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -51430,11 +52541,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -51453,11 +52567,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
      * 
      * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
      * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-     * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+     * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
      * the matching MXAccess OnWriteComplete callback and copies its status rows
      * here, so statuses[0] carries the real MXAccess commit outcome (success OR
      * failure) while protocol_status/hresult still describe command acceptance
-     * only. Empty statuses on a write reply means the completion did not arrive
+     * only. Callback correlation is recency-based per item handle: after the
+     * bounded wait, a sequential write's callback supersedes a timed-out
+     * predecessor, and a later stale callback for that predecessor is ignored.
+     * Empty statuses on a write reply means the completion did not arrive
      * within the window — the write is unconfirmed, not failed. Correlation is
      * best-effort per (server_handle, item_handle): MXAccess's callback carries
      * no transaction id, so concurrent writes to the same item within the
@@ -54188,11 +55305,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54214,11 +55334,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54240,11 +55363,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54266,11 +55392,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54299,11 +55428,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54329,11 +55461,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54361,11 +55496,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54394,11 +55532,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54424,11 +55565,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54454,11 +55598,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54485,11 +55632,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54514,11 +55664,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54543,11 +55696,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54566,11 +55722,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54592,11 +55751,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54619,11 +55781,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54642,11 +55807,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -54666,11 +55834,14 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
        * 
        * Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
        * WRITE_SECURED2 replies the worker holds the reply for a bounded window
-       * (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+       * (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
        * the matching MXAccess OnWriteComplete callback and copies its status rows
        * here, so statuses[0] carries the real MXAccess commit outcome (success OR
        * failure) while protocol_status/hresult still describe command acceptance
-       * only. Empty statuses on a write reply means the completion did not arrive
+       * only. Callback correlation is recency-based per item handle: after the
+       * bounded wait, a sequential write's callback supersedes a timed-out
+       * predecessor, and a later stale callback for that predecessor is ignored.
+       * Empty statuses on a write reply means the completion did not arrive
        * within the window — the write is unconfirmed, not failed. Correlation is
        * best-effort per (server_handle, item_handle): MXAccess's callback carries
        * no transaction id, so concurrent writes to the same item within the
@@ -105725,6 +106896,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
   private static final 
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_mxaccess_gateway_v1_SubscribeAlarmsCommand_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_mxaccess_gateway_v1_UnsubscribeAlarmsCommand_descriptor;
   private static final 
@@ -106111,7 +107287,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
       "\n\025after_worker_sequence\030\002 \001(\004\"v\n\020MxComma" +
       "ndRequest\022\022\n\nsession_id\030\001 \001(\t\022\035\n\025client_" +
       "correlation_id\030\002 \001(\t\022/\n\007command\030\003 \001(\0132\036." +
-      "mxaccess_gateway.v1.MxCommand\"\300\025\n\tMxComm" +
+      "mxaccess_gateway.v1.MxCommand\"\225\026\n\tMxComm" +
       "and\0220\n\004kind\030\001 \001(\0162\".mxaccess_gateway.v1." +
       "MxCommandKind\0228\n\010register\030\n \001(\0132$.mxacce" +
       "ss_gateway.v1.RegisterCommandH\000\022<\n\nunreg" +
@@ -106172,488 +107348,494 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
       "red2_bulk\030* \001(\0132-.mxaccess_gateway.v1.Wr" +
       "iteSecured2BulkCommandH\000\0229\n\tread_bulk\030+ " +
       "\001(\0132$.mxaccess_gateway.v1.ReadBulkComman" +
-      "dH\000\0220\n\004ping\030d \001(\0132 .mxaccess_gateway.v1." +
-      "PingCommandH\000\022H\n\021get_session_state\030e \001(\013" +
-      "2+.mxaccess_gateway.v1.GetSessionStateCo" +
-      "mmandH\000\022D\n\017get_worker_info\030f \001(\0132).mxacc" +
-      "ess_gateway.v1.GetWorkerInfoCommandH\000\022?\n" +
-      "\014drain_events\030g \001(\0132\'.mxaccess_gateway.v" +
-      "1.DrainEventsCommandH\000\022E\n\017shutdown_worke" +
-      "r\030h \001(\0132*.mxaccess_gateway.v1.ShutdownWo" +
-      "rkerCommandH\000B\t\n\007payload\"&\n\017RegisterComm" +
-      "and\022\023\n\013client_name\030\001 \001(\t\"*\n\021UnregisterCo" +
-      "mmand\022\025\n\rserver_handle\030\001 \001(\005\"@\n\016AddItemC" +
-      "ommand\022\025\n\rserver_handle\030\001 \001(\005\022\027\n\017item_de" +
-      "finition\030\002 \001(\t\"W\n\017AddItem2Command\022\025\n\rser" +
-      "ver_handle\030\001 \001(\005\022\027\n\017item_definition\030\002 \001(" +
-      "\t\022\024\n\014item_context\030\003 \001(\t\"?\n\021RemoveItemCom" +
-      "mand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_hand" +
-      "le\030\002 \001(\005\";\n\rAdviseCommand\022\025\n\rserver_hand" +
-      "le\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\"=\n\017UnAdvis" +
-      "eCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_" +
-      "handle\030\002 \001(\005\"F\n\030AdviseSupervisoryCommand" +
-      "\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_handle\030\002" +
-      " \001(\005\"^\n\026AddBufferedItemCommand\022\025\n\rserver" +
-      "_handle\030\001 \001(\005\022\027\n\017item_definition\030\002 \001(\t\022\024" +
-      "\n\014item_context\030\003 \001(\t\"_\n SetBufferedUpdat" +
-      "eIntervalCommand\022\025\n\rserver_handle\030\001 \001(\005\022" +
-      "$\n\034update_interval_milliseconds\030\002 \001(\005\"<\n" +
-      "\016SuspendCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023" +
-      "\n\013item_handle\030\002 \001(\005\"=\n\017ActivateCommand\022\025" +
-      "\n\rserver_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001" +
-      "(\005\"x\n\014WriteCommand\022\025\n\rserver_handle\030\001 \001(" +
-      "\005\022\023\n\013item_handle\030\002 \001(\005\022+\n\005value\030\003 \001(\0132\034." +
-      "mxaccess_gateway.v1.MxValue\022\017\n\007user_id\030\004" +
-      " \001(\005\"\260\001\n\rWrite2Command\022\025\n\rserver_handle\030" +
-      "\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022+\n\005value\030\003 \001(" +
-      "\0132\034.mxaccess_gateway.v1.MxValue\0225\n\017times" +
-      "tamp_value\030\004 \001(\0132\034.mxaccess_gateway.v1.M" +
-      "xValue\022\017\n\007user_id\030\005 \001(\005\"\241\001\n\023WriteSecured" +
-      "Command\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_h" +
-      "andle\030\002 \001(\005\022\027\n\017current_user_id\030\003 \001(\005\022\030\n\020" +
-      "verifier_user_id\030\004 \001(\005\022+\n\005value\030\005 \001(\0132\034." +
-      "mxaccess_gateway.v1.MxValue\"\331\001\n\024WriteSec" +
-      "ured2Command\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013i" +
+      "dH\000\022S\n\027update_alarm_watch_list\030, \001(\01320.m" +
+      "xaccess_gateway.v1.UpdateAlarmWatchListC" +
+      "ommandH\000\0220\n\004ping\030d \001(\0132 .mxaccess_gatewa" +
+      "y.v1.PingCommandH\000\022H\n\021get_session_state\030" +
+      "e \001(\0132+.mxaccess_gateway.v1.GetSessionSt" +
+      "ateCommandH\000\022D\n\017get_worker_info\030f \001(\0132)." +
+      "mxaccess_gateway.v1.GetWorkerInfoCommand" +
+      "H\000\022?\n\014drain_events\030g \001(\0132\'.mxaccess_gate" +
+      "way.v1.DrainEventsCommandH\000\022E\n\017shutdown_" +
+      "worker\030h \001(\0132*.mxaccess_gateway.v1.Shutd" +
+      "ownWorkerCommandH\000B\t\n\007payload\"&\n\017Registe" +
+      "rCommand\022\023\n\013client_name\030\001 \001(\t\"*\n\021Unregis" +
+      "terCommand\022\025\n\rserver_handle\030\001 \001(\005\"@\n\016Add" +
+      "ItemCommand\022\025\n\rserver_handle\030\001 \001(\005\022\027\n\017it" +
+      "em_definition\030\002 \001(\t\"W\n\017AddItem2Command\022\025" +
+      "\n\rserver_handle\030\001 \001(\005\022\027\n\017item_definition" +
+      "\030\002 \001(\t\022\024\n\014item_context\030\003 \001(\t\"?\n\021RemoveIt" +
+      "emCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item" +
+      "_handle\030\002 \001(\005\";\n\rAdviseCommand\022\025\n\rserver" +
+      "_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\"=\n\017Un" +
+      "AdviseCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013" +
+      "item_handle\030\002 \001(\005\"F\n\030AdviseSupervisoryCo" +
+      "mmand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_han" +
+      "dle\030\002 \001(\005\"^\n\026AddBufferedItemCommand\022\025\n\rs" +
+      "erver_handle\030\001 \001(\005\022\027\n\017item_definition\030\002 " +
+      "\001(\t\022\024\n\014item_context\030\003 \001(\t\"_\n SetBuffered" +
+      "UpdateIntervalCommand\022\025\n\rserver_handle\030\001" +
+      " \001(\005\022$\n\034update_interval_milliseconds\030\002 \001" +
+      "(\005\"<\n\016SuspendCommand\022\025\n\rserver_handle\030\001 " +
+      "\001(\005\022\023\n\013item_handle\030\002 \001(\005\"=\n\017ActivateComm" +
+      "and\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_handl" +
+      "e\030\002 \001(\005\"x\n\014WriteCommand\022\025\n\rserver_handle" +
+      "\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022+\n\005value\030\003 \001" +
+      "(\0132\034.mxaccess_gateway.v1.MxValue\022\017\n\007user" +
+      "_id\030\004 \001(\005\"\260\001\n\rWrite2Command\022\025\n\rserver_ha" +
+      "ndle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022+\n\005value" +
+      "\030\003 \001(\0132\034.mxaccess_gateway.v1.MxValue\0225\n\017" +
+      "timestamp_value\030\004 \001(\0132\034.mxaccess_gateway" +
+      ".v1.MxValue\022\017\n\007user_id\030\005 \001(\005\"\241\001\n\023WriteSe" +
+      "curedCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013i" +
       "tem_handle\030\002 \001(\005\022\027\n\017current_user_id\030\003 \001(" +
       "\005\022\030\n\020verifier_user_id\030\004 \001(\005\022+\n\005value\030\005 \001" +
-      "(\0132\034.mxaccess_gateway.v1.MxValue\0225\n\017time" +
-      "stamp_value\030\006 \001(\0132\034.mxaccess_gateway.v1." +
-      "MxValue\"c\n\027AuthenticateUserCommand\022\025\n\rse" +
-      "rver_handle\030\001 \001(\005\022\023\n\013verify_user\030\002 \001(\t\022\034" +
-      "\n\024verify_user_password\030\003 \001(\t\"G\n\030Archestr" +
-      "AUserToIdCommand\022\025\n\rserver_handle\030\001 \001(\005\022" +
-      "\024\n\014user_id_guid\030\002 \001(\t\"B\n\022AddItemBulkComm" +
-      "and\022\025\n\rserver_handle\030\001 \001(\005\022\025\n\rtag_addres" +
-      "ses\030\002 \003(\t\"D\n\025AdviseItemBulkCommand\022\025\n\rse" +
-      "rver_handle\030\001 \001(\005\022\024\n\014item_handles\030\002 \003(\005\"" +
-      "D\n\025RemoveItemBulkCommand\022\025\n\rserver_handl" +
-      "e\030\001 \001(\005\022\024\n\014item_handles\030\002 \003(\005\"F\n\027UnAdvis" +
-      "eItemBulkCommand\022\025\n\rserver_handle\030\001 \001(\005\022" +
-      "\024\n\014item_handles\030\002 \003(\005\"D\n\024SubscribeBulkCo" +
-      "mmand\022\025\n\rserver_handle\030\001 \001(\005\022\025\n\rtag_addr" +
-      "esses\030\002 \003(\t\"\356\001\n\026SubscribeAlarmsCommand\022\037" +
-      "\n\027subscription_expression\030\001 \001(\t\022;\n\013force" +
-      "d_mode\030\002 \001(\0162&.mxaccess_gateway.v1.Alarm" +
-      "ProviderMode\022:\n\nwatch_list\030\003 \003(\0132&.mxacc" +
-      "ess_gateway.v1.AlarmSubtagTarget\022:\n\010fail" +
-      "over\030\004 \001(\0132(.mxaccess_gateway.v1.AlarmFa" +
-      "iloverConfig\"\032\n\030UnsubscribeAlarmsCommand" +
-      "\"\264\001\n\021AlarmSubtagTarget\022\034\n\024alarm_full_ref" +
-      "erence\030\001 \001(\t\022\037\n\027source_object_reference\030" +
-      "\002 \001(\t\022\025\n\ractive_subtag\030\003 \001(\t\022\024\n\014acked_su" +
-      "btag\030\004 \001(\t\022\032\n\022ack_comment_subtag\030\005 \001(\t\022\027" +
-      "\n\017priority_subtag\030\006 \001(\t\"\205\001\n\023AlarmFailove" +
-      "rConfig\022%\n\035consecutive_failure_threshold" +
-      "\030\001 \001(\005\022\'\n\037failback_probe_interval_second" +
-      "s\030\002 \001(\005\022\036\n\026failback_stable_probes\030\003 \001(\005\"" +
-      "\241\001\n\027AcknowledgeAlarmCommand\022\022\n\nalarm_gui" +
-      "d\030\001 \001(\t\022\017\n\007comment\030\002 \001(\t\022\025\n\roperator_use" +
-      "r\030\003 \001(\t\022\025\n\roperator_node\030\004 \001(\t\022\027\n\017operat" +
-      "or_domain\030\005 \001(\t\022\032\n\022operator_full_name\030\006 " +
-      "\001(\t\"7\n\030QueryActiveAlarmsCommand\022\033\n\023alarm" +
-      "_filter_prefix\030\001 \001(\t\"\322\001\n\035AcknowledgeAlar" +
-      "mByNameCommand\022\022\n\nalarm_name\030\001 \001(\t\022\025\n\rpr" +
-      "ovider_name\030\002 \001(\t\022\022\n\ngroup_name\030\003 \001(\t\022\017\n" +
-      "\007comment\030\004 \001(\t\022\025\n\roperator_user\030\005 \001(\t\022\025\n" +
-      "\roperator_node\030\006 \001(\t\022\027\n\017operator_domain\030" +
-      "\007 \001(\t\022\032\n\022operator_full_name\030\010 \001(\t\"E\n\026Uns" +
-      "ubscribeBulkCommand\022\025\n\rserver_handle\030\001 \001" +
-      "(\005\022\024\n\014item_handles\030\002 \003(\005\"_\n\020WriteBulkCom" +
-      "mand\022\025\n\rserver_handle\030\001 \001(\005\0224\n\007entries\030\002" +
-      " \003(\0132#.mxaccess_gateway.v1.WriteBulkEntr" +
-      "y\"c\n\016WriteBulkEntry\022\023\n\013item_handle\030\001 \001(\005" +
-      "\022+\n\005value\030\002 \001(\0132\034.mxaccess_gateway.v1.Mx" +
-      "Value\022\017\n\007user_id\030\003 \001(\005\"a\n\021Write2BulkComm" +
-      "and\022\025\n\rserver_handle\030\001 \001(\005\0225\n\007entries\030\002 " +
-      "\003(\0132$.mxaccess_gateway.v1.Write2BulkEntr" +
-      "y\"\233\001\n\017Write2BulkEntry\022\023\n\013item_handle\030\001 \001" +
+      "(\0132\034.mxaccess_gateway.v1.MxValue\"\331\001\n\024Wri" +
+      "teSecured2Command\022\025\n\rserver_handle\030\001 \001(\005" +
+      "\022\023\n\013item_handle\030\002 \001(\005\022\027\n\017current_user_id" +
+      "\030\003 \001(\005\022\030\n\020verifier_user_id\030\004 \001(\005\022+\n\005valu" +
+      "e\030\005 \001(\0132\034.mxaccess_gateway.v1.MxValue\0225\n" +
+      "\017timestamp_value\030\006 \001(\0132\034.mxaccess_gatewa" +
+      "y.v1.MxValue\"c\n\027AuthenticateUserCommand\022" +
+      "\025\n\rserver_handle\030\001 \001(\005\022\023\n\013verify_user\030\002 " +
+      "\001(\t\022\034\n\024verify_user_password\030\003 \001(\t\"G\n\030Arc" +
+      "hestrAUserToIdCommand\022\025\n\rserver_handle\030\001" +
+      " \001(\005\022\024\n\014user_id_guid\030\002 \001(\t\"B\n\022AddItemBul" +
+      "kCommand\022\025\n\rserver_handle\030\001 \001(\005\022\025\n\rtag_a" +
+      "ddresses\030\002 \003(\t\"D\n\025AdviseItemBulkCommand\022" +
+      "\025\n\rserver_handle\030\001 \001(\005\022\024\n\014item_handles\030\002" +
+      " \003(\005\"D\n\025RemoveItemBulkCommand\022\025\n\rserver_" +
+      "handle\030\001 \001(\005\022\024\n\014item_handles\030\002 \003(\005\"F\n\027Un" +
+      "AdviseItemBulkCommand\022\025\n\rserver_handle\030\001" +
+      " \001(\005\022\024\n\014item_handles\030\002 \003(\005\"D\n\024SubscribeB" +
+      "ulkCommand\022\025\n\rserver_handle\030\001 \001(\005\022\025\n\rtag" +
+      "_addresses\030\002 \003(\t\"\210\002\n\026SubscribeAlarmsComm" +
+      "and\022\037\n\027subscription_expression\030\001 \001(\t\022;\n\013" +
+      "forced_mode\030\002 \001(\0162&.mxaccess_gateway.v1." +
+      "AlarmProviderMode\022:\n\nwatch_list\030\003 \003(\0132&." +
+      "mxaccess_gateway.v1.AlarmSubtagTarget\022:\n" +
+      "\010failover\030\004 \001(\0132(.mxaccess_gateway.v1.Al" +
+      "armFailoverConfig\022\030\n\020fallback_enabled\030\005 " +
+      "\001(\010\"Y\n\033UpdateAlarmWatchListCommand\022:\n\nwa" +
+      "tch_list\030\001 \003(\0132&.mxaccess_gateway.v1.Ala" +
+      "rmSubtagTarget\"\032\n\030UnsubscribeAlarmsComma" +
+      "nd\"\264\001\n\021AlarmSubtagTarget\022\034\n\024alarm_full_r" +
+      "eference\030\001 \001(\t\022\037\n\027source_object_referenc" +
+      "e\030\002 \001(\t\022\025\n\ractive_subtag\030\003 \001(\t\022\024\n\014acked_" +
+      "subtag\030\004 \001(\t\022\032\n\022ack_comment_subtag\030\005 \001(\t" +
+      "\022\027\n\017priority_subtag\030\006 \001(\t\"\205\001\n\023AlarmFailo" +
+      "verConfig\022%\n\035consecutive_failure_thresho" +
+      "ld\030\001 \001(\005\022\'\n\037failback_probe_interval_seco" +
+      "nds\030\002 \001(\005\022\036\n\026failback_stable_probes\030\003 \001(" +
+      "\005\"\241\001\n\027AcknowledgeAlarmCommand\022\022\n\nalarm_g" +
+      "uid\030\001 \001(\t\022\017\n\007comment\030\002 \001(\t\022\025\n\roperator_u" +
+      "ser\030\003 \001(\t\022\025\n\roperator_node\030\004 \001(\t\022\027\n\017oper" +
+      "ator_domain\030\005 \001(\t\022\032\n\022operator_full_name\030" +
+      "\006 \001(\t\"7\n\030QueryActiveAlarmsCommand\022\033\n\023ala" +
+      "rm_filter_prefix\030\001 \001(\t\"\322\001\n\035AcknowledgeAl" +
+      "armByNameCommand\022\022\n\nalarm_name\030\001 \001(\t\022\025\n\r" +
+      "provider_name\030\002 \001(\t\022\022\n\ngroup_name\030\003 \001(\t\022" +
+      "\017\n\007comment\030\004 \001(\t\022\025\n\roperator_user\030\005 \001(\t\022" +
+      "\025\n\roperator_node\030\006 \001(\t\022\027\n\017operator_domai" +
+      "n\030\007 \001(\t\022\032\n\022operator_full_name\030\010 \001(\t\"E\n\026U" +
+      "nsubscribeBulkCommand\022\025\n\rserver_handle\030\001" +
+      " \001(\005\022\024\n\014item_handles\030\002 \003(\005\"_\n\020WriteBulkC" +
+      "ommand\022\025\n\rserver_handle\030\001 \001(\005\0224\n\007entries" +
+      "\030\002 \003(\0132#.mxaccess_gateway.v1.WriteBulkEn" +
+      "try\"c\n\016WriteBulkEntry\022\023\n\013item_handle\030\001 \001" +
       "(\005\022+\n\005value\030\002 \001(\0132\034.mxaccess_gateway.v1." +
-      "MxValue\0225\n\017timestamp_value\030\003 \001(\0132\034.mxacc" +
-      "ess_gateway.v1.MxValue\022\017\n\007user_id\030\004 \001(\005\"" +
-      "m\n\027WriteSecuredBulkCommand\022\025\n\rserver_han" +
-      "dle\030\001 \001(\005\022;\n\007entries\030\002 \003(\0132*.mxaccess_ga" +
-      "teway.v1.WriteSecuredBulkEntry\"\214\001\n\025Write" +
-      "SecuredBulkEntry\022\023\n\013item_handle\030\001 \001(\005\022\027\n" +
-      "\017current_user_id\030\002 \001(\005\022\030\n\020verifier_user_" +
-      "id\030\003 \001(\005\022+\n\005value\030\004 \001(\0132\034.mxaccess_gatew" +
-      "ay.v1.MxValue\"o\n\030WriteSecured2BulkComman" +
-      "d\022\025\n\rserver_handle\030\001 \001(\005\022<\n\007entries\030\002 \003(" +
-      "\0132+.mxaccess_gateway.v1.WriteSecured2Bul" +
-      "kEntry\"\304\001\n\026WriteSecured2BulkEntry\022\023\n\013ite" +
-      "m_handle\030\001 \001(\005\022\027\n\017current_user_id\030\002 \001(\005\022" +
-      "\030\n\020verifier_user_id\030\003 \001(\005\022+\n\005value\030\004 \001(\013" +
-      "2\034.mxaccess_gateway.v1.MxValue\0225\n\017timest" +
-      "amp_value\030\005 \001(\0132\034.mxaccess_gateway.v1.Mx" +
-      "Value\"S\n\017ReadBulkCommand\022\025\n\rserver_handl" +
-      "e\030\001 \001(\005\022\025\n\rtag_addresses\030\002 \003(\t\022\022\n\ntimeou" +
-      "t_ms\030\003 \001(\r\"\036\n\013PingCommand\022\017\n\007message\030\001 \001" +
-      "(\t\"\030\n\026GetSessionStateCommand\"\026\n\024GetWorke" +
-      "rInfoCommand\"(\n\022DrainEventsCommand\022\022\n\nma" +
-      "x_events\030\001 \001(\r\"H\n\025ShutdownWorkerCommand\022" +
-      "/\n\014grace_period\030\001 \001(\0132\031.google.protobuf." +
-      "Duration\"\206\017\n\016MxCommandReply\022\022\n\nsession_i" +
-      "d\030\001 \001(\t\022\026\n\016correlation_id\030\002 \001(\t\0220\n\004kind\030" +
-      "\003 \001(\0162\".mxaccess_gateway.v1.MxCommandKin" +
-      "d\022<\n\017protocol_status\030\004 \001(\0132#.mxaccess_ga" +
-      "teway.v1.ProtocolStatus\022\024\n\007hresult\030\005 \001(\005" +
-      "H\001\210\001\001\0222\n\014return_value\030\006 \001(\0132\034.mxaccess_g" +
-      "ateway.v1.MxValue\0224\n\010statuses\030\007 \003(\0132\".mx" +
-      "access_gateway.v1.MxStatusProxy\022\032\n\022diagn" +
-      "ostic_message\030\010 \001(\t\0226\n\010register\030\024 \001(\0132\"." +
-      "mxaccess_gateway.v1.RegisterReplyH\000\0225\n\010a" +
-      "dd_item\030\025 \001(\0132!.mxaccess_gateway.v1.AddI" +
-      "temReplyH\000\0227\n\tadd_item2\030\026 \001(\0132\".mxaccess" +
-      "_gateway.v1.AddItem2ReplyH\000\022F\n\021add_buffe" +
-      "red_item\030\027 \001(\0132).mxaccess_gateway.v1.Add" +
-      "BufferedItemReplyH\000\0224\n\007suspend\030\030 \001(\0132!.m" +
-      "xaccess_gateway.v1.SuspendReplyH\000\0226\n\010act" +
-      "ivate\030\031 \001(\0132\".mxaccess_gateway.v1.Activa" +
-      "teReplyH\000\022G\n\021authenticate_user\030\032 \001(\0132*.m" +
-      "xaccess_gateway.v1.AuthenticateUserReply" +
-      "H\000\022K\n\024archestra_user_to_id\030\033 \001(\0132+.mxacc" +
-      "ess_gateway.v1.ArchestrAUserToIdReplyH\000\022" +
-      "@\n\radd_item_bulk\030\034 \001(\0132\'.mxaccess_gatewa" +
-      "y.v1.BulkSubscribeReplyH\000\022C\n\020advise_item" +
-      "_bulk\030\035 \001(\0132\'.mxaccess_gateway.v1.BulkSu" +
-      "bscribeReplyH\000\022C\n\020remove_item_bulk\030\036 \001(\013" +
-      "2\'.mxaccess_gateway.v1.BulkSubscribeRepl" +
-      "yH\000\022F\n\023un_advise_item_bulk\030\037 \001(\0132\'.mxacc" +
-      "ess_gateway.v1.BulkSubscribeReplyH\000\022A\n\016s" +
-      "ubscribe_bulk\030  \001(\0132\'.mxaccess_gateway.v" +
-      "1.BulkSubscribeReplyH\000\022C\n\020unsubscribe_bu" +
-      "lk\030! \001(\0132\'.mxaccess_gateway.v1.BulkSubsc" +
-      "ribeReplyH\000\022N\n\021acknowledge_alarm\030\" \001(\01321" +
-      ".mxaccess_gateway.v1.AcknowledgeAlarmRep" +
-      "lyPayloadH\000\022Q\n\023query_active_alarms\030# \001(\013" +
-      "22.mxaccess_gateway.v1.QueryActiveAlarms" +
-      "ReplyPayloadH\000\0229\n\nwrite_bulk\030$ \001(\0132#.mxa" +
-      "ccess_gateway.v1.BulkWriteReplyH\000\022:\n\013wri" +
-      "te2_bulk\030% \001(\0132#.mxaccess_gateway.v1.Bul" +
-      "kWriteReplyH\000\022A\n\022write_secured_bulk\030& \001(" +
-      "\0132#.mxaccess_gateway.v1.BulkWriteReplyH\000" +
-      "\022B\n\023write_secured2_bulk\030\' \001(\0132#.mxaccess" +
-      "_gateway.v1.BulkWriteReplyH\000\0227\n\tread_bul" +
-      "k\030( \001(\0132\".mxaccess_gateway.v1.BulkReadRe" +
-      "plyH\000\022?\n\rsession_state\030d \001(\0132&.mxaccess_" +
-      "gateway.v1.SessionStateReplyH\000\022;\n\013worker" +
-      "_info\030e \001(\0132$.mxaccess_gateway.v1.Worker" +
-      "InfoReplyH\000\022=\n\014drain_events\030f \001(\0132%.mxac" +
-      "cess_gateway.v1.DrainEventsReplyH\000B\t\n\007pa" +
-      "yloadB\n\n\010_hresult\"&\n\rRegisterReply\022\025\n\rse" +
-      "rver_handle\030\001 \001(\005\"#\n\014AddItemReply\022\023\n\013ite" +
-      "m_handle\030\001 \001(\005\"$\n\rAddItem2Reply\022\023\n\013item_" +
-      "handle\030\001 \001(\005\"+\n\024AddBufferedItemReply\022\023\n\013" +
-      "item_handle\030\001 \001(\005\"B\n\014SuspendReply\0222\n\006sta" +
-      "tus\030\001 \001(\0132\".mxaccess_gateway.v1.MxStatus" +
-      "Proxy\"C\n\rActivateReply\0222\n\006status\030\001 \001(\0132\"" +
-      ".mxaccess_gateway.v1.MxStatusProxy\"(\n\025Au" +
-      "thenticateUserReply\022\017\n\007user_id\030\001 \001(\005\")\n\026" +
-      "ArchestrAUserToIdReply\022\017\n\007user_id\030\001 \001(\005\"" +
-      "\201\001\n\017SubscribeResult\022\025\n\rserver_handle\030\001 \001" +
-      "(\005\022\023\n\013tag_address\030\002 \001(\t\022\023\n\013item_handle\030\003" +
-      " \001(\005\022\026\n\016was_successful\030\004 \001(\010\022\025\n\rerror_me" +
-      "ssage\030\005 \001(\t\"K\n\022BulkSubscribeReply\0225\n\007res" +
-      "ults\030\001 \003(\0132$.mxaccess_gateway.v1.Subscri" +
-      "beResult\"\304\001\n\017BulkWriteResult\022\025\n\rserver_h" +
-      "andle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022\026\n\016was_" +
-      "successful\030\003 \001(\010\022\024\n\007hresult\030\004 \001(\005H\000\210\001\001\0224" +
-      "\n\010statuses\030\005 \003(\0132\".mxaccess_gateway.v1.M" +
-      "xStatusProxy\022\025\n\rerror_message\030\006 \001(\tB\n\n\010_" +
-      "hresult\"G\n\016BulkWriteReply\0225\n\007results\030\001 \003" +
-      "(\0132$.mxaccess_gateway.v1.BulkWriteResult" +
-      "\"\276\002\n\016BulkReadResult\022\025\n\rserver_handle\030\001 \001" +
-      "(\005\022\023\n\013tag_address\030\002 \001(\t\022\023\n\013item_handle\030\003" +
-      " \001(\005\022\026\n\016was_successful\030\004 \001(\010\022\022\n\nwas_cach" +
-      "ed\030\005 \001(\010\022+\n\005value\030\006 \001(\0132\034.mxaccess_gatew" +
-      "ay.v1.MxValue\022\017\n\007quality\030\007 \001(\005\0224\n\020source" +
-      "_timestamp\030\010 \001(\0132\032.google.protobuf.Times" +
-      "tamp\0224\n\010statuses\030\t \003(\0132\".mxaccess_gatewa" +
-      "y.v1.MxStatusProxy\022\025\n\rerror_message\030\n \001(" +
-      "\t\"E\n\rBulkReadReply\0224\n\007results\030\001 \003(\0132#.mx" +
-      "access_gateway.v1.BulkReadResult\"E\n\021Sess" +
-      "ionStateReply\0220\n\005state\030\001 \001(\0162!.mxaccess_" +
-      "gateway.v1.SessionState\"u\n\017WorkerInfoRep" +
-      "ly\022\031\n\021worker_process_id\030\001 \001(\005\022\026\n\016worker_" +
-      "version\030\002 \001(\t\022\027\n\017mxaccess_progid\030\003 \001(\t\022\026" +
-      "\n\016mxaccess_clsid\030\004 \001(\t\"@\n\020DrainEventsRep" +
-      "ly\022,\n\006events\030\001 \003(\0132\034.mxaccess_gateway.v1" +
-      ".MxEvent\"5\n\034AcknowledgeAlarmReplyPayload" +
-      "\022\025\n\rnative_status\030\001 \001(\005\"x\n\035QueryActiveAl" +
-      "armsReplyPayload\022;\n\tsnapshots\030\001 \003(\0132(.mx" +
-      "access_gateway.v1.ActiveAlarmSnapshot\022\032\n" +
-      "\022snapshot_truncated\030\002 \001(\010\"\217\010\n\007MxEvent\0222\n" +
-      "\006family\030\001 \001(\0162\".mxaccess_gateway.v1.MxEv" +
-      "entFamily\022\022\n\nsession_id\030\002 \001(\t\022\025\n\rserver_" +
-      "handle\030\003 \001(\005\022\023\n\013item_handle\030\004 \001(\005\022+\n\005val" +
-      "ue\030\005 \001(\0132\034.mxaccess_gateway.v1.MxValue\022\017" +
-      "\n\007quality\030\006 \001(\005\0224\n\020source_timestamp\030\007 \001(" +
-      "\0132\032.google.protobuf.Timestamp\0224\n\010statuse" +
-      "s\030\010 \003(\0132\".mxaccess_gateway.v1.MxStatusPr" +
-      "oxy\022\027\n\017worker_sequence\030\t \001(\004\0224\n\020worker_t" +
-      "imestamp\030\n \001(\0132\032.google.protobuf.Timesta" +
-      "mp\022=\n\031gateway_receive_timestamp\030\013 \001(\0132\032." +
-      "google.protobuf.Timestamp\022\024\n\007hresult\030\014 \001" +
-      "(\005H\001\210\001\001\022\022\n\nraw_status\030\r \001(\t\0227\n\nreplay_ga" +
-      "p\030\016 \001(\0132\036.mxaccess_gateway.v1.ReplayGapH" +
-      "\002\210\001\001\022@\n\016on_data_change\030\024 \001(\0132&.mxaccess_" +
-      "gateway.v1.OnDataChangeEventH\000\022F\n\021on_wri" +
-      "te_complete\030\025 \001(\0132).mxaccess_gateway.v1." +
-      "OnWriteCompleteEventH\000\022I\n\022operation_comp" +
-      "lete\030\026 \001(\0132+.mxaccess_gateway.v1.Operati" +
-      "onCompleteEventH\000\022Q\n\027on_buffered_data_ch" +
-      "ange\030\027 \001(\0132..mxaccess_gateway.v1.OnBuffe" +
-      "redDataChangeEventH\000\022J\n\023on_alarm_transit" +
-      "ion\030\030 \001(\0132+.mxaccess_gateway.v1.OnAlarmT" +
-      "ransitionEventH\000\022^\n\036on_alarm_provider_mo" +
-      "de_changed\030\031 \001(\01324.mxaccess_gateway.v1.O" +
-      "nAlarmProviderModeChangedEventH\000B\006\n\004body" +
-      "B\n\n\010_hresultB\r\n\013_replay_gap\"P\n\tReplayGap" +
-      "\022 \n\030requested_after_sequence\030\001 \001(\004\022!\n\031ol" +
-      "dest_available_sequence\030\002 \001(\004\"\023\n\021OnDataC" +
-      "hangeEvent\"\026\n\024OnWriteCompleteEvent\"\030\n\026Op" +
-      "erationCompleteEvent\"\324\001\n\031OnBufferedDataC" +
-      "hangeEvent\0222\n\tdata_type\030\001 \001(\0162\037.mxaccess" +
-      "_gateway.v1.MxDataType\0224\n\016quality_values" +
-      "\030\002 \001(\0132\034.mxaccess_gateway.v1.MxArray\0226\n\020" +
-      "timestamp_values\030\003 \001(\0132\034.mxaccess_gatewa" +
-      "y.v1.MxArray\022\025\n\rraw_data_type\030\004 \001(\005\"\320\004\n\026" +
-      "OnAlarmTransitionEvent\022\034\n\024alarm_full_ref" +
-      "erence\030\001 \001(\t\022\037\n\027source_object_reference\030" +
-      "\002 \001(\t\022\027\n\017alarm_type_name\030\003 \001(\t\022A\n\017transi" +
-      "tion_kind\030\004 \001(\0162(.mxaccess_gateway.v1.Al" +
-      "armTransitionKind\022\020\n\010severity\030\005 \001(\005\022<\n\030o" +
-      "riginal_raise_timestamp\030\006 \001(\0132\032.google.p" +
-      "rotobuf.Timestamp\0228\n\024transition_timestam" +
-      "p\030\007 \001(\0132\032.google.protobuf.Timestamp\022\025\n\ro" +
-      "perator_user\030\010 \001(\t\022\030\n\020operator_comment\030\t" +
-      " \001(\t\022\020\n\010category\030\n \001(\t\022\023\n\013description\030\013 " +
+      "MxValue\022\017\n\007user_id\030\003 \001(\005\"a\n\021Write2BulkCo" +
+      "mmand\022\025\n\rserver_handle\030\001 \001(\005\0225\n\007entries\030" +
+      "\002 \003(\0132$.mxaccess_gateway.v1.Write2BulkEn" +
+      "try\"\233\001\n\017Write2BulkEntry\022\023\n\013item_handle\030\001" +
+      " \001(\005\022+\n\005value\030\002 \001(\0132\034.mxaccess_gateway.v" +
+      "1.MxValue\0225\n\017timestamp_value\030\003 \001(\0132\034.mxa" +
+      "ccess_gateway.v1.MxValue\022\017\n\007user_id\030\004 \001(" +
+      "\005\"m\n\027WriteSecuredBulkCommand\022\025\n\rserver_h" +
+      "andle\030\001 \001(\005\022;\n\007entries\030\002 \003(\0132*.mxaccess_" +
+      "gateway.v1.WriteSecuredBulkEntry\"\214\001\n\025Wri" +
+      "teSecuredBulkEntry\022\023\n\013item_handle\030\001 \001(\005\022" +
+      "\027\n\017current_user_id\030\002 \001(\005\022\030\n\020verifier_use" +
+      "r_id\030\003 \001(\005\022+\n\005value\030\004 \001(\0132\034.mxaccess_gat" +
+      "eway.v1.MxValue\"o\n\030WriteSecured2BulkComm" +
+      "and\022\025\n\rserver_handle\030\001 \001(\005\022<\n\007entries\030\002 " +
+      "\003(\0132+.mxaccess_gateway.v1.WriteSecured2B" +
+      "ulkEntry\"\304\001\n\026WriteSecured2BulkEntry\022\023\n\013i" +
+      "tem_handle\030\001 \001(\005\022\027\n\017current_user_id\030\002 \001(" +
+      "\005\022\030\n\020verifier_user_id\030\003 \001(\005\022+\n\005value\030\004 \001" +
+      "(\0132\034.mxaccess_gateway.v1.MxValue\0225\n\017time" +
+      "stamp_value\030\005 \001(\0132\034.mxaccess_gateway.v1." +
+      "MxValue\"S\n\017ReadBulkCommand\022\025\n\rserver_han" +
+      "dle\030\001 \001(\005\022\025\n\rtag_addresses\030\002 \003(\t\022\022\n\ntime" +
+      "out_ms\030\003 \001(\r\"\036\n\013PingCommand\022\017\n\007message\030\001" +
+      " \001(\t\"\030\n\026GetSessionStateCommand\"\026\n\024GetWor" +
+      "kerInfoCommand\"(\n\022DrainEventsCommand\022\022\n\n" +
+      "max_events\030\001 \001(\r\"H\n\025ShutdownWorkerComman" +
+      "d\022/\n\014grace_period\030\001 \001(\0132\031.google.protobu" +
+      "f.Duration\"\206\017\n\016MxCommandReply\022\022\n\nsession" +
+      "_id\030\001 \001(\t\022\026\n\016correlation_id\030\002 \001(\t\0220\n\004kin" +
+      "d\030\003 \001(\0162\".mxaccess_gateway.v1.MxCommandK" +
+      "ind\022<\n\017protocol_status\030\004 \001(\0132#.mxaccess_" +
+      "gateway.v1.ProtocolStatus\022\024\n\007hresult\030\005 \001" +
+      "(\005H\001\210\001\001\0222\n\014return_value\030\006 \001(\0132\034.mxaccess" +
+      "_gateway.v1.MxValue\0224\n\010statuses\030\007 \003(\0132\"." +
+      "mxaccess_gateway.v1.MxStatusProxy\022\032\n\022dia" +
+      "gnostic_message\030\010 \001(\t\0226\n\010register\030\024 \001(\0132" +
+      "\".mxaccess_gateway.v1.RegisterReplyH\000\0225\n" +
+      "\010add_item\030\025 \001(\0132!.mxaccess_gateway.v1.Ad" +
+      "dItemReplyH\000\0227\n\tadd_item2\030\026 \001(\0132\".mxacce" +
+      "ss_gateway.v1.AddItem2ReplyH\000\022F\n\021add_buf" +
+      "fered_item\030\027 \001(\0132).mxaccess_gateway.v1.A" +
+      "ddBufferedItemReplyH\000\0224\n\007suspend\030\030 \001(\0132!" +
+      ".mxaccess_gateway.v1.SuspendReplyH\000\0226\n\010a" +
+      "ctivate\030\031 \001(\0132\".mxaccess_gateway.v1.Acti" +
+      "vateReplyH\000\022G\n\021authenticate_user\030\032 \001(\0132*" +
+      ".mxaccess_gateway.v1.AuthenticateUserRep" +
+      "lyH\000\022K\n\024archestra_user_to_id\030\033 \001(\0132+.mxa" +
+      "ccess_gateway.v1.ArchestrAUserToIdReplyH" +
+      "\000\022@\n\radd_item_bulk\030\034 \001(\0132\'.mxaccess_gate" +
+      "way.v1.BulkSubscribeReplyH\000\022C\n\020advise_it" +
+      "em_bulk\030\035 \001(\0132\'.mxaccess_gateway.v1.Bulk" +
+      "SubscribeReplyH\000\022C\n\020remove_item_bulk\030\036 \001" +
+      "(\0132\'.mxaccess_gateway.v1.BulkSubscribeRe" +
+      "plyH\000\022F\n\023un_advise_item_bulk\030\037 \001(\0132\'.mxa" +
+      "ccess_gateway.v1.BulkSubscribeReplyH\000\022A\n" +
+      "\016subscribe_bulk\030  \001(\0132\'.mxaccess_gateway" +
+      ".v1.BulkSubscribeReplyH\000\022C\n\020unsubscribe_" +
+      "bulk\030! \001(\0132\'.mxaccess_gateway.v1.BulkSub" +
+      "scribeReplyH\000\022N\n\021acknowledge_alarm\030\" \001(\013" +
+      "21.mxaccess_gateway.v1.AcknowledgeAlarmR" +
+      "eplyPayloadH\000\022Q\n\023query_active_alarms\030# \001" +
+      "(\01322.mxaccess_gateway.v1.QueryActiveAlar" +
+      "msReplyPayloadH\000\0229\n\nwrite_bulk\030$ \001(\0132#.m" +
+      "xaccess_gateway.v1.BulkWriteReplyH\000\022:\n\013w" +
+      "rite2_bulk\030% \001(\0132#.mxaccess_gateway.v1.B" +
+      "ulkWriteReplyH\000\022A\n\022write_secured_bulk\030& " +
+      "\001(\0132#.mxaccess_gateway.v1.BulkWriteReply" +
+      "H\000\022B\n\023write_secured2_bulk\030\' \001(\0132#.mxacce" +
+      "ss_gateway.v1.BulkWriteReplyH\000\0227\n\tread_b" +
+      "ulk\030( \001(\0132\".mxaccess_gateway.v1.BulkRead" +
+      "ReplyH\000\022?\n\rsession_state\030d \001(\0132&.mxacces" +
+      "s_gateway.v1.SessionStateReplyH\000\022;\n\013work" +
+      "er_info\030e \001(\0132$.mxaccess_gateway.v1.Work" +
+      "erInfoReplyH\000\022=\n\014drain_events\030f \001(\0132%.mx" +
+      "access_gateway.v1.DrainEventsReplyH\000B\t\n\007" +
+      "payloadB\n\n\010_hresult\"&\n\rRegisterReply\022\025\n\r" +
+      "server_handle\030\001 \001(\005\"#\n\014AddItemReply\022\023\n\013i" +
+      "tem_handle\030\001 \001(\005\"$\n\rAddItem2Reply\022\023\n\013ite" +
+      "m_handle\030\001 \001(\005\"+\n\024AddBufferedItemReply\022\023" +
+      "\n\013item_handle\030\001 \001(\005\"B\n\014SuspendReply\0222\n\006s" +
+      "tatus\030\001 \001(\0132\".mxaccess_gateway.v1.MxStat" +
+      "usProxy\"C\n\rActivateReply\0222\n\006status\030\001 \001(\013" +
+      "2\".mxaccess_gateway.v1.MxStatusProxy\"(\n\025" +
+      "AuthenticateUserReply\022\017\n\007user_id\030\001 \001(\005\")" +
+      "\n\026ArchestrAUserToIdReply\022\017\n\007user_id\030\001 \001(" +
+      "\005\"\201\001\n\017SubscribeResult\022\025\n\rserver_handle\030\001" +
+      " \001(\005\022\023\n\013tag_address\030\002 \001(\t\022\023\n\013item_handle" +
+      "\030\003 \001(\005\022\026\n\016was_successful\030\004 \001(\010\022\025\n\rerror_" +
+      "message\030\005 \001(\t\"K\n\022BulkSubscribeReply\0225\n\007r" +
+      "esults\030\001 \003(\0132$.mxaccess_gateway.v1.Subsc" +
+      "ribeResult\"\304\001\n\017BulkWriteResult\022\025\n\rserver" +
+      "_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022\026\n\016wa" +
+      "s_successful\030\003 \001(\010\022\024\n\007hresult\030\004 \001(\005H\000\210\001\001" +
+      "\0224\n\010statuses\030\005 \003(\0132\".mxaccess_gateway.v1" +
+      ".MxStatusProxy\022\025\n\rerror_message\030\006 \001(\tB\n\n" +
+      "\010_hresult\"G\n\016BulkWriteReply\0225\n\007results\030\001" +
+      " \003(\0132$.mxaccess_gateway.v1.BulkWriteResu" +
+      "lt\"\276\002\n\016BulkReadResult\022\025\n\rserver_handle\030\001" +
+      " \001(\005\022\023\n\013tag_address\030\002 \001(\t\022\023\n\013item_handle" +
+      "\030\003 \001(\005\022\026\n\016was_successful\030\004 \001(\010\022\022\n\nwas_ca" +
+      "ched\030\005 \001(\010\022+\n\005value\030\006 \001(\0132\034.mxaccess_gat" +
+      "eway.v1.MxValue\022\017\n\007quality\030\007 \001(\005\0224\n\020sour" +
+      "ce_timestamp\030\010 \001(\0132\032.google.protobuf.Tim" +
+      "estamp\0224\n\010statuses\030\t \003(\0132\".mxaccess_gate" +
+      "way.v1.MxStatusProxy\022\025\n\rerror_message\030\n " +
+      "\001(\t\"E\n\rBulkReadReply\0224\n\007results\030\001 \003(\0132#." +
+      "mxaccess_gateway.v1.BulkReadResult\"E\n\021Se" +
+      "ssionStateReply\0220\n\005state\030\001 \001(\0162!.mxacces" +
+      "s_gateway.v1.SessionState\"u\n\017WorkerInfoR" +
+      "eply\022\031\n\021worker_process_id\030\001 \001(\005\022\026\n\016worke" +
+      "r_version\030\002 \001(\t\022\027\n\017mxaccess_progid\030\003 \001(\t" +
+      "\022\026\n\016mxaccess_clsid\030\004 \001(\t\"@\n\020DrainEventsR" +
+      "eply\022,\n\006events\030\001 \003(\0132\034.mxaccess_gateway." +
+      "v1.MxEvent\"5\n\034AcknowledgeAlarmReplyPaylo" +
+      "ad\022\025\n\rnative_status\030\001 \001(\005\"x\n\035QueryActive" +
+      "AlarmsReplyPayload\022;\n\tsnapshots\030\001 \003(\0132(." +
+      "mxaccess_gateway.v1.ActiveAlarmSnapshot\022" +
+      "\032\n\022snapshot_truncated\030\002 \001(\010\"\217\010\n\007MxEvent\022" +
+      "2\n\006family\030\001 \001(\0162\".mxaccess_gateway.v1.Mx" +
+      "EventFamily\022\022\n\nsession_id\030\002 \001(\t\022\025\n\rserve" +
+      "r_handle\030\003 \001(\005\022\023\n\013item_handle\030\004 \001(\005\022+\n\005v" +
+      "alue\030\005 \001(\0132\034.mxaccess_gateway.v1.MxValue" +
+      "\022\017\n\007quality\030\006 \001(\005\0224\n\020source_timestamp\030\007 " +
+      "\001(\0132\032.google.protobuf.Timestamp\0224\n\010statu" +
+      "ses\030\010 \003(\0132\".mxaccess_gateway.v1.MxStatus" +
+      "Proxy\022\027\n\017worker_sequence\030\t \001(\004\0224\n\020worker" +
+      "_timestamp\030\n \001(\0132\032.google.protobuf.Times" +
+      "tamp\022=\n\031gateway_receive_timestamp\030\013 \001(\0132" +
+      "\032.google.protobuf.Timestamp\022\024\n\007hresult\030\014" +
+      " \001(\005H\001\210\001\001\022\022\n\nraw_status\030\r \001(\t\0227\n\nreplay_" +
+      "gap\030\016 \001(\0132\036.mxaccess_gateway.v1.ReplayGa" +
+      "pH\002\210\001\001\022@\n\016on_data_change\030\024 \001(\0132&.mxacces" +
+      "s_gateway.v1.OnDataChangeEventH\000\022F\n\021on_w" +
+      "rite_complete\030\025 \001(\0132).mxaccess_gateway.v" +
+      "1.OnWriteCompleteEventH\000\022I\n\022operation_co" +
+      "mplete\030\026 \001(\0132+.mxaccess_gateway.v1.Opera" +
+      "tionCompleteEventH\000\022Q\n\027on_buffered_data_" +
+      "change\030\027 \001(\0132..mxaccess_gateway.v1.OnBuf" +
+      "feredDataChangeEventH\000\022J\n\023on_alarm_trans" +
+      "ition\030\030 \001(\0132+.mxaccess_gateway.v1.OnAlar" +
+      "mTransitionEventH\000\022^\n\036on_alarm_provider_" +
+      "mode_changed\030\031 \001(\01324.mxaccess_gateway.v1" +
+      ".OnAlarmProviderModeChangedEventH\000B\006\n\004bo" +
+      "dyB\n\n\010_hresultB\r\n\013_replay_gap\"P\n\tReplayG" +
+      "ap\022 \n\030requested_after_sequence\030\001 \001(\004\022!\n\031" +
+      "oldest_available_sequence\030\002 \001(\004\"\023\n\021OnDat" +
+      "aChangeEvent\"\026\n\024OnWriteCompleteEvent\"\030\n\026" +
+      "OperationCompleteEvent\"\324\001\n\031OnBufferedDat" +
+      "aChangeEvent\0222\n\tdata_type\030\001 \001(\0162\037.mxacce" +
+      "ss_gateway.v1.MxDataType\0224\n\016quality_valu" +
+      "es\030\002 \001(\0132\034.mxaccess_gateway.v1.MxArray\0226" +
+      "\n\020timestamp_values\030\003 \001(\0132\034.mxaccess_gate" +
+      "way.v1.MxArray\022\025\n\rraw_data_type\030\004 \001(\005\"\320\004" +
+      "\n\026OnAlarmTransitionEvent\022\034\n\024alarm_full_r" +
+      "eference\030\001 \001(\t\022\037\n\027source_object_referenc" +
+      "e\030\002 \001(\t\022\027\n\017alarm_type_name\030\003 \001(\t\022A\n\017tran" +
+      "sition_kind\030\004 \001(\0162(.mxaccess_gateway.v1." +
+      "AlarmTransitionKind\022\020\n\010severity\030\005 \001(\005\022<\n" +
+      "\030original_raise_timestamp\030\006 \001(\0132\032.google" +
+      ".protobuf.Timestamp\0228\n\024transition_timest" +
+      "amp\030\007 \001(\0132\032.google.protobuf.Timestamp\022\025\n" +
+      "\roperator_user\030\010 \001(\t\022\030\n\020operator_comment" +
+      "\030\t \001(\t\022\020\n\010category\030\n \001(\t\022\023\n\013description\030" +
+      "\013 \001(\t\0223\n\rcurrent_value\030\014 \001(\0132\034.mxaccess_" +
+      "gateway.v1.MxValue\0221\n\013limit_value\030\r \001(\0132" +
+      "\034.mxaccess_gateway.v1.MxValue\022\020\n\010degrade" +
+      "d\030\016 \001(\010\022?\n\017source_provider\030\017 \001(\0162&.mxacc" +
+      "ess_gateway.v1.AlarmProviderMode\"\240\001\n\037OnA" +
+      "larmProviderModeChangedEvent\0224\n\004mode\030\001 \001" +
+      "(\0162&.mxaccess_gateway.v1.AlarmProviderMo" +
+      "de\022\016\n\006reason\030\002 \001(\t\022\017\n\007hresult\030\003 \001(\005\022&\n\002a" +
+      "t\030\004 \001(\0132\032.google.protobuf.Timestamp\"\361\004\n\023" +
+      "ActiveAlarmSnapshot\022\034\n\024alarm_full_refere" +
+      "nce\030\001 \001(\t\022\037\n\027source_object_reference\030\002 \001" +
+      "(\t\022\027\n\017alarm_type_name\030\003 \001(\t\022\020\n\010severity\030" +
+      "\004 \001(\005\022<\n\030original_raise_timestamp\030\005 \001(\0132" +
+      "\032.google.protobuf.Timestamp\022?\n\rcurrent_s" +
+      "tate\030\006 \001(\0162(.mxaccess_gateway.v1.AlarmCo" +
+      "nditionState\022\020\n\010category\030\007 \001(\t\022\023\n\013descri" +
+      "ption\030\010 \001(\t\022=\n\031last_transition_timestamp" +
+      "\030\t \001(\0132\032.google.protobuf.Timestamp\022\025\n\rop" +
+      "erator_user\030\n \001(\t\022\030\n\020operator_comment\030\013 " +
       "\001(\t\0223\n\rcurrent_value\030\014 \001(\0132\034.mxaccess_ga" +
       "teway.v1.MxValue\0221\n\013limit_value\030\r \001(\0132\034." +
       "mxaccess_gateway.v1.MxValue\022\020\n\010degraded\030" +
       "\016 \001(\010\022?\n\017source_provider\030\017 \001(\0162&.mxacces" +
-      "s_gateway.v1.AlarmProviderMode\"\240\001\n\037OnAla" +
-      "rmProviderModeChangedEvent\0224\n\004mode\030\001 \001(\016" +
-      "2&.mxaccess_gateway.v1.AlarmProviderMode" +
-      "\022\016\n\006reason\030\002 \001(\t\022\017\n\007hresult\030\003 \001(\005\022&\n\002at\030" +
-      "\004 \001(\0132\032.google.protobuf.Timestamp\"\361\004\n\023Ac" +
-      "tiveAlarmSnapshot\022\034\n\024alarm_full_referenc" +
-      "e\030\001 \001(\t\022\037\n\027source_object_reference\030\002 \001(\t" +
-      "\022\027\n\017alarm_type_name\030\003 \001(\t\022\020\n\010severity\030\004 " +
-      "\001(\005\022<\n\030original_raise_timestamp\030\005 \001(\0132\032." +
-      "google.protobuf.Timestamp\022?\n\rcurrent_sta" +
-      "te\030\006 \001(\0162(.mxaccess_gateway.v1.AlarmCond" +
-      "itionState\022\020\n\010category\030\007 \001(\t\022\023\n\013descript" +
-      "ion\030\010 \001(\t\022=\n\031last_transition_timestamp\030\t" +
-      " \001(\0132\032.google.protobuf.Timestamp\022\025\n\roper" +
-      "ator_user\030\n \001(\t\022\030\n\020operator_comment\030\013 \001(" +
-      "\t\0223\n\rcurrent_value\030\014 \001(\0132\034.mxaccess_gate" +
-      "way.v1.MxValue\0221\n\013limit_value\030\r \001(\0132\034.mx" +
-      "access_gateway.v1.MxValue\022\020\n\010degraded\030\016 " +
-      "\001(\010\022?\n\017source_provider\030\017 \001(\0162&.mxaccess_" +
-      "gateway.v1.AlarmProviderMode\022\037\n\027from_tru" +
-      "ncated_snapshot\030\020 \001(\010\"\220\001\n\027AcknowledgeAla" +
-      "rmRequest\022\035\n\025client_correlation_id\030\002 \001(\t" +
-      "\022\034\n\024alarm_full_reference\030\003 \001(\t\022\017\n\007commen" +
-      "t\030\004 \001(\t\022\025\n\roperator_user\030\005 \001(\tJ\004\010\001\020\002R\nse" +
-      "ssion_id\"\361\001\n\025AcknowledgeAlarmReply\022\026\n\016co" +
-      "rrelation_id\030\002 \001(\t\022<\n\017protocol_status\030\003 " +
-      "\001(\0132#.mxaccess_gateway.v1.ProtocolStatus" +
-      "\022\024\n\007hresult\030\004 \001(\005H\000\210\001\001\0222\n\006status\030\005 \001(\0132\"" +
-      ".mxaccess_gateway.v1.MxStatusProxy\022\032\n\022di" +
-      "agnostic_message\030\006 \001(\tB\n\n\010_hresultJ\004\010\001\020\002" +
-      "R\nsession_id\"Q\n\023StreamAlarmsRequest\022\035\n\025c" +
-      "lient_correlation_id\030\001 \001(\t\022\033\n\023alarm_filt" +
-      "er_prefix\030\002 \001(\t\"\311\002\n\020AlarmFeedMessage\022@\n\014" +
-      "active_alarm\030\001 \001(\0132(.mxaccess_gateway.v1" +
-      ".ActiveAlarmSnapshotH\000\022\033\n\021snapshot_compl" +
-      "ete\030\002 \001(\010H\000\022A\n\ntransition\030\003 \001(\0132+.mxacce" +
-      "ss_gateway.v1.OnAlarmTransitionEventH\000\022C" +
-      "\n\017provider_status\030\004 \001(\0132(.mxaccess_gatew" +
-      "ay.v1.AlarmProviderStatusH\000\022C\n\017snapshot_" +
-      "status\030\005 \001(\0132(.mxaccess_gateway.v1.Alarm" +
-      "SnapshotStatusH\000B\t\n\007payload\"\230\001\n\023AlarmPro" +
-      "viderStatus\0224\n\004mode\030\001 \001(\0162&.mxaccess_gat" +
-      "eway.v1.AlarmProviderMode\022\020\n\010degraded\030\002 " +
-      "\001(\010\022\016\n\006reason\030\003 \001(\t\022)\n\005since\030\004 \001(\0132\032.goo" +
-      "gle.protobuf.Timestamp\"(\n\023AlarmSnapshotS" +
-      "tatus\022\021\n\ttruncated\030\001 \001(\010\"\353\001\n\rMxStatusPro" +
-      "xy\022\017\n\007success\030\001 \001(\005\0227\n\010category\030\002 \001(\0162%." +
-      "mxaccess_gateway.v1.MxStatusCategory\0228\n\013" +
-      "detected_by\030\003 \001(\0162#.mxaccess_gateway.v1." +
-      "MxStatusSource\022\016\n\006detail\030\004 \001(\005\022\024\n\014raw_ca" +
-      "tegory\030\005 \001(\005\022\027\n\017raw_detected_by\030\006 \001(\005\022\027\n" +
-      "\017diagnostic_text\030\007 \001(\t\"\351\003\n\007MxValue\0222\n\tda" +
-      "ta_type\030\001 \001(\0162\037.mxaccess_gateway.v1.MxDa",
-      "taType\022\024\n\014variant_type\030\002 \001(\t\022\017\n\007is_null\030" +
-      "\003 \001(\010\022\026\n\016raw_diagnostic\030\004 \001(\t\022\025\n\rraw_dat" +
-      "a_type\030\005 \001(\005\022\024\n\nbool_value\030\n \001(\010H\000\022\025\n\013in" +
-      "t32_value\030\013 \001(\005H\000\022\025\n\013int64_value\030\014 \001(\003H\000" +
-      "\022\025\n\013float_value\030\r \001(\002H\000\022\026\n\014double_value\030" +
-      "\016 \001(\001H\000\022\026\n\014string_value\030\017 \001(\tH\000\0225\n\017times" +
-      "tamp_value\030\020 \001(\0132\032.google.protobuf.Times" +
-      "tampH\000\0223\n\013array_value\030\021 \001(\0132\034.mxaccess_g" +
-      "ateway.v1.MxArrayH\000\022\023\n\traw_value\030\022 \001(\014H\000" +
-      "\022@\n\022sparse_array_value\030\023 \001(\0132\".mxaccess_" +
-      "gateway.v1.MxSparseArrayH\000B\006\n\004kind\"\376\004\n\007M" +
-      "xArray\022:\n\021element_data_type\030\001 \001(\0162\037.mxac" +
-      "cess_gateway.v1.MxDataType\022\024\n\014variant_ty" +
-      "pe\030\002 \001(\t\022\022\n\ndimensions\030\003 \003(\r\022\026\n\016raw_diag" +
-      "nostic\030\004 \001(\t\022\035\n\025raw_element_data_type\030\005 " +
-      "\001(\005\0225\n\013bool_values\030\n \001(\0132\036.mxaccess_gate" +
-      "way.v1.BoolArrayH\000\0227\n\014int32_values\030\013 \001(\013" +
-      "2\037.mxaccess_gateway.v1.Int32ArrayH\000\0227\n\014i" +
-      "nt64_values\030\014 \001(\0132\037.mxaccess_gateway.v1." +
-      "Int64ArrayH\000\0227\n\014float_values\030\r \001(\0132\037.mxa" +
-      "ccess_gateway.v1.FloatArrayH\000\0229\n\rdouble_" +
-      "values\030\016 \001(\0132 .mxaccess_gateway.v1.Doubl" +
-      "eArrayH\000\0229\n\rstring_values\030\017 \001(\0132 .mxacce" +
-      "ss_gateway.v1.StringArrayH\000\022?\n\020timestamp" +
-      "_values\030\020 \001(\0132#.mxaccess_gateway.v1.Time" +
-      "stampArrayH\000\0223\n\nraw_values\030\021 \001(\0132\035.mxacc" +
-      "ess_gateway.v1.RawArrayH\000B\010\n\006values\"\231\001\n\r" +
-      "MxSparseArray\022:\n\021element_data_type\030\001 \001(\016" +
-      "2\037.mxaccess_gateway.v1.MxDataType\022\024\n\014tot" +
-      "al_length\030\002 \001(\r\0226\n\010elements\030\003 \003(\0132$.mxac" +
-      "cess_gateway.v1.MxSparseElement\"M\n\017MxSpa" +
-      "rseElement\022\r\n\005index\030\001 \001(\r\022+\n\005value\030\002 \001(\013" +
-      "2\034.mxaccess_gateway.v1.MxValue\"\033\n\tBoolAr" +
-      "ray\022\016\n\006values\030\001 \003(\010\"\034\n\nInt32Array\022\016\n\006val" +
-      "ues\030\001 \003(\005\"\034\n\nInt64Array\022\016\n\006values\030\001 \003(\003\"" +
-      "\034\n\nFloatArray\022\016\n\006values\030\001 \003(\002\"\035\n\013DoubleA" +
-      "rray\022\016\n\006values\030\001 \003(\001\"\035\n\013StringArray\022\016\n\006v" +
-      "alues\030\001 \003(\t\"<\n\016TimestampArray\022*\n\006values\030" +
-      "\001 \003(\0132\032.google.protobuf.Timestamp\"\032\n\010Raw" +
-      "Array\022\016\n\006values\030\001 \003(\014\"X\n\016ProtocolStatus\022" +
-      "5\n\004code\030\001 \001(\0162\'.mxaccess_gateway.v1.Prot" +
-      "ocolStatusCode\022\017\n\007message\030\002 \001(\t*\237\013\n\rMxCo" +
-      "mmandKind\022\037\n\033MX_COMMAND_KIND_UNSPECIFIED" +
-      "\020\000\022\034\n\030MX_COMMAND_KIND_REGISTER\020\001\022\036\n\032MX_C" +
-      "OMMAND_KIND_UNREGISTER\020\002\022\034\n\030MX_COMMAND_K" +
-      "IND_ADD_ITEM\020\003\022\035\n\031MX_COMMAND_KIND_ADD_IT" +
-      "EM2\020\004\022\037\n\033MX_COMMAND_KIND_REMOVE_ITEM\020\005\022\032" +
-      "\n\026MX_COMMAND_KIND_ADVISE\020\006\022\035\n\031MX_COMMAND" +
-      "_KIND_UN_ADVISE\020\007\022&\n\"MX_COMMAND_KIND_ADV" +
-      "ISE_SUPERVISORY\020\010\022%\n!MX_COMMAND_KIND_ADD" +
-      "_BUFFERED_ITEM\020\t\0220\n,MX_COMMAND_KIND_SET_" +
-      "BUFFERED_UPDATE_INTERVAL\020\n\022\033\n\027MX_COMMAND" +
-      "_KIND_SUSPEND\020\013\022\034\n\030MX_COMMAND_KIND_ACTIV" +
-      "ATE\020\014\022\031\n\025MX_COMMAND_KIND_WRITE\020\r\022\032\n\026MX_C" +
-      "OMMAND_KIND_WRITE2\020\016\022!\n\035MX_COMMAND_KIND_" +
-      "WRITE_SECURED\020\017\022\"\n\036MX_COMMAND_KIND_WRITE" +
-      "_SECURED2\020\020\022%\n!MX_COMMAND_KIND_AUTHENTIC" +
-      "ATE_USER\020\021\022(\n$MX_COMMAND_KIND_ARCHESTRA_" +
-      "USER_TO_ID\020\022\022!\n\035MX_COMMAND_KIND_ADD_ITEM" +
-      "_BULK\020\023\022$\n MX_COMMAND_KIND_ADVISE_ITEM_B" +
-      "ULK\020\024\022$\n MX_COMMAND_KIND_REMOVE_ITEM_BUL" +
-      "K\020\025\022\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_BU" +
-      "LK\020\026\022\"\n\036MX_COMMAND_KIND_SUBSCRIBE_BULK\020\027" +
-      "\022$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\020\030\022$" +
-      "\n MX_COMMAND_KIND_SUBSCRIBE_ALARMS\020\031\022&\n\"" +
-      "MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\020\032\022%\n!" +
-      "MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\020\033\022\'\n#M" +
-      "X_COMMAND_KIND_QUERY_ACTIVE_ALARMS\020\034\022-\n)" +
-      "MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAM" +
-      "E\020\035\022\036\n\032MX_COMMAND_KIND_WRITE_BULK\020\036\022\037\n\033M" +
-      "X_COMMAND_KIND_WRITE2_BULK\020\037\022&\n\"MX_COMMA" +
-      "ND_KIND_WRITE_SECURED_BULK\020 \022\'\n#MX_COMMA" +
-      "ND_KIND_WRITE_SECURED2_BULK\020!\022\035\n\031MX_COMM" +
-      "AND_KIND_READ_BULK\020\"\022\030\n\024MX_COMMAND_KIND_" +
-      "PING\020d\022%\n!MX_COMMAND_KIND_GET_SESSION_ST" +
-      "ATE\020e\022#\n\037MX_COMMAND_KIND_GET_WORKER_INFO" +
-      "\020f\022 \n\034MX_COMMAND_KIND_DRAIN_EVENTS\020g\022#\n\037" +
-      "MX_COMMAND_KIND_SHUTDOWN_WORKER\020h*z\n\021Ala" +
-      "rmProviderMode\022#\n\037ALARM_PROVIDER_MODE_UN" +
-      "SPECIFIED\020\000\022 \n\034ALARM_PROVIDER_MODE_ALARM" +
-      "MGR\020\001\022\036\n\032ALARM_PROVIDER_MODE_SUBTAG\020\002*\255\002" +
-      "\n\rMxEventFamily\022\037\n\033MX_EVENT_FAMILY_UNSPE" +
-      "CIFIED\020\000\022\"\n\036MX_EVENT_FAMILY_ON_DATA_CHAN" +
-      "GE\020\001\022%\n!MX_EVENT_FAMILY_ON_WRITE_COMPLET" +
-      "E\020\002\022&\n\"MX_EVENT_FAMILY_OPERATION_COMPLET" +
-      "E\020\003\022+\n\'MX_EVENT_FAMILY_ON_BUFFERED_DATA_" +
-      "CHANGE\020\004\022\'\n#MX_EVENT_FAMILY_ON_ALARM_TRA" +
-      "NSITION\020\005\0222\n.MX_EVENT_FAMILY_ON_ALARM_PR" +
-      "OVIDER_MODE_CHANGED\020\006*\312\001\n\023AlarmTransitio" +
-      "nKind\022%\n!ALARM_TRANSITION_KIND_UNSPECIFI" +
-      "ED\020\000\022\037\n\033ALARM_TRANSITION_KIND_RAISE\020\001\022%\n" +
-      "!ALARM_TRANSITION_KIND_ACKNOWLEDGE\020\002\022\037\n\033" +
-      "ALARM_TRANSITION_KIND_CLEAR\020\003\022#\n\037ALARM_T" +
-      "RANSITION_KIND_RETRIGGER\020\004*\252\001\n\023AlarmCond" +
-      "itionState\022%\n!ALARM_CONDITION_STATE_UNSP" +
-      "ECIFIED\020\000\022 \n\034ALARM_CONDITION_STATE_ACTIV" +
-      "E\020\001\022&\n\"ALARM_CONDITION_STATE_ACTIVE_ACKE" +
-      "D\020\002\022\"\n\036ALARM_CONDITION_STATE_INACTIVE\020\003*" +
-      "\245\003\n\020MxStatusCategory\022\"\n\036MX_STATUS_CATEGO" +
-      "RY_UNSPECIFIED\020\000\022\036\n\032MX_STATUS_CATEGORY_U" +
-      "NKNOWN\020\001\022\031\n\025MX_STATUS_CATEGORY_OK\020\002\022\036\n\032M" +
-      "X_STATUS_CATEGORY_PENDING\020\003\022\036\n\032MX_STATUS" +
-      "_CATEGORY_WARNING\020\004\022*\n&MX_STATUS_CATEGOR" +
-      "Y_COMMUNICATION_ERROR\020\005\022*\n&MX_STATUS_CAT" +
-      "EGORY_CONFIGURATION_ERROR\020\006\022(\n$MX_STATUS" +
-      "_CATEGORY_OPERATIONAL_ERROR\020\007\022%\n!MX_STAT" +
-      "US_CATEGORY_SECURITY_ERROR\020\010\022%\n!MX_STATU" +
-      "S_CATEGORY_SOFTWARE_ERROR\020\t\022\"\n\036MX_STATUS" +
-      "_CATEGORY_OTHER_ERROR\020\n*\312\002\n\016MxStatusSour" +
-      "ce\022 \n\034MX_STATUS_SOURCE_UNSPECIFIED\020\000\022\034\n\030" +
-      "MX_STATUS_SOURCE_UNKNOWN\020\001\022#\n\037MX_STATUS_" +
-      "SOURCE_REQUESTING_LMX\020\002\022#\n\037MX_STATUS_SOU" +
-      "RCE_RESPONDING_LMX\020\003\022#\n\037MX_STATUS_SOURCE" +
-      "_REQUESTING_NMX\020\004\022#\n\037MX_STATUS_SOURCE_RE" +
-      "SPONDING_NMX\020\005\0221\n-MX_STATUS_SOURCE_REQUE" +
-      "STING_AUTOMATION_OBJECT\020\006\0221\n-MX_STATUS_S" +
-      "OURCE_RESPONDING_AUTOMATION_OBJECT\020\007*\335\004\n" +
-      "\nMxDataType\022\034\n\030MX_DATA_TYPE_UNSPECIFIED\020" +
-      "\000\022\030\n\024MX_DATA_TYPE_UNKNOWN\020\001\022\030\n\024MX_DATA_T" +
-      "YPE_NO_DATA\020\002\022\030\n\024MX_DATA_TYPE_BOOLEAN\020\003\022" +
-      "\030\n\024MX_DATA_TYPE_INTEGER\020\004\022\026\n\022MX_DATA_TYP" +
-      "E_FLOAT\020\005\022\027\n\023MX_DATA_TYPE_DOUBLE\020\006\022\027\n\023MX" +
-      "_DATA_TYPE_STRING\020\007\022\025\n\021MX_DATA_TYPE_TIME" +
-      "\020\010\022\035\n\031MX_DATA_TYPE_ELAPSED_TIME\020\t\022\037\n\033MX_" +
-      "DATA_TYPE_REFERENCE_TYPE\020\n\022\034\n\030MX_DATA_TY" +
-      "PE_STATUS_TYPE\020\013\022\025\n\021MX_DATA_TYPE_ENUM\020\014\022" +
-      "-\n)MX_DATA_TYPE_SECURITY_CLASSIFICATION_" +
-      "ENUM\020\r\022\"\n\036MX_DATA_TYPE_DATA_QUALITY_TYPE" +
-      "\020\016\022\037\n\033MX_DATA_TYPE_QUALIFIED_ENUM\020\017\022!\n\035M" +
-      "X_DATA_TYPE_QUALIFIED_STRUCT\020\020\022)\n%MX_DAT" +
-      "A_TYPE_INTERNATIONALIZED_STRING\020\021\022\033\n\027MX_" +
-      "DATA_TYPE_BIG_STRING\020\022\022\024\n\020MX_DATA_TYPE_E" +
-      "ND\020\023*\243\003\n\022ProtocolStatusCode\022$\n PROTOCOL_" +
-      "STATUS_CODE_UNSPECIFIED\020\000\022\033\n\027PROTOCOL_ST" +
-      "ATUS_CODE_OK\020\001\022(\n$PROTOCOL_STATUS_CODE_I" +
-      "NVALID_REQUEST\020\002\022*\n&PROTOCOL_STATUS_CODE" +
-      "_SESSION_NOT_FOUND\020\003\022*\n&PROTOCOL_STATUS_" +
-      "CODE_SESSION_NOT_READY\020\004\022+\n\'PROTOCOL_STA" +
-      "TUS_CODE_WORKER_UNAVAILABLE\020\005\022 \n\034PROTOCO" +
-      "L_STATUS_CODE_TIMEOUT\020\006\022!\n\035PROTOCOL_STAT" +
-      "US_CODE_CANCELED\020\007\022+\n\'PROTOCOL_STATUS_CO" +
-      "DE_PROTOCOL_VIOLATION\020\010\022)\n%PROTOCOL_STAT" +
-      "US_CODE_MXACCESS_FAILURE\020\t*\277\002\n\014SessionSt" +
-      "ate\022\035\n\031SESSION_STATE_UNSPECIFIED\020\000\022\032\n\026SE" +
-      "SSION_STATE_CREATING\020\001\022!\n\035SESSION_STATE_" +
-      "STARTING_WORKER\020\002\022\"\n\036SESSION_STATE_WAITI" +
-      "NG_FOR_PIPE\020\003\022\035\n\031SESSION_STATE_HANDSHAKI" +
-      "NG\020\004\022%\n!SESSION_STATE_INITIALIZING_WORKE" +
-      "R\020\005\022\027\n\023SESSION_STATE_READY\020\006\022\031\n\025SESSION_" +
-      "STATE_CLOSING\020\007\022\030\n\024SESSION_STATE_CLOSED\020" +
-      "\010\022\031\n\025SESSION_STATE_FAULTED\020\t2\303\005\n\017MxAcces" +
-      "sGateway\022]\n\013OpenSession\022\'.mxaccess_gatew" +
-      "ay.v1.OpenSessionRequest\032%.mxaccess_gate" +
-      "way.v1.OpenSessionReply\022`\n\014CloseSession\022" +
-      "(.mxaccess_gateway.v1.CloseSessionReques" +
-      "t\032&.mxaccess_gateway.v1.CloseSessionRepl" +
-      "y\022T\n\006Invoke\022%.mxaccess_gateway.v1.MxComm" +
-      "andRequest\032#.mxaccess_gateway.v1.MxComma" +
-      "ndReply\022X\n\014StreamEvents\022(.mxaccess_gatew" +
-      "ay.v1.StreamEventsRequest\032\034.mxaccess_gat" +
-      "eway.v1.MxEvent0\001\022l\n\020AcknowledgeAlarm\022,." +
-      "mxaccess_gateway.v1.AcknowledgeAlarmRequ" +
-      "est\032*.mxaccess_gateway.v1.AcknowledgeAla" +
-      "rmReply\022a\n\014StreamAlarms\022(.mxaccess_gatew" +
-      "ay.v1.StreamAlarmsRequest\032%.mxaccess_gat" +
-      "eway.v1.AlarmFeedMessage0\001\022n\n\021QueryActiv" +
-      "eAlarms\022-.mxaccess_gateway.v1.QueryActiv" +
-      "eAlarmsRequest\032(.mxaccess_gateway.v1.Act" +
-      "iveAlarmSnapshot0\001B&\252\002#ZB.MOM.WW.MxGatew" +
-      "ay.Contracts.Protob\006proto3"
+      "s_gateway.v1.AlarmProviderMode\022\037\n\027from_t" +
+      "runcated_snapshot\030\020 \001(\010\"\220\001\n\027AcknowledgeA" +
+      "larmRequest\022\035\n\025client_correlation_id\030\002 \001" +
+      "(\t\022\034\n\024alarm_full_reference\030\003 \001(\t\022\017\n\007comm" +
+      "ent\030\004 \001(\t\022\025\n\roperator_user\030\005 \001(\tJ\004\010\001\020\002R\n" +
+      "session_id\"\361\001\n\025AcknowledgeAlarmReply\022\026\n\016" +
+      "correlation_id\030\002 \001(\t\022<\n\017protocol_status\030" +
+      "\003 \001(\0132#.mxaccess_gateway.v1.ProtocolStat" +
+      "us\022\024\n\007hresult\030\004 \001(\005H\000\210\001\001\0222\n\006status\030\005 \001(\013" +
+      "2\".mxaccess_gateway.v1.MxStatusProxy\022\032\n\022" +
+      "diagnostic_message\030\006 \001(\tB\n\n\010_hresultJ\004\010\001" +
+      "\020\002R\nsession_id\"Q\n\023StreamAlarmsRequest\022\035\n" +
+      "\025client_correlation_id\030\001 \001(\t\022\033\n\023alarm_fi" +
+      "lter_prefix\030\002 \001(\t\"\311\002\n\020AlarmFeedMessage\022@" +
+      "\n\014active_alarm\030\001 \001(\0132(.mxaccess_gateway." +
+      "v1.ActiveAlarmSnapshotH\000\022\033\n\021snapshot_com" +
+      "plete\030\002 \001(\010H\000\022A\n\ntransition\030\003 \001(\0132+.mxac" +
+      "cess_gateway.v1.OnAlarmTransitionEventH\000" +
+      "\022C\n\017provider_status\030\004 \001(\0132(.mxaccess_gat" +
+      "eway.v1.AlarmProviderStatusH\000\022C\n\017snapsho" +
+      "t_status\030\005 \001(\0132(.mxaccess_gateway.v1.Ala" +
+      "rmSnapshotStatusH\000B\t\n\007payload\"\230\001\n\023AlarmP" +
+      "roviderStatus\0224\n\004mode\030\001 \001(\0162&.mxaccess_g" +
+      "ateway.v1.AlarmProviderMode\022\020\n\010degraded\030" +
+      "\002 \001(\010\022\016\n\006reason\030\003 \001(\t\022)\n\005since\030\004 \001(\0132\032.g" +
+      "oogle.protobuf.Timestamp\"(\n\023AlarmSnapsho" +
+      "tStatus\022\021\n\ttruncated\030\001 \001(\010\"\353\001\n\rMxStatusP" +
+      "roxy\022\017\n\007success\030\001 \001(\005\0227\n\010category\030\002 \001(\0162" +
+      "%.mxaccess_gateway.v1.MxStatusCategory\0228",
+      "\n\013detected_by\030\003 \001(\0162#.mxaccess_gateway.v" +
+      "1.MxStatusSource\022\016\n\006detail\030\004 \001(\005\022\024\n\014raw_" +
+      "category\030\005 \001(\005\022\027\n\017raw_detected_by\030\006 \001(\005\022" +
+      "\027\n\017diagnostic_text\030\007 \001(\t\"\351\003\n\007MxValue\0222\n\t" +
+      "data_type\030\001 \001(\0162\037.mxaccess_gateway.v1.Mx" +
+      "DataType\022\024\n\014variant_type\030\002 \001(\t\022\017\n\007is_nul" +
+      "l\030\003 \001(\010\022\026\n\016raw_diagnostic\030\004 \001(\t\022\025\n\rraw_d" +
+      "ata_type\030\005 \001(\005\022\024\n\nbool_value\030\n \001(\010H\000\022\025\n\013" +
+      "int32_value\030\013 \001(\005H\000\022\025\n\013int64_value\030\014 \001(\003" +
+      "H\000\022\025\n\013float_value\030\r \001(\002H\000\022\026\n\014double_valu" +
+      "e\030\016 \001(\001H\000\022\026\n\014string_value\030\017 \001(\tH\000\0225\n\017tim" +
+      "estamp_value\030\020 \001(\0132\032.google.protobuf.Tim" +
+      "estampH\000\0223\n\013array_value\030\021 \001(\0132\034.mxaccess" +
+      "_gateway.v1.MxArrayH\000\022\023\n\traw_value\030\022 \001(\014" +
+      "H\000\022@\n\022sparse_array_value\030\023 \001(\0132\".mxacces" +
+      "s_gateway.v1.MxSparseArrayH\000B\006\n\004kind\"\376\004\n" +
+      "\007MxArray\022:\n\021element_data_type\030\001 \001(\0162\037.mx" +
+      "access_gateway.v1.MxDataType\022\024\n\014variant_" +
+      "type\030\002 \001(\t\022\022\n\ndimensions\030\003 \003(\r\022\026\n\016raw_di" +
+      "agnostic\030\004 \001(\t\022\035\n\025raw_element_data_type\030" +
+      "\005 \001(\005\0225\n\013bool_values\030\n \001(\0132\036.mxaccess_ga" +
+      "teway.v1.BoolArrayH\000\0227\n\014int32_values\030\013 \001" +
+      "(\0132\037.mxaccess_gateway.v1.Int32ArrayH\000\0227\n" +
+      "\014int64_values\030\014 \001(\0132\037.mxaccess_gateway.v" +
+      "1.Int64ArrayH\000\0227\n\014float_values\030\r \001(\0132\037.m" +
+      "xaccess_gateway.v1.FloatArrayH\000\0229\n\rdoubl" +
+      "e_values\030\016 \001(\0132 .mxaccess_gateway.v1.Dou" +
+      "bleArrayH\000\0229\n\rstring_values\030\017 \001(\0132 .mxac" +
+      "cess_gateway.v1.StringArrayH\000\022?\n\020timesta" +
+      "mp_values\030\020 \001(\0132#.mxaccess_gateway.v1.Ti" +
+      "mestampArrayH\000\0223\n\nraw_values\030\021 \001(\0132\035.mxa" +
+      "ccess_gateway.v1.RawArrayH\000B\010\n\006values\"\231\001" +
+      "\n\rMxSparseArray\022:\n\021element_data_type\030\001 \001" +
+      "(\0162\037.mxaccess_gateway.v1.MxDataType\022\024\n\014t" +
+      "otal_length\030\002 \001(\r\0226\n\010elements\030\003 \003(\0132$.mx" +
+      "access_gateway.v1.MxSparseElement\"M\n\017MxS" +
+      "parseElement\022\r\n\005index\030\001 \001(\r\022+\n\005value\030\002 \001" +
+      "(\0132\034.mxaccess_gateway.v1.MxValue\"\033\n\tBool" +
+      "Array\022\016\n\006values\030\001 \003(\010\"\034\n\nInt32Array\022\016\n\006v" +
+      "alues\030\001 \003(\005\"\034\n\nInt64Array\022\016\n\006values\030\001 \003(" +
+      "\003\"\034\n\nFloatArray\022\016\n\006values\030\001 \003(\002\"\035\n\013Doubl" +
+      "eArray\022\016\n\006values\030\001 \003(\001\"\035\n\013StringArray\022\016\n" +
+      "\006values\030\001 \003(\t\"<\n\016TimestampArray\022*\n\006value" +
+      "s\030\001 \003(\0132\032.google.protobuf.Timestamp\"\032\n\010R" +
+      "awArray\022\016\n\006values\030\001 \003(\014\"X\n\016ProtocolStatu" +
+      "s\0225\n\004code\030\001 \001(\0162\'.mxaccess_gateway.v1.Pr" +
+      "otocolStatusCode\022\017\n\007message\030\002 \001(\t*\314\013\n\rMx" +
+      "CommandKind\022\037\n\033MX_COMMAND_KIND_UNSPECIFI" +
+      "ED\020\000\022\034\n\030MX_COMMAND_KIND_REGISTER\020\001\022\036\n\032MX" +
+      "_COMMAND_KIND_UNREGISTER\020\002\022\034\n\030MX_COMMAND" +
+      "_KIND_ADD_ITEM\020\003\022\035\n\031MX_COMMAND_KIND_ADD_" +
+      "ITEM2\020\004\022\037\n\033MX_COMMAND_KIND_REMOVE_ITEM\020\005" +
+      "\022\032\n\026MX_COMMAND_KIND_ADVISE\020\006\022\035\n\031MX_COMMA" +
+      "ND_KIND_UN_ADVISE\020\007\022&\n\"MX_COMMAND_KIND_A" +
+      "DVISE_SUPERVISORY\020\010\022%\n!MX_COMMAND_KIND_A" +
+      "DD_BUFFERED_ITEM\020\t\0220\n,MX_COMMAND_KIND_SE" +
+      "T_BUFFERED_UPDATE_INTERVAL\020\n\022\033\n\027MX_COMMA" +
+      "ND_KIND_SUSPEND\020\013\022\034\n\030MX_COMMAND_KIND_ACT" +
+      "IVATE\020\014\022\031\n\025MX_COMMAND_KIND_WRITE\020\r\022\032\n\026MX" +
+      "_COMMAND_KIND_WRITE2\020\016\022!\n\035MX_COMMAND_KIN" +
+      "D_WRITE_SECURED\020\017\022\"\n\036MX_COMMAND_KIND_WRI" +
+      "TE_SECURED2\020\020\022%\n!MX_COMMAND_KIND_AUTHENT" +
+      "ICATE_USER\020\021\022(\n$MX_COMMAND_KIND_ARCHESTR" +
+      "A_USER_TO_ID\020\022\022!\n\035MX_COMMAND_KIND_ADD_IT" +
+      "EM_BULK\020\023\022$\n MX_COMMAND_KIND_ADVISE_ITEM" +
+      "_BULK\020\024\022$\n MX_COMMAND_KIND_REMOVE_ITEM_B" +
+      "ULK\020\025\022\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_" +
+      "BULK\020\026\022\"\n\036MX_COMMAND_KIND_SUBSCRIBE_BULK" +
+      "\020\027\022$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\020\030" +
+      "\022$\n MX_COMMAND_KIND_SUBSCRIBE_ALARMS\020\031\022&" +
+      "\n\"MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\020\032\022%" +
+      "\n!MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\020\033\022\'\n" +
+      "#MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS\020\034\022-" +
+      "\n)MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_N" +
+      "AME\020\035\022\036\n\032MX_COMMAND_KIND_WRITE_BULK\020\036\022\037\n" +
+      "\033MX_COMMAND_KIND_WRITE2_BULK\020\037\022&\n\"MX_COM" +
+      "MAND_KIND_WRITE_SECURED_BULK\020 \022\'\n#MX_COM" +
+      "MAND_KIND_WRITE_SECURED2_BULK\020!\022\035\n\031MX_CO" +
+      "MMAND_KIND_READ_BULK\020\"\022+\n\'MX_COMMAND_KIN" +
+      "D_UPDATE_ALARM_WATCH_LIST\020#\022\030\n\024MX_COMMAN" +
+      "D_KIND_PING\020d\022%\n!MX_COMMAND_KIND_GET_SES" +
+      "SION_STATE\020e\022#\n\037MX_COMMAND_KIND_GET_WORK" +
+      "ER_INFO\020f\022 \n\034MX_COMMAND_KIND_DRAIN_EVENT" +
+      "S\020g\022#\n\037MX_COMMAND_KIND_SHUTDOWN_WORKER\020h" +
+      "*z\n\021AlarmProviderMode\022#\n\037ALARM_PROVIDER_" +
+      "MODE_UNSPECIFIED\020\000\022 \n\034ALARM_PROVIDER_MOD" +
+      "E_ALARMMGR\020\001\022\036\n\032ALARM_PROVIDER_MODE_SUBT" +
+      "AG\020\002*\255\002\n\rMxEventFamily\022\037\n\033MX_EVENT_FAMIL" +
+      "Y_UNSPECIFIED\020\000\022\"\n\036MX_EVENT_FAMILY_ON_DA" +
+      "TA_CHANGE\020\001\022%\n!MX_EVENT_FAMILY_ON_WRITE_" +
+      "COMPLETE\020\002\022&\n\"MX_EVENT_FAMILY_OPERATION_" +
+      "COMPLETE\020\003\022+\n\'MX_EVENT_FAMILY_ON_BUFFERE" +
+      "D_DATA_CHANGE\020\004\022\'\n#MX_EVENT_FAMILY_ON_AL" +
+      "ARM_TRANSITION\020\005\0222\n.MX_EVENT_FAMILY_ON_A" +
+      "LARM_PROVIDER_MODE_CHANGED\020\006*\312\001\n\023AlarmTr" +
+      "ansitionKind\022%\n!ALARM_TRANSITION_KIND_UN" +
+      "SPECIFIED\020\000\022\037\n\033ALARM_TRANSITION_KIND_RAI" +
+      "SE\020\001\022%\n!ALARM_TRANSITION_KIND_ACKNOWLEDG" +
+      "E\020\002\022\037\n\033ALARM_TRANSITION_KIND_CLEAR\020\003\022#\n\037" +
+      "ALARM_TRANSITION_KIND_RETRIGGER\020\004*\252\001\n\023Al" +
+      "armConditionState\022%\n!ALARM_CONDITION_STA" +
+      "TE_UNSPECIFIED\020\000\022 \n\034ALARM_CONDITION_STAT" +
+      "E_ACTIVE\020\001\022&\n\"ALARM_CONDITION_STATE_ACTI" +
+      "VE_ACKED\020\002\022\"\n\036ALARM_CONDITION_STATE_INAC" +
+      "TIVE\020\003*\245\003\n\020MxStatusCategory\022\"\n\036MX_STATUS" +
+      "_CATEGORY_UNSPECIFIED\020\000\022\036\n\032MX_STATUS_CAT" +
+      "EGORY_UNKNOWN\020\001\022\031\n\025MX_STATUS_CATEGORY_OK" +
+      "\020\002\022\036\n\032MX_STATUS_CATEGORY_PENDING\020\003\022\036\n\032MX" +
+      "_STATUS_CATEGORY_WARNING\020\004\022*\n&MX_STATUS_" +
+      "CATEGORY_COMMUNICATION_ERROR\020\005\022*\n&MX_STA" +
+      "TUS_CATEGORY_CONFIGURATION_ERROR\020\006\022(\n$MX" +
+      "_STATUS_CATEGORY_OPERATIONAL_ERROR\020\007\022%\n!" +
+      "MX_STATUS_CATEGORY_SECURITY_ERROR\020\010\022%\n!M" +
+      "X_STATUS_CATEGORY_SOFTWARE_ERROR\020\t\022\"\n\036MX" +
+      "_STATUS_CATEGORY_OTHER_ERROR\020\n*\312\002\n\016MxSta" +
+      "tusSource\022 \n\034MX_STATUS_SOURCE_UNSPECIFIE" +
+      "D\020\000\022\034\n\030MX_STATUS_SOURCE_UNKNOWN\020\001\022#\n\037MX_" +
+      "STATUS_SOURCE_REQUESTING_LMX\020\002\022#\n\037MX_STA" +
+      "TUS_SOURCE_RESPONDING_LMX\020\003\022#\n\037MX_STATUS" +
+      "_SOURCE_REQUESTING_NMX\020\004\022#\n\037MX_STATUS_SO" +
+      "URCE_RESPONDING_NMX\020\005\0221\n-MX_STATUS_SOURC" +
+      "E_REQUESTING_AUTOMATION_OBJECT\020\006\0221\n-MX_S" +
+      "TATUS_SOURCE_RESPONDING_AUTOMATION_OBJEC" +
+      "T\020\007*\335\004\n\nMxDataType\022\034\n\030MX_DATA_TYPE_UNSPE" +
+      "CIFIED\020\000\022\030\n\024MX_DATA_TYPE_UNKNOWN\020\001\022\030\n\024MX" +
+      "_DATA_TYPE_NO_DATA\020\002\022\030\n\024MX_DATA_TYPE_BOO" +
+      "LEAN\020\003\022\030\n\024MX_DATA_TYPE_INTEGER\020\004\022\026\n\022MX_D" +
+      "ATA_TYPE_FLOAT\020\005\022\027\n\023MX_DATA_TYPE_DOUBLE\020" +
+      "\006\022\027\n\023MX_DATA_TYPE_STRING\020\007\022\025\n\021MX_DATA_TY" +
+      "PE_TIME\020\010\022\035\n\031MX_DATA_TYPE_ELAPSED_TIME\020\t" +
+      "\022\037\n\033MX_DATA_TYPE_REFERENCE_TYPE\020\n\022\034\n\030MX_" +
+      "DATA_TYPE_STATUS_TYPE\020\013\022\025\n\021MX_DATA_TYPE_" +
+      "ENUM\020\014\022-\n)MX_DATA_TYPE_SECURITY_CLASSIFI" +
+      "CATION_ENUM\020\r\022\"\n\036MX_DATA_TYPE_DATA_QUALI" +
+      "TY_TYPE\020\016\022\037\n\033MX_DATA_TYPE_QUALIFIED_ENUM" +
+      "\020\017\022!\n\035MX_DATA_TYPE_QUALIFIED_STRUCT\020\020\022)\n" +
+      "%MX_DATA_TYPE_INTERNATIONALIZED_STRING\020\021" +
+      "\022\033\n\027MX_DATA_TYPE_BIG_STRING\020\022\022\024\n\020MX_DATA" +
+      "_TYPE_END\020\023*\243\003\n\022ProtocolStatusCode\022$\n PR" +
+      "OTOCOL_STATUS_CODE_UNSPECIFIED\020\000\022\033\n\027PROT" +
+      "OCOL_STATUS_CODE_OK\020\001\022(\n$PROTOCOL_STATUS" +
+      "_CODE_INVALID_REQUEST\020\002\022*\n&PROTOCOL_STAT" +
+      "US_CODE_SESSION_NOT_FOUND\020\003\022*\n&PROTOCOL_" +
+      "STATUS_CODE_SESSION_NOT_READY\020\004\022+\n\'PROTO" +
+      "COL_STATUS_CODE_WORKER_UNAVAILABLE\020\005\022 \n\034" +
+      "PROTOCOL_STATUS_CODE_TIMEOUT\020\006\022!\n\035PROTOC" +
+      "OL_STATUS_CODE_CANCELED\020\007\022+\n\'PROTOCOL_ST" +
+      "ATUS_CODE_PROTOCOL_VIOLATION\020\010\022)\n%PROTOC" +
+      "OL_STATUS_CODE_MXACCESS_FAILURE\020\t*\277\002\n\014Se" +
+      "ssionState\022\035\n\031SESSION_STATE_UNSPECIFIED\020" +
+      "\000\022\032\n\026SESSION_STATE_CREATING\020\001\022!\n\035SESSION" +
+      "_STATE_STARTING_WORKER\020\002\022\"\n\036SESSION_STAT" +
+      "E_WAITING_FOR_PIPE\020\003\022\035\n\031SESSION_STATE_HA" +
+      "NDSHAKING\020\004\022%\n!SESSION_STATE_INITIALIZIN" +
+      "G_WORKER\020\005\022\027\n\023SESSION_STATE_READY\020\006\022\031\n\025S" +
+      "ESSION_STATE_CLOSING\020\007\022\030\n\024SESSION_STATE_" +
+      "CLOSED\020\010\022\031\n\025SESSION_STATE_FAULTED\020\t2\303\005\n\017" +
+      "MxAccessGateway\022]\n\013OpenSession\022\'.mxacces" +
+      "s_gateway.v1.OpenSessionRequest\032%.mxacce" +
+      "ss_gateway.v1.OpenSessionReply\022`\n\014CloseS" +
+      "ession\022(.mxaccess_gateway.v1.CloseSessio" +
+      "nRequest\032&.mxaccess_gateway.v1.CloseSess" +
+      "ionReply\022T\n\006Invoke\022%.mxaccess_gateway.v1" +
+      ".MxCommandRequest\032#.mxaccess_gateway.v1." +
+      "MxCommandReply\022X\n\014StreamEvents\022(.mxacces" +
+      "s_gateway.v1.StreamEventsRequest\032\034.mxacc" +
+      "ess_gateway.v1.MxEvent0\001\022l\n\020AcknowledgeA" +
+      "larm\022,.mxaccess_gateway.v1.AcknowledgeAl" +
+      "armRequest\032*.mxaccess_gateway.v1.Acknowl" +
+      "edgeAlarmReply\022a\n\014StreamAlarms\022(.mxacces" +
+      "s_gateway.v1.StreamAlarmsRequest\032%.mxacc" +
+      "ess_gateway.v1.AlarmFeedMessage0\001\022n\n\021Que" +
+      "ryActiveAlarms\022-.mxaccess_gateway.v1.Que" +
+      "ryActiveAlarmsRequest\032(.mxaccess_gateway" +
+      ".v1.ActiveAlarmSnapshot0\001B&\252\002#ZB.MOM.WW." +
+      "MxGateway.Contracts.Protob\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -106708,7 +107890,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
     internal_static_mxaccess_gateway_v1_MxCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_MxCommand_descriptor,
-        new java.lang.String[] { "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker", "Payload", });
+        new java.lang.String[] { "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "UpdateAlarmWatchList", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker", "Payload", });
     internal_static_mxaccess_gateway_v1_RegisterCommand_descriptor =
       getDescriptor().getMessageType(8);
     internal_static_mxaccess_gateway_v1_RegisterCommand_fieldAccessorTable = new
@@ -106852,423 +108034,429 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile {
     internal_static_mxaccess_gateway_v1_SubscribeAlarmsCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_SubscribeAlarmsCommand_descriptor,
-        new java.lang.String[] { "SubscriptionExpression", "ForcedMode", "WatchList", "Failover", });
-    internal_static_mxaccess_gateway_v1_UnsubscribeAlarmsCommand_descriptor =
+        new java.lang.String[] { "SubscriptionExpression", "ForcedMode", "WatchList", "Failover", "FallbackEnabled", });
+    internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_descriptor =
       getDescriptor().getMessageType(32);
+    internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_mxaccess_gateway_v1_UpdateAlarmWatchListCommand_descriptor,
+        new java.lang.String[] { "WatchList", });
+    internal_static_mxaccess_gateway_v1_UnsubscribeAlarmsCommand_descriptor =
+      getDescriptor().getMessageType(33);
     internal_static_mxaccess_gateway_v1_UnsubscribeAlarmsCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_UnsubscribeAlarmsCommand_descriptor,
         new java.lang.String[] { });
     internal_static_mxaccess_gateway_v1_AlarmSubtagTarget_descriptor =
-      getDescriptor().getMessageType(33);
+      getDescriptor().getMessageType(34);
     internal_static_mxaccess_gateway_v1_AlarmSubtagTarget_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AlarmSubtagTarget_descriptor,
         new java.lang.String[] { "AlarmFullReference", "SourceObjectReference", "ActiveSubtag", "AckedSubtag", "AckCommentSubtag", "PrioritySubtag", });
     internal_static_mxaccess_gateway_v1_AlarmFailoverConfig_descriptor =
-      getDescriptor().getMessageType(34);
+      getDescriptor().getMessageType(35);
     internal_static_mxaccess_gateway_v1_AlarmFailoverConfig_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AlarmFailoverConfig_descriptor,
         new java.lang.String[] { "ConsecutiveFailureThreshold", "FailbackProbeIntervalSeconds", "FailbackStableProbes", });
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmCommand_descriptor =
-      getDescriptor().getMessageType(35);
+      getDescriptor().getMessageType(36);
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AcknowledgeAlarmCommand_descriptor,
         new java.lang.String[] { "AlarmGuid", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName", });
     internal_static_mxaccess_gateway_v1_QueryActiveAlarmsCommand_descriptor =
-      getDescriptor().getMessageType(36);
+      getDescriptor().getMessageType(37);
     internal_static_mxaccess_gateway_v1_QueryActiveAlarmsCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_QueryActiveAlarmsCommand_descriptor,
         new java.lang.String[] { "AlarmFilterPrefix", });
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmByNameCommand_descriptor =
-      getDescriptor().getMessageType(37);
+      getDescriptor().getMessageType(38);
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmByNameCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AcknowledgeAlarmByNameCommand_descriptor,
         new java.lang.String[] { "AlarmName", "ProviderName", "GroupName", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName", });
     internal_static_mxaccess_gateway_v1_UnsubscribeBulkCommand_descriptor =
-      getDescriptor().getMessageType(38);
+      getDescriptor().getMessageType(39);
     internal_static_mxaccess_gateway_v1_UnsubscribeBulkCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_UnsubscribeBulkCommand_descriptor,
         new java.lang.String[] { "ServerHandle", "ItemHandles", });
     internal_static_mxaccess_gateway_v1_WriteBulkCommand_descriptor =
-      getDescriptor().getMessageType(39);
+      getDescriptor().getMessageType(40);
     internal_static_mxaccess_gateway_v1_WriteBulkCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_WriteBulkCommand_descriptor,
         new java.lang.String[] { "ServerHandle", "Entries", });
     internal_static_mxaccess_gateway_v1_WriteBulkEntry_descriptor =
-      getDescriptor().getMessageType(40);
+      getDescriptor().getMessageType(41);
     internal_static_mxaccess_gateway_v1_WriteBulkEntry_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_WriteBulkEntry_descriptor,
         new java.lang.String[] { "ItemHandle", "Value", "UserId", });
     internal_static_mxaccess_gateway_v1_Write2BulkCommand_descriptor =
-      getDescriptor().getMessageType(41);
+      getDescriptor().getMessageType(42);
     internal_static_mxaccess_gateway_v1_Write2BulkCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_Write2BulkCommand_descriptor,
         new java.lang.String[] { "ServerHandle", "Entries", });
     internal_static_mxaccess_gateway_v1_Write2BulkEntry_descriptor =
-      getDescriptor().getMessageType(42);
+      getDescriptor().getMessageType(43);
     internal_static_mxaccess_gateway_v1_Write2BulkEntry_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_Write2BulkEntry_descriptor,
         new java.lang.String[] { "ItemHandle", "Value", "TimestampValue", "UserId", });
     internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_descriptor =
-      getDescriptor().getMessageType(43);
+      getDescriptor().getMessageType(44);
     internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_descriptor,
         new java.lang.String[] { "ServerHandle", "Entries", });
     internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_descriptor =
-      getDescriptor().getMessageType(44);
+      getDescriptor().getMessageType(45);
     internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_descriptor,
         new java.lang.String[] { "ItemHandle", "CurrentUserId", "VerifierUserId", "Value", });
     internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_descriptor =
-      getDescriptor().getMessageType(45);
+      getDescriptor().getMessageType(46);
     internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_descriptor,
         new java.lang.String[] { "ServerHandle", "Entries", });
     internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_descriptor =
-      getDescriptor().getMessageType(46);
+      getDescriptor().getMessageType(47);
     internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_descriptor,
         new java.lang.String[] { "ItemHandle", "CurrentUserId", "VerifierUserId", "Value", "TimestampValue", });
     internal_static_mxaccess_gateway_v1_ReadBulkCommand_descriptor =
-      getDescriptor().getMessageType(47);
+      getDescriptor().getMessageType(48);
     internal_static_mxaccess_gateway_v1_ReadBulkCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_ReadBulkCommand_descriptor,
         new java.lang.String[] { "ServerHandle", "TagAddresses", "TimeoutMs", });
     internal_static_mxaccess_gateway_v1_PingCommand_descriptor =
-      getDescriptor().getMessageType(48);
+      getDescriptor().getMessageType(49);
     internal_static_mxaccess_gateway_v1_PingCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_PingCommand_descriptor,
         new java.lang.String[] { "Message", });
     internal_static_mxaccess_gateway_v1_GetSessionStateCommand_descriptor =
-      getDescriptor().getMessageType(49);
+      getDescriptor().getMessageType(50);
     internal_static_mxaccess_gateway_v1_GetSessionStateCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_GetSessionStateCommand_descriptor,
         new java.lang.String[] { });
     internal_static_mxaccess_gateway_v1_GetWorkerInfoCommand_descriptor =
-      getDescriptor().getMessageType(50);
+      getDescriptor().getMessageType(51);
     internal_static_mxaccess_gateway_v1_GetWorkerInfoCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_GetWorkerInfoCommand_descriptor,
         new java.lang.String[] { });
     internal_static_mxaccess_gateway_v1_DrainEventsCommand_descriptor =
-      getDescriptor().getMessageType(51);
+      getDescriptor().getMessageType(52);
     internal_static_mxaccess_gateway_v1_DrainEventsCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_DrainEventsCommand_descriptor,
         new java.lang.String[] { "MaxEvents", });
     internal_static_mxaccess_gateway_v1_ShutdownWorkerCommand_descriptor =
-      getDescriptor().getMessageType(52);
+      getDescriptor().getMessageType(53);
     internal_static_mxaccess_gateway_v1_ShutdownWorkerCommand_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_ShutdownWorkerCommand_descriptor,
         new java.lang.String[] { "GracePeriod", });
     internal_static_mxaccess_gateway_v1_MxCommandReply_descriptor =
-      getDescriptor().getMessageType(53);
+      getDescriptor().getMessageType(54);
     internal_static_mxaccess_gateway_v1_MxCommandReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_MxCommandReply_descriptor,
         new java.lang.String[] { "SessionId", "CorrelationId", "Kind", "ProtocolStatus", "Hresult", "ReturnValue", "Statuses", "DiagnosticMessage", "Register", "AddItem", "AddItem2", "AddBufferedItem", "Suspend", "Activate", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "AcknowledgeAlarm", "QueryActiveAlarms", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "SessionState", "WorkerInfo", "DrainEvents", "Payload", });
     internal_static_mxaccess_gateway_v1_RegisterReply_descriptor =
-      getDescriptor().getMessageType(54);
+      getDescriptor().getMessageType(55);
     internal_static_mxaccess_gateway_v1_RegisterReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_RegisterReply_descriptor,
         new java.lang.String[] { "ServerHandle", });
     internal_static_mxaccess_gateway_v1_AddItemReply_descriptor =
-      getDescriptor().getMessageType(55);
+      getDescriptor().getMessageType(56);
     internal_static_mxaccess_gateway_v1_AddItemReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AddItemReply_descriptor,
         new java.lang.String[] { "ItemHandle", });
     internal_static_mxaccess_gateway_v1_AddItem2Reply_descriptor =
-      getDescriptor().getMessageType(56);
+      getDescriptor().getMessageType(57);
     internal_static_mxaccess_gateway_v1_AddItem2Reply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AddItem2Reply_descriptor,
         new java.lang.String[] { "ItemHandle", });
     internal_static_mxaccess_gateway_v1_AddBufferedItemReply_descriptor =
-      getDescriptor().getMessageType(57);
+      getDescriptor().getMessageType(58);
     internal_static_mxaccess_gateway_v1_AddBufferedItemReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AddBufferedItemReply_descriptor,
         new java.lang.String[] { "ItemHandle", });
     internal_static_mxaccess_gateway_v1_SuspendReply_descriptor =
-      getDescriptor().getMessageType(58);
+      getDescriptor().getMessageType(59);
     internal_static_mxaccess_gateway_v1_SuspendReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_SuspendReply_descriptor,
         new java.lang.String[] { "Status", });
     internal_static_mxaccess_gateway_v1_ActivateReply_descriptor =
-      getDescriptor().getMessageType(59);
+      getDescriptor().getMessageType(60);
     internal_static_mxaccess_gateway_v1_ActivateReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_ActivateReply_descriptor,
         new java.lang.String[] { "Status", });
     internal_static_mxaccess_gateway_v1_AuthenticateUserReply_descriptor =
-      getDescriptor().getMessageType(60);
+      getDescriptor().getMessageType(61);
     internal_static_mxaccess_gateway_v1_AuthenticateUserReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AuthenticateUserReply_descriptor,
         new java.lang.String[] { "UserId", });
     internal_static_mxaccess_gateway_v1_ArchestrAUserToIdReply_descriptor =
-      getDescriptor().getMessageType(61);
+      getDescriptor().getMessageType(62);
     internal_static_mxaccess_gateway_v1_ArchestrAUserToIdReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_ArchestrAUserToIdReply_descriptor,
         new java.lang.String[] { "UserId", });
     internal_static_mxaccess_gateway_v1_SubscribeResult_descriptor =
-      getDescriptor().getMessageType(62);
+      getDescriptor().getMessageType(63);
     internal_static_mxaccess_gateway_v1_SubscribeResult_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_SubscribeResult_descriptor,
         new java.lang.String[] { "ServerHandle", "TagAddress", "ItemHandle", "WasSuccessful", "ErrorMessage", });
     internal_static_mxaccess_gateway_v1_BulkSubscribeReply_descriptor =
-      getDescriptor().getMessageType(63);
+      getDescriptor().getMessageType(64);
     internal_static_mxaccess_gateway_v1_BulkSubscribeReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_BulkSubscribeReply_descriptor,
         new java.lang.String[] { "Results", });
     internal_static_mxaccess_gateway_v1_BulkWriteResult_descriptor =
-      getDescriptor().getMessageType(64);
+      getDescriptor().getMessageType(65);
     internal_static_mxaccess_gateway_v1_BulkWriteResult_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_BulkWriteResult_descriptor,
         new java.lang.String[] { "ServerHandle", "ItemHandle", "WasSuccessful", "Hresult", "Statuses", "ErrorMessage", });
     internal_static_mxaccess_gateway_v1_BulkWriteReply_descriptor =
-      getDescriptor().getMessageType(65);
+      getDescriptor().getMessageType(66);
     internal_static_mxaccess_gateway_v1_BulkWriteReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_BulkWriteReply_descriptor,
         new java.lang.String[] { "Results", });
     internal_static_mxaccess_gateway_v1_BulkReadResult_descriptor =
-      getDescriptor().getMessageType(66);
+      getDescriptor().getMessageType(67);
     internal_static_mxaccess_gateway_v1_BulkReadResult_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_BulkReadResult_descriptor,
         new java.lang.String[] { "ServerHandle", "TagAddress", "ItemHandle", "WasSuccessful", "WasCached", "Value", "Quality", "SourceTimestamp", "Statuses", "ErrorMessage", });
     internal_static_mxaccess_gateway_v1_BulkReadReply_descriptor =
-      getDescriptor().getMessageType(67);
+      getDescriptor().getMessageType(68);
     internal_static_mxaccess_gateway_v1_BulkReadReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_BulkReadReply_descriptor,
         new java.lang.String[] { "Results", });
     internal_static_mxaccess_gateway_v1_SessionStateReply_descriptor =
-      getDescriptor().getMessageType(68);
+      getDescriptor().getMessageType(69);
     internal_static_mxaccess_gateway_v1_SessionStateReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_SessionStateReply_descriptor,
         new java.lang.String[] { "State", });
     internal_static_mxaccess_gateway_v1_WorkerInfoReply_descriptor =
-      getDescriptor().getMessageType(69);
+      getDescriptor().getMessageType(70);
     internal_static_mxaccess_gateway_v1_WorkerInfoReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_WorkerInfoReply_descriptor,
         new java.lang.String[] { "WorkerProcessId", "WorkerVersion", "MxaccessProgid", "MxaccessClsid", });
     internal_static_mxaccess_gateway_v1_DrainEventsReply_descriptor =
-      getDescriptor().getMessageType(70);
+      getDescriptor().getMessageType(71);
     internal_static_mxaccess_gateway_v1_DrainEventsReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_DrainEventsReply_descriptor,
         new java.lang.String[] { "Events", });
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReplyPayload_descriptor =
-      getDescriptor().getMessageType(71);
+      getDescriptor().getMessageType(72);
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReplyPayload_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReplyPayload_descriptor,
         new java.lang.String[] { "NativeStatus", });
     internal_static_mxaccess_gateway_v1_QueryActiveAlarmsReplyPayload_descriptor =
-      getDescriptor().getMessageType(72);
+      getDescriptor().getMessageType(73);
     internal_static_mxaccess_gateway_v1_QueryActiveAlarmsReplyPayload_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_QueryActiveAlarmsReplyPayload_descriptor,
         new java.lang.String[] { "Snapshots", "SnapshotTruncated", });
     internal_static_mxaccess_gateway_v1_MxEvent_descriptor =
-      getDescriptor().getMessageType(73);
+      getDescriptor().getMessageType(74);
     internal_static_mxaccess_gateway_v1_MxEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_MxEvent_descriptor,
         new java.lang.String[] { "Family", "SessionId", "ServerHandle", "ItemHandle", "Value", "Quality", "SourceTimestamp", "Statuses", "WorkerSequence", "WorkerTimestamp", "GatewayReceiveTimestamp", "Hresult", "RawStatus", "ReplayGap", "OnDataChange", "OnWriteComplete", "OperationComplete", "OnBufferedDataChange", "OnAlarmTransition", "OnAlarmProviderModeChanged", "Body", });
     internal_static_mxaccess_gateway_v1_ReplayGap_descriptor =
-      getDescriptor().getMessageType(74);
+      getDescriptor().getMessageType(75);
     internal_static_mxaccess_gateway_v1_ReplayGap_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_ReplayGap_descriptor,
         new java.lang.String[] { "RequestedAfterSequence", "OldestAvailableSequence", });
     internal_static_mxaccess_gateway_v1_OnDataChangeEvent_descriptor =
-      getDescriptor().getMessageType(75);
+      getDescriptor().getMessageType(76);
     internal_static_mxaccess_gateway_v1_OnDataChangeEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_OnDataChangeEvent_descriptor,
         new java.lang.String[] { });
     internal_static_mxaccess_gateway_v1_OnWriteCompleteEvent_descriptor =
-      getDescriptor().getMessageType(76);
+      getDescriptor().getMessageType(77);
     internal_static_mxaccess_gateway_v1_OnWriteCompleteEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_OnWriteCompleteEvent_descriptor,
         new java.lang.String[] { });
     internal_static_mxaccess_gateway_v1_OperationCompleteEvent_descriptor =
-      getDescriptor().getMessageType(77);
+      getDescriptor().getMessageType(78);
     internal_static_mxaccess_gateway_v1_OperationCompleteEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_OperationCompleteEvent_descriptor,
         new java.lang.String[] { });
     internal_static_mxaccess_gateway_v1_OnBufferedDataChangeEvent_descriptor =
-      getDescriptor().getMessageType(78);
+      getDescriptor().getMessageType(79);
     internal_static_mxaccess_gateway_v1_OnBufferedDataChangeEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_OnBufferedDataChangeEvent_descriptor,
         new java.lang.String[] { "DataType", "QualityValues", "TimestampValues", "RawDataType", });
     internal_static_mxaccess_gateway_v1_OnAlarmTransitionEvent_descriptor =
-      getDescriptor().getMessageType(79);
+      getDescriptor().getMessageType(80);
     internal_static_mxaccess_gateway_v1_OnAlarmTransitionEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_OnAlarmTransitionEvent_descriptor,
         new java.lang.String[] { "AlarmFullReference", "SourceObjectReference", "AlarmTypeName", "TransitionKind", "Severity", "OriginalRaiseTimestamp", "TransitionTimestamp", "OperatorUser", "OperatorComment", "Category", "Description", "CurrentValue", "LimitValue", "Degraded", "SourceProvider", });
     internal_static_mxaccess_gateway_v1_OnAlarmProviderModeChangedEvent_descriptor =
-      getDescriptor().getMessageType(80);
+      getDescriptor().getMessageType(81);
     internal_static_mxaccess_gateway_v1_OnAlarmProviderModeChangedEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_OnAlarmProviderModeChangedEvent_descriptor,
         new java.lang.String[] { "Mode", "Reason", "Hresult", "At", });
     internal_static_mxaccess_gateway_v1_ActiveAlarmSnapshot_descriptor =
-      getDescriptor().getMessageType(81);
+      getDescriptor().getMessageType(82);
     internal_static_mxaccess_gateway_v1_ActiveAlarmSnapshot_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_ActiveAlarmSnapshot_descriptor,
         new java.lang.String[] { "AlarmFullReference", "SourceObjectReference", "AlarmTypeName", "Severity", "OriginalRaiseTimestamp", "CurrentState", "Category", "Description", "LastTransitionTimestamp", "OperatorUser", "OperatorComment", "CurrentValue", "LimitValue", "Degraded", "SourceProvider", "FromTruncatedSnapshot", });
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmRequest_descriptor =
-      getDescriptor().getMessageType(82);
+      getDescriptor().getMessageType(83);
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AcknowledgeAlarmRequest_descriptor,
         new java.lang.String[] { "ClientCorrelationId", "AlarmFullReference", "Comment", "OperatorUser", });
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReply_descriptor =
-      getDescriptor().getMessageType(83);
+      getDescriptor().getMessageType(84);
     internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReply_descriptor,
         new java.lang.String[] { "CorrelationId", "ProtocolStatus", "Hresult", "Status", "DiagnosticMessage", });
     internal_static_mxaccess_gateway_v1_StreamAlarmsRequest_descriptor =
-      getDescriptor().getMessageType(84);
+      getDescriptor().getMessageType(85);
     internal_static_mxaccess_gateway_v1_StreamAlarmsRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_StreamAlarmsRequest_descriptor,
         new java.lang.String[] { "ClientCorrelationId", "AlarmFilterPrefix", });
     internal_static_mxaccess_gateway_v1_AlarmFeedMessage_descriptor =
-      getDescriptor().getMessageType(85);
+      getDescriptor().getMessageType(86);
     internal_static_mxaccess_gateway_v1_AlarmFeedMessage_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AlarmFeedMessage_descriptor,
         new java.lang.String[] { "ActiveAlarm", "SnapshotComplete", "Transition", "ProviderStatus", "SnapshotStatus", "Payload", });
     internal_static_mxaccess_gateway_v1_AlarmProviderStatus_descriptor =
-      getDescriptor().getMessageType(86);
+      getDescriptor().getMessageType(87);
     internal_static_mxaccess_gateway_v1_AlarmProviderStatus_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AlarmProviderStatus_descriptor,
         new java.lang.String[] { "Mode", "Degraded", "Reason", "Since", });
     internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_descriptor =
-      getDescriptor().getMessageType(87);
+      getDescriptor().getMessageType(88);
     internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_descriptor,
         new java.lang.String[] { "Truncated", });
     internal_static_mxaccess_gateway_v1_MxStatusProxy_descriptor =
-      getDescriptor().getMessageType(88);
+      getDescriptor().getMessageType(89);
     internal_static_mxaccess_gateway_v1_MxStatusProxy_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_MxStatusProxy_descriptor,
         new java.lang.String[] { "Success", "Category", "DetectedBy", "Detail", "RawCategory", "RawDetectedBy", "DiagnosticText", });
     internal_static_mxaccess_gateway_v1_MxValue_descriptor =
-      getDescriptor().getMessageType(89);
+      getDescriptor().getMessageType(90);
     internal_static_mxaccess_gateway_v1_MxValue_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_MxValue_descriptor,
         new java.lang.String[] { "DataType", "VariantType", "IsNull", "RawDiagnostic", "RawDataType", "BoolValue", "Int32Value", "Int64Value", "FloatValue", "DoubleValue", "StringValue", "TimestampValue", "ArrayValue", "RawValue", "SparseArrayValue", "Kind", });
     internal_static_mxaccess_gateway_v1_MxArray_descriptor =
-      getDescriptor().getMessageType(90);
+      getDescriptor().getMessageType(91);
     internal_static_mxaccess_gateway_v1_MxArray_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_MxArray_descriptor,
         new java.lang.String[] { "ElementDataType", "VariantType", "Dimensions", "RawDiagnostic", "RawElementDataType", "BoolValues", "Int32Values", "Int64Values", "FloatValues", "DoubleValues", "StringValues", "TimestampValues", "RawValues", "Values", });
     internal_static_mxaccess_gateway_v1_MxSparseArray_descriptor =
-      getDescriptor().getMessageType(91);
+      getDescriptor().getMessageType(92);
     internal_static_mxaccess_gateway_v1_MxSparseArray_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_MxSparseArray_descriptor,
         new java.lang.String[] { "ElementDataType", "TotalLength", "Elements", });
     internal_static_mxaccess_gateway_v1_MxSparseElement_descriptor =
-      getDescriptor().getMessageType(92);
+      getDescriptor().getMessageType(93);
     internal_static_mxaccess_gateway_v1_MxSparseElement_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_MxSparseElement_descriptor,
         new java.lang.String[] { "Index", "Value", });
     internal_static_mxaccess_gateway_v1_BoolArray_descriptor =
-      getDescriptor().getMessageType(93);
+      getDescriptor().getMessageType(94);
     internal_static_mxaccess_gateway_v1_BoolArray_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_BoolArray_descriptor,
         new java.lang.String[] { "Values", });
     internal_static_mxaccess_gateway_v1_Int32Array_descriptor =
-      getDescriptor().getMessageType(94);
+      getDescriptor().getMessageType(95);
     internal_static_mxaccess_gateway_v1_Int32Array_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_Int32Array_descriptor,
         new java.lang.String[] { "Values", });
     internal_static_mxaccess_gateway_v1_Int64Array_descriptor =
-      getDescriptor().getMessageType(95);
+      getDescriptor().getMessageType(96);
     internal_static_mxaccess_gateway_v1_Int64Array_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_Int64Array_descriptor,
         new java.lang.String[] { "Values", });
     internal_static_mxaccess_gateway_v1_FloatArray_descriptor =
-      getDescriptor().getMessageType(96);
+      getDescriptor().getMessageType(97);
     internal_static_mxaccess_gateway_v1_FloatArray_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_FloatArray_descriptor,
         new java.lang.String[] { "Values", });
     internal_static_mxaccess_gateway_v1_DoubleArray_descriptor =
-      getDescriptor().getMessageType(97);
+      getDescriptor().getMessageType(98);
     internal_static_mxaccess_gateway_v1_DoubleArray_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_DoubleArray_descriptor,
         new java.lang.String[] { "Values", });
     internal_static_mxaccess_gateway_v1_StringArray_descriptor =
-      getDescriptor().getMessageType(98);
+      getDescriptor().getMessageType(99);
     internal_static_mxaccess_gateway_v1_StringArray_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_StringArray_descriptor,
         new java.lang.String[] { "Values", });
     internal_static_mxaccess_gateway_v1_TimestampArray_descriptor =
-      getDescriptor().getMessageType(99);
+      getDescriptor().getMessageType(100);
     internal_static_mxaccess_gateway_v1_TimestampArray_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_TimestampArray_descriptor,
         new java.lang.String[] { "Values", });
     internal_static_mxaccess_gateway_v1_RawArray_descriptor =
-      getDescriptor().getMessageType(100);
+      getDescriptor().getMessageType(101);
     internal_static_mxaccess_gateway_v1_RawArray_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_RawArray_descriptor,
         new java.lang.String[] { "Values", });
     internal_static_mxaccess_gateway_v1_ProtocolStatus_descriptor =
-      getDescriptor().getMessageType(101);
+      getDescriptor().getMessageType(102);
     internal_static_mxaccess_gateway_v1_ProtocolStatus_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessage.FieldAccessorTable(
         internal_static_mxaccess_gateway_v1_ProtocolStatus_descriptor,
diff --git a/clients/proto/descriptors/mxaccessgw-client-v1.protoset b/clients/proto/descriptors/mxaccessgw-client-v1.protoset
index c92518c68a038b07015e508d549be769b01dfcb6..3e1541ca98d8ec254986d3bb813d716655707dcd 100644
GIT binary patch
delta 29916
zcmZ{td7Kr+)xU4|t?t`BxInWH2p43PO$AX&OhSmpVB8QjLJ~8=Xn0=)14E3Tcexq`
zj2p@TqhQ2{28}C@GO{X*Ah<*jQB)Siox}xP!R38URUJF;Z~4d1Jl6T1I(=&Cs_O2`
z$16*_o+>>wpl^7`oW`U2?u&vi8@nIE4xbfB#Za*m4
z+<3z9UcoQ3-c`*ntQkN4f|@b^etzwQnhVC)j%^p=KN)eT{{Iu*|L!`rs>9j;|LU?6
ztE&Db#-LoRziD9m`Wcr*^~ou1OI@q0+MPXNa($N}tsAd6<-Q@oGmZVHePa6dsp@&^
zFU}u!`l+W5J?$swpYk*QbM_fO89MUB^N0R?=!jF#KX>TJVJDye^PinHviaeSU9SE1
zkgCfcD^``Vs8D#j@rb!69U5F)|GRt646bQhbI*U2DkoGOTosv8czB$ds{+$mF%T>t
zt5_5q^8KoVstm^6GBY(W9eiOoq~M{7NT&wPTPY%)8nmtU((aj=7MOv)uzLk9T&;|D
zTF{}dBHC%efTO*(M`or6W`Hm3ffQ_~h;(|;zLz4>=|P|VUfMG=R|n<@U)U2V*rw{>
zioN)rXs-_19EwO*9V2B
zAgF3qRg4N)ULQo6c#R5SAu~4wVWq1G1u2COQw#;mUA!@cGlI}I4z__qn>0aeX9S0J
z^0v^8LDxs9TzdaDR*o#GcyRw-jl%=w4Hz;47M|a
zPMy8uC^Pjzs23Mu3+ly1*w(v?t4J!y=&Zan#u&8iDuo!&3OaQ3j!T)Dod;3E7Ste0
z*v`&_NHQ}g2yN5gD8Ux&=HpMWofA}g_VSL?%rpd{?LHW%7=yM)2x8n2^yukrt1@$Q
z5DxO5s;~w7D`Ikj&f~gq?ihA=rYF;fnOVLomKI=x~^i_|VM!
zIS9LZ<3lk9weKB@?Vp3L-Mnq{%-j})J-lsmY(ecJ&9S{LIJ~>JZIPMzd2_VDc79O#
zF2yY{o*(qk=EyR0dl1@*fCw{;L9Hjl_V%E6AMdzjX8w`~+!9+*18#}!U-E!kW#*2&
znOjvbhP9)%!uXD$yS8)d%q+-_TVo5VZEI{7M6J?A+ohZr}KagjlOJ*L-BkY1Ls8`no+XwTj
z>zbK|@~OBhwxCW{U9o+r5_HnJ`0&gu3PO8#BjJZ*4C>@{IL3>DzV>!TDL3GU^ULXm
zEy(T6-b%V*`*6@+$3A!5#{A;CV+(52Rk~x`=Zea3ZZlva7cPkH(jav!50HED(x7cSq@hW(ctucn+?^f;vtAeDB4Yo?Wu2!!QUP0#-
z#CCO1@or(-9oG+^*M%nn^@YX+#hafi5D@mimZ5q)+*qwrLj9yc_arL!_XU
zR-_c|h9GtM1<`KM{2r9W&jf|P`>T-~;xp20(rO3E)jX?iA>4xQVnA%4)r$e~`mA2e
zK~m*&atEwP&jHcGs+FsGE=XG17N->Lb3q&FgP}P%i#G*@Ej}W-?QW7=N8quLy{Ay6x;Ukh2
z#H&GK=Q(qzMD&_QbZEtf1Ut8sV*Hv$1mgBJjp$H`XuC!P5fP|TiDSF#k%_XGQH6#ePpmPgi{JKU2;`ViosJTS+hK>pdDdg^!0D<{)JF6JHe
z3gH!W7XxDZj$RB{!R8NNa5q)eUlKmfuTiCe;G5%O10&)AXM$}Rw+N%*kNI{iKM0>RlQi^o1
zMD$3&)X^%7zX%Fn2SN2+L3!kFYs*t6)F1c6!pavx(#lRCtt7B7HB}JKLFXLA`Ij0O
zi1RNsu2vG)evJ!43aV7%+OKg@igdrrlrfc7(iIN`p}TQHY{S@Ap`F#qL2Jpum7&i8
zL=Hfg0}$<%q0a$`_R7%bptaCdpoPSXeB5OfYf9A2mC
z195nrrmu}$u;{i*WB?x(ahJ}foSGyhi@yP-L4%TBJH3{JBajl?eHMd+e6#o
zL(?vc7leg-LVF};WHY-UOzeqSprwV_mOq|{wrgqmTX2|Xi%d*1^
zP5UgqH!M8hFGP0Q_lACn(_Z?|eR>@b!GP{MKy2^R>j3e3pI%4%P!1&S&$V(Ppo^%z
zy^#Auzf=a%-tV-bsm|hu!a}2uNVfA2g^4?Mt(J%usaFWEpo<8^c9D;$Vqn}Z(vYep
z3lE2GJ4|7~hy$zaPzG`JaM-McqBYLkF*2oidN}NQxJ_AyEPgaBJmv$GGlWOO#La^p
zB*4WIpk0uIxP@JWAjXR|XCQ7DYk(ajz$V(yh5!*D=mG@s)D$*ruBFzvg=w5W+3!0tB&LrU8PuU8VtclmM4&fDi$KEDt
zHiwbjtVe+a_d@7T7$IDM?&Jexig+RH=1wvL31&;^&rl$T?&Jf+c1zfW!zIp^0-0Q1
z%pHjobca?!htL&s9)D|*Nu_fZ?+6R;he7rA#m4iW?;ce8m(QMDTmFANMJm@#tSV2c
zy<~jNnA&n3i^<7#Jj1%+vT|L`q>F0nCYLWASNGeAQ|hpxWK!L@2^U$jOD2uGxMtF2
z<;hbnm^^0ExJ&BBO`OobN}f;{IVIZ>%C?AUv9o04`#VE-wk1fCK{pkF81D>IduS=8
zBzb3ec()UJ|-T(D4bld38HczjIt=!xIqIg}JWr57Xoh1`**3aL3SLID@
zSpFY(mN&y@HeF(Z+c(3*dfKrJ;^EEk2zv}nDfE_a6(OXc>rNojx575Ik)+fb(@48r
z<@BfbXqM_NLAf$=(v;frrN6D6P_CI$H?e&2#IYooRE{4@F6(N>O_1Ex)m+q1pZAr=
z)Lc??!MO3`>MkqS{vO@93nkT6<%@V4d1=jMJtvpPO&C`rCtgD?M
zt%qCt#Iqj{F>5ZWoz!pQgz^7Z`^v(rb12J8t~2%tl$-o}VaYAaC?zTHg%#Fidu6*)
z&f*Wl!pHQ+-9dT8zx1^6<9=W3s{CKQh|6?|`9Hg2f4kYabmF9cubos?9y4*mG$Kt
z)b=e;W(3rLbyF@WUsyA4{1mKx#>83eA4rx6b!6D;#?(plWdHZ$#@0?^3pVDrH4`qX
z9qY$HnMb_l!!VIsmN8`+1RsU&IfM}X1a$KbNFV!1yC+CGKho|AlFpB$d)AW7E?N9(
zSoo}d`3t{k(*?UvWwmgdq`7Mr?+*)C6zh-Pa&ybB6zvZ=;TlBkU8VK|_1m``IgmeT
zx&u1=KnxG)+61Jo12PF8W_1*PRsW+G+oO}Y@vB@Xlhs!`Y$-+el?+=~A7k+A`s-el
z`ecpwb*_`4_jQ=sGiCyl!S;37zPjo-TOagI{f93OLMLm_Z*rZCyKi*GLaA8FtUlE0
zNawfp=WIP;P*>YEzs+^hHNOp0_l%iRbl-+NUOe9FsN?ct{ratgPVX8<7W}*fBD}ol
z&s;!+mly5h!_XX_#a9*!(~EBPc{r9=7TGrq!RO(U>#K_O!(TdP5P#$Is-nL)fmmKu
zOzbJYSmN`lVz1s+M_VClAbBK<~2S2v-VxmLOks8Z=VGjpkQote3mu2Wz1
zo5pUo_kb!jzeZcHy?|o0^{y94wbV1K=$^L;IaIB5pjk!V^C(3+t4Pn|P7#{!Sv8M*E<4pdKM_Av~lV2to_0R$fYYNIMXvNFS08B-_TG
zS=?AGEcP>yJTq&QQ7)sQr!@5=MSt*B0dWhv1u}^7BSnAm1>*LRqCffSDUI`J(eHsE
zatgZp6o{usi+&FTT4TR}2l4c1k$cAy>5RRyczLn#c;gYT4+<*spl*4Q!xss#mjt*%
z1BCDjy7)kBS7>}7URP**y(GSsMYp`hk;DhO_(0lXWwDt%A_J{)br-i8gmJa9Xjk8%
z>7B)^iiIbA276<=s_37%^_Bov7ybDkM1Y_R5X5$M(Vzc;cwMa>xVHqjrs$9VAR<~*
ztoSnx*cSWqKM?JjqCfxZEn{YFu9Z#+YPI5dZPB0MVT*LFNY5hKM`ZC+#lq9Yp!&q}
zkEe|P_wu=u#?{pxU4G;8S*&Y*SO4nn!IdM>KUMS(y^fGe+@Ng$Q5Wdy0b@^*L>WJ`&*HHIEPx{r$T(fNimF0}$=swGH}6
z8$4h1XRr`j&>cyENS`nIGguJm^F@CK+ec_qUaibsphnzHCa+D}ei&P8+HbmymcCj1
zaUX|-
zS*1UA@9JHH-!Nb;0M}B5CMWNKoHvxw2?r(exQvs
zKmz=gcNi`7)1Js4q*`KCo+Wp8PUK;X7N>~aJ31lcSLR?
z9Z_2|w(+?=+rr9`2(L1JdOA|_Io0@^EX0L@?!rK9ry75c1*v4J@%Pvx<*KI{e-H{0
zF6bH@#M3n64?;m}%o&tD(1dX{&2ZWwbHkC6-s#5Qs35eUTR?zlryIXi2a!%UcBvkk
zqq6uKQ@GB!EzD6^USqhWiPxj#+O9Qz6%XO{T2t|EVT`Xeeia7d_F7|CVWBxXi*GQ6
z8Q$&DSl(dlx+F9Mv-l=cnCXiKQgoBCPf9{FD2r#A!W>^Th@x4>A2|<_U}kfP6+4na
zqJiBtf*8-%YXk{qwqD~gJeo0ux!&zDSl(>>q;-tAy~X$qIYcJ`-CYaB_7>Bjr>zsj
zYvmSWPl!S@IE!yJh1a~>!I<7^{K{dlxc##>2t=@;3l_xo&l)U<+dsQtjTtPhb(`^X
zA%qlEX&?*9+f3@_LWqW|*$~hsF>SIqZi3uyO
znxY**{142R7}l;bzYGp}p?WEYVy-YuhzfL%ekjCtsma_>1aZC8xVM#&@_O|$PInHFySKbTcF+GWPQ6^)kHt(P04ms^Dv)N19OyX7Wx2SwN-U2fbXy&wzn=JqOMj`7k%k%HPF@*37E)4{%ADz->hnWG2!i{(Y`)y91wQK7UsT3E-f
zyfC%ev~{okP>Oc7aW4mB%!}P?jB%?~2q~yic{^#1Y3rtBN|CNHN66|_dK9mDug#?y
z(zT}Yoi;iStyW(6dD67iwrz>@N!r#|%Uj^1K1>
z5HIEZ@fSF4^wM@n!Aho#_65_@Jr5lmwnO`ZkvF4lyu44og#$Bh+a4{bQhDgT#kAA`
z(jMs+)5WcD28X;}{$ifuYNVh_tL3ivqG_oqu15P}o?_lM-^vckSK9$Cs9Je&yw$X{
z-vZDa9guD{?ppwmm(O3yGt&_%s3T9F=)Pp<3VH7fW3(^jlLhahzwE~Vg@>U9-2)^L
z?aQW(=J7D3FB|`j(BP0))3puK
z86sZys8mLF&iz9()!)Kw2egMn_*24ef6
zY3?Qj5U(G~sz*-$zMsW=P2m%~R^)l>_c7h8IrzS~-KTCL+=9+6i0wXg3*vU4x;-I_
zKQo0de6S~A`I)YlPY|!48-K0^kpr;gR^>3ppUVwiS`5VP=f<9Eh2{rYyx$bQ@@{{C
z<$kv(Fy;s1_JF#Da0|Ky1F=1zUO~JbP_IAC;%`i$a#iGZFh9if8{M7#P~3j2y%xeP
z=-h(Xeyg1p#O=4bJNuz5mM@R|QW`=Ex^)j|OZ^)_puG2bdF0p9Ka^$o6_MYLL1;m(
zRyNVYzBCVHn+n3~qN>k0stCgk#UA`$qJ4^Eo
zqMemj3(b!FBcq{Vk;H&5F(961M}FS};%Ro|_dQ^dW!db=Z+wPI%gtf$VzUN0R9A9x
zF(>lNbxLtHC-Td6kTB*%ez`tWE}%jC0OZj10T5|}?*kPBqixVm@Z&6=8x?N#o#4lq
z&W-$j_Q%pX^RyE{1PHnSK?0l?`LkXS={)TNAeGFMKJY|J9~hR!4@HG#QP6Z+DOh4E
z!!UkG>lr5XEYjwH2p@D!31YiQdjW{!McN$0q^%y-0Sh4o-Ias3)DKt?>BBN!Z7&!m
zy`WKh5QG-gYQ=M-_8>~pHtK*KCiF-iu{1mAIuM0OAJGm3T4UdDhe@kf9*x|GRt7{1
zs#eaIff=Cxfb{aO+gKd*aD?c6&>-k3(EM
zSaE#_#?=z-lbe{3MH4
zM1{wFAOA_fC|n^OO4c|(kR=NN~b7B^+
ziVACdEhl2RD)J9pPLxVkYd1ZScT{l;A7cGbit*~`P`6wIal6{xS3+}A7C#vkHhQ-w
zVfmy^pC^gib&-Ew0g)2WwJC`0Itf971@XErvd=3j2BvhqrV~O7x^#lJ)E_v3XxB&n
z!099zI8W&u2q6VkDvqCu{JRsBB7I8dypx1BMCbTc1krBDwK8%xMBh~_BWHuFHZ(uY
z;%B15W}k?kV);zO5&su*7WGrf#HNO`n+Ko#guiLSP1=Sa$=(z-b4z~^<))~mOAAOH
zni{RhFGfu{IN5sb}(o;^BI(F)yhX@^X*#@!QsnZmQ+nq8^
z?UE<{KV#h*6+UeEX{+GXU;hltw<8|Ti`Sot*LNcSm09+|(Ym7agQm+{2OR(W%(mzUI*gGfJcy&*Kiv-o3f(Xm@i
z4af3hnF}Po;S%3o9qkYSfo`n_V!Jo;3sn%Wd*#+*XV~G=753>23z0F0_X3rH_586FbIOf0|cI`ajcY
za=3kb0J<3#MEaS|uprXUbe0@0A%3pX3g}p?mD%}oona|O`+2S4oIjZ|o=P!s00R0RLh9W$2Fx$_v^SGE|c?tC_LJBOh|r`1J)~$+4(?z1u{Dyhz1gdiTC`I~JStUQX)1iN5Qra#HtA)TUk4Y&nJ=E=P4Y#9{a9X-U}~KsT+f4mcp8
zgpeq5;~C`QZit(?nI6RL4RLFCq6y;mhM3<)kdxHma*}#u95%%6AQi^?#yC01r;XoZ
zxGDBOM>0H=Gd|Gm5E&Fu?vjrn__?3He3$*X2$+V6G98RBTW$P%-A1kf=Fk^
z{@81H$RS^S?0zF;_9svfTF@OEfoNyN
zowTLpkZ)G}T}yMwH#;_id@&q7-<;T-?6q>p
z2f9O;;h`Mz&567HSWD5)iBJ4#)fU;joRY=2$AyQRt}O?D4_cmr>FsgSqG}TDbBfH2
z3mPu&8cZ0(-}ILSvF|S+mJ8z4EfheUE{IvK&o5aerHh&lJv^9Ktej$}#YMSPro}~Z
z>NZo9B3%@-kY**rZ=S@D#D(QZ{8O>rtQ)ixZt(3XgcfvnCeW5vxe*K^-4OeY=IPQz8)NrlCP-x~
z06OUfFxriAl^aVS+KsXMB_OP!r(=IK0nrSgyQzUlpN{wVaW~o8!Xu
zrKaho`6z>uSh>0Wrd_+dqZvC;2ea~pSI^h$-(y6FIp)@xLxx1
zBP)b@(6`v41`eBHR_Xac9t=m`X={)LkT9{H=yx_X`%Gl%3vNnmZ8X
zTXEu^1%W8vig}X0!znR-zhPMa;1zyHKK8h(|Fpqk`$5AQ
z1A;#wl!e3xxll&J2XRODB#TmnAIL};Z-p!*_BI?C5d3z?8TN_a-aI|BY}gz7VUo4Mcfe$^H^jXwJ;y
z8KuIkl3U-OiRFwE?~^lGnloh_-dOSnS`c1Aclr)udt<4Un^!=*-dJK>oanTa-c<7E
z5og-L2)gzLZE5PR1w?yOiSvjb+iDq%GaEV$4t`KM(+fD|h{SSEDRPHFQBl&+Q1Ul9
zh*Hqq$9*8uzxu|;7~6#ASn+
zpHo0cL6ypEeRs*vdXyr)yTq~Q7@H_2>w8P#km|F`=gQ}4@{!ZU6B~XoBsgv02zww$
zsb0HG+4q+G=8IB1-CH{D_^N-io|v&8Xn1@`aN(d4cE)}n4?$+^2TJ~iK`FuqN*u>s
zAyeQ8nX(r(ocF!pzqoFhvKQq_nX(s^{9S@ll#66QyL2;SKb&_EnX*B*k{MyA?1y#A
z29Z82Q?`>bV>jkkCQ~-pN3}9%H|m@{!p_-^GH3rWv;i|`Kh|*h_k(YSjIdMoV>)Gn
zC?C@)8>H69WXitNT`F_-@>1BldUnvz=a`^V!-^jSNyCm4f;y5WQ#gfgvIX(9T&Hjl
zPs?QrUl!RI*t4x`n)ZXBDI{x$lC^bt5VB=kS1P%Ak5Z)TO7<~&7?~{IP%1p<=RN7p
z8)V)iE0K|bzEP(qh(gd!PaxxQqs~r7#^2MnP=0U=bZqMs#Q5ow|76w3P=1E%mN7-4
zXhF9T0Bxz?2pAc=&-y6?TN$jN+l+wNJ}YyCtk=)V;^#|+4%_{$>?};5FY&T8AK@3x
zS#-!38qWD~aCPOZlnZ;I)XXidAq@W&@o7<>pq@o<+*0Dfo%EBlst|4|HFLiec9!Jl
zMV}A@k#*1wG!U;ZmQt5>kn4C+GEgh~_p{`hUt$uiKDS}{5kZ%R>xKp28_55~2mf1r
zNETnx$&^xjyd;yUtUS+>JZ)>(Ka7NE(
z64al{-zZIVHw-^9IJ+`Z
z()+rm7sBpek+3aFdPkDpH#EH?CB1KGdPhoncbEKWFhrc7OAUzE-6ek-3=-$=k{m*x
z$Q6#1>wi;kG!SD6bjxYbmdd+}ECfKbZ%QX>l9SSrlGi;=V@?VhgJA%-(mf@AMgtPX
zo|1ov2jXc@$v?yc@w7*7J8#L%FjDa2rt?k?YJv(t5FeNP=_rWw@+|GYm9#PAyhJ4P;C#?;~4-bBH
z+Sv#{(;NBOlHkv^|3Xv(x=KK7KiB>XQpxAifB%asJ6o=Mf5ZCW!DYwrH^Tk7P_nzf
z
zeXf+YuNS3Efahj$LsGakaZCAgv1~~Es_k6K-pz?$%0t8hy1NUA?ahf_%7b{lIiVj{
z_2p8|l?%P4Vf>jvuYvqc`ff@5rUaC-#BWMKl(!_T$DNS$&23nZuyU>)I&%}>zd(d@
z6Tbrh5zZB%Otj|;%}e~_Z-{6?xAFjy&PzJF12oVYvz}cdZ|eUdix(z^`;(yhZ&CTA
z+S;-G#`DR1(}WShU16(Vpj;?9c|Zo}FC;1VHT66@I3hS5;L7gPD+95;FDbc61EiMw
z61y%8&3Re;U{ZL(XZk!WA51vu*ds6DohM$GG~Iqqa8XzR@VX@Nt4$EwCDNy5?g8<-
zL@)b1$;r~hzgi1%*`Rwk1=`Y
zS>k@B8Ea^{b_R%uLAO2zkuFaX_dF7`#x3l@B2v2Qio`EAA*7&6jl2c6BH`UGceT=6
zS0w(WnDb;VU77d^9&)H!Ss$-V{MRFtB3+sIr;O*xI2*7=shmh`XBZDn!*
z)s{D{gG%3{BP>=
zEDc-GzPiG%4~O!b*&CDI?x%@)YQjn|_avJL&@Cz{#P;dL@1=RR#=l7GW9b5*I+iZ5HMgY;yp;GKA&>2#0teWH
zg4n*496iuq99`h$+*Y~(IKY0J#N|jAc-a|;W>glxniM|pbLS{bUzPb#=KWEU{nvD&
zhX?_53w03N*AjmQ4w9wU5`P9hN)oy~@rTh6SGqmXZim4_^o
zC+H?X3X$%TyNb-6AktkDv8bmeE5TU5k@)9-qvQ&9C#Jo73lns#VM)91
zPW%%~N^!kA;fbYd1Cst`;{Wl5QFd+x-Ch_(`ex$KFF~YlChUcsly2}=E-gjOKd@@0
zTfCKPxjX{Q9D{j?Zj#wL`HRFKhK-i{_m_#O*r^>)@~{VXa~O#B
z%j8hElmyX!nfPy-M#}->{=}$M-Vy;-DuZ}`E|o#NKbJCy59HFszUq-{WfULCwK9qi
zM~Wq}DFqCI`Dw
z45R&4M)5Rx0Q$=;o}L!2O&2z=4T8!qv7MeW*Gs$qQpVHOsaxm>;TLp%L2R#1{cr+t
zdv)rTBp6fpr_|pCA$kz#Ix=WW{cr-2{wd{_Vo%tADdXvy)GhMxBpn-c;|U~+Yf}G8
zFNmva(he>$Ag-=S?ZPcIzsln4)548@uJ{#}*Qfri?qA8Z-H`f?Cq#fZq+kxi{@E-x!9bHj5uf3lI5PYO#DEW>KxZVTFz3_%<}mb#M+kY-zwU%K2~LA!F7LTs1FG)von
z++COEwvy7NmE2giN=tKN?x)LA_uUXuxqpIoaVLoFvebPj1akjep8C@Y2wTwJ;-wJV
z<*7R@0$KI0@OK!fB6mpGJx!(*;}xm9yHd;@a%JvV7Pg?ab2DsLrv4v|D#;)$@>kfQvXOB!WMMfdl1`I
zssD$dIAiBfC%-y*{srpA$v-f)I=?txSzJT@-P>Y3Bfxk~-l^qZm|Bza)}?DZ-ceke
z`V*9reJK&_DN6?emVaPsZOXT}&X$)FpUfR)_yz514ciRcCsVgti%OM{w-DFm?JTby
zf_4#tvHS~D>(bWlp9i^+Cw6J!89(kX#BzhqE*Hv(+?e`z{vo<0=uY22Y&WK@-GUKh
z9BnX)!
zwxs?gMUE3Vn9)uN;TLoVOBER77yU90EtAC7)ISo1Fb3_bz*30q*0ihr5E^8TcqtD;
z@(*edGDp0W2f-Zia_axpv&7C3U{8BYfG3$GUQXT9gouC8=+(6Fwr^IMPF_tTyHJW!
zY1Y?t_(2qcZmt1w^P0{zsWi=Y9e$8Qdw<4}wCeVXyLB2E+@Ti^VGOzp2W_dp@Kl<0
zr;c0*ThL7jAhtVGe_ESLtM1ARrBy)f_;NJSr=KVe?x2tMW6`3UL
z5@%*~V45lhf~U4nEDE-+u4-ImFz%X}F@fpp3%eo(s}+%s3EK5iL^>wubFP%4o+1ZF?%B9UGk4+iSaLW?W#-@P*xxf~^#hjtg3MQA9c}=zhAF_Q=fm
zz?|(1dmshdRy8Txhwp)Qd{BM57NZ>>^y-5)j0#yiDJU!tf~rPU#i)Sgq#(+~ZBz&g
znfXHyb{3rwh2Uw5pEWJAAJyIN)wD>4I;t#k9iPjW*!Pc+cemw*n(aC
z1EknK6!hrn9hWlma1h$wgKY_0(Dn#HY#$D~_wcq=nW+R}xu5q`g)!V)5#vg5PG4`_
zC^J*?6gR>ar2E)rZ-niXpuIL-xL2Zu4*#0RvO*7nt{6CVXtqI0pYwx%T
z#*YNmnzmCi^Joxu@P(&f3u=l_!S>Oh-Dy7HrkQyx2)lXPrr3ho_nKn+SkSpEwq@zX
zr)K8yAnfjqPsJG2K5{C?j|W}4dB@E%Gc|9HX4rz7;%3-R4Z3S{WSN;3gmxmJmJC}^
ztI4pP7L-pv(>rdSnJ4myn_~=W#LY2&!bL0rx5&)&yq#NM3+gCrf$j95o3?Yy%*@Db
zTVe~UZObyoGjiirnVA`cXZlRE!Wh&nw!(I1(DMu*aO=!GnLkczY(dRhYiys)v(_dv
zPvt?h!4{Mt$}(@X!T6~>h_;!Tl^eIk7}SW{Vmm9htQ3T|12Du?
zcpA3zg5GEQtaZrD{QPM;lre^NX6u0Q{Gg*wnH@8;An#oru?2Mk>WJ-vpr*5TT$7on
z^GwuW3u-26uzfnuM5oLwbP?M8cfuIfr|X3A!u;tvXJ%186?euK)XAzdwu^!eIu&=x
z%;G%4F4%(h4MqODV7oYItHYU>=o0d;ZPyj!CHcd4#dwK-f1%~Ixis$+-LM7q_0SF5
zr9oHi@w_JM^QY;KEvVB*cWmo}PBQjoB$atFF3TOuix5=DJuqJ89ET>&;)bBG%Do7U
zOvDXA+FJaWR9=KD{fsEYn*&UxM+joOGAOyl1jq|(Wzf0}(y(kwS^P{;c-Fg>Is2I)
zZEM|@#O)eCc^U|}U}D{Z*sclEmWsGt6SNU&XsWXK`Jk}QdzH!k`5ED!UVdWG-`x`zR=eN7*xaoIl2
zYx*>erOr+Mt!5y!plao5HU(*O+v1cG(Wao4^uf?H$>J?RVVjRg-lSWk7U`Z%B%-Yv
z5rkJzyp|&=#dxcR1mbq9M$|+idP5_E(1I=^(3bj$K%{SIM5ko&n?d1iACbJT-_!wf
zibV7l5tZ$ufVhR7TM*;7G$IhUZ)rrQNJKj{A_ys{Qi*7X=7>_HJ2axES^Q2=c-KcH
ztAg@7L24&2(^Nv*sY!xx3p%$T#yd445Vt!uqNWnjE{zC63aV5h+NBXuigcGoR6aF}
zcL#;NJ|tOt><&`9lrpDEMDJ@v5N<)|7R2^_jR?f;`x?=y643`bDj=kw>)D_!l~Ez<
ze;DltIxJ3QSeQL|wK6I|)r#jmIx4V5y2n);nr2!2VNf{WA4V2O9|oyi4Vh;0FdwN`
z2(Mt-Jq?WUNBT4%Za>neX(n~<_pfd|$X$w1Rw2)wqXfO~SLFW;~;}H!8#N!bSriBD^RD*$#f-03@
zj%qNJB0cKTV@$b)biZ$c(7i1oc2;1?P81;8Z-OefPY2O{6J*VO#L%%^TBKS~tCgMM
zu^?4x(HbMYkPNiU;^RSKbQskAX8n2PwMC?$N+ky)!z#OVlTvHk-tL+}cE_Wr^+KC#kdR>w*`OU2`utIfc9c|WyHKkv
zzBep9Q1|YJ`trSD+Rmo0m85S%=yrbw!XfA!f;gNI`UMP#!wI2Xz!;1voT%x8kb)|e
z^i9QaD9ZNGZ}OlESid
z{MM4fKWPdfw4iFm^Pe<@l%oBUrm(fpBbq`8DX3CO;Uk(tO0BV`ur(0x1ZXpgpx>`JGH
zsXdx7ZNf5npP_kgWAhHWrvNdYp?L>!J45r{MzS+Abmt>@lDvcN1q#|yzZ(FN&J5WN
zOq4#%$c}k#=$AEZ
zrT@&+=YR+Xbk6}|J5Qej#OpkLj<%uQo#tA3kog)>Tl*mML%%)-(av|;&{Svf!mzN!
zMgK_A65uikuq-nKh+Ei22x7cUa|Yse
znFiQS0$fh}*$^NC1YLk2o|cD=PSsLt+|0EprFdGdZQ4GISF$^J#z!b85Gysp_7dSL
zO(BF^&;)&L;_1YLk2o>pss?aQ`}SBE}AigC4CBRnmOpA8Ey
z_yFbD<5?X(r%8a%X@C%JK^Gv1?QJB6WiDg^pPq83}?z98Mc3arVoe>2xw`|WHi4=5aPeHrT6?3fqRmhyuF^k^~
z3m=9-^@m~o;WxSk<(i&%-!;7Ey4&x%`_{W|yYpAK4!`8rx7_)gyJ~*>Ps4Aosu}YC
z|JOTe?i_yG9k>7EuYP&=ox@M>T_xWSjGSS;8~P1SM|sfqLU-_FATkHK84twvy|84D
z6e(>kjqqOBrEAqtCd!Ty{rh!Ww%^qI{V;SpV*Z=_$FPMP@gR!#CD}7&ZtW-!xVP@c
zH=io+)#l>A@xIs_HnLd|6Flq;TiUjmQrY+Pqq+J&~*|J>AtX)&ApUb
zV{$*7Y}RD)$6?_UvUx+zwZrRny*;#54dx%qG(9!Ipi>rq9v1!@)?M-EDa|`k^m)iB
zP(Q-%Bw0FC_w}F8F7r=PbVySKVt7bj3LsS;lHPxs)lqnu>~?NiGradNd)IWn_LkfK
ziCKV>=LVEO#P+q_MPAF*U2tJ|B~xuG4PkL
zE|p+5_v6yaB){U{Tf&g_7~!ZANp
zbjI>;vWUG9pPeQDN5Z;WclGbbzwvoQCkhbDBVlTfPQ?mbGQtl_
zFY1!T_Y@1`i$V1VLEY~^=u)@l-F3~optz^V!scdtcaf(VS@*zuHR6
zql>-+QH*wUkq#v5&@Mt_a;@|sP^Hp`#^h4zLt}C&eQ0daFXg+~ZUm~-{2cArqVEnA
zqa9mx-{`28dd3yq=L{i-s+FEJuIRfUrAWsW>4N*D4Z3FWABu(h>ju8R`|7S3{-NlX
zVqGQm_Z8hlZXle3&MAoPeZ`WSh(Mg)S7bJ>m)W=*8-!xv$@<@Y&^u_+4a|
z$*XkhZql4n>)Pz=UFM(Yrsg_n%BgvM(s)y~2XzygracHk3cAM!kxnc69t2ur--Eiz
z&gu#61rSou_aGSU6M4AOluu|k=q4df&$ZH&pjInQIX#z3Q%=vNOz<Go;7H;FU3?&Iv833@om_y{xVn>Dqr4QP$qb#}RiarJDmTX)-A
z&&c8ziiM3n*Joh*LeYN~J3|6otGR{<5Oe{8*sj%FgLqx5xjsVzT&MYhh-h80>~js<
zVxMae?K;i%8ItSuMSlbap#|NE0El#b(I0_B^`$QxdUBTMEK0=-h(XZqk+l@w!P{>P!iD
zb1^*2wiHB5fv%-Mo^5lnky|5!*0@to*HSR9HW$zAWm~Ejn~h@OZQoM8Fx^`8Ti#w0
z;2YXf5CMWNKoHwEw5342zM(DEO9I?h^oMN_(rt_i)k;X)q({hlg<`bZivF~%m$cM&
zonRrfpi0H_c9~h6RN7{{%&+#et(V}Ax^q5zupj><4Lh`nL4-SszIT9PDZS&rXr;5V
zcvrEoyY9$m|6V=|yIuNvK1*`&t~L@xFrW(t#P(fnBoLqPY9pN`k-k@Sw`UAQBZ01w
zK%#rE*vM|+q|_RBKHW7EjH~yGz0R_Y)H{nmC>B2Ujno^{4|MYHEdlP)MuG?sbOD0c
z?$Jg9@w!JFska2UR~rdJy7y!w!M4~p5{P!MHd1eCq&$ktjvF?_?wO
z7Thn5ROX+gVZSyKh;Y9)5-65BgnP>i|9}o*2r1}>Fo^Vk4q*`K0U5%dM>KGsEIv{!
z{5Nah-BHbeyMO&JHG_xW@{9WYhu;ayeGnee>8X$8^QbmB#DjtE!9Z+}YJ-DRa#S0<
zk397^MSl(j5iaN&9K_Q%MSl(jT4Rm??0FK5t8a>IOJ#28Bk4V+tqP$9-9iCGdrVhU
zAkt&5RYP-j7XQ6iIN|%s*;xKv+F!h$Ezfpb7h4csk28Ndw=l-Xb+rZJ_PATGhvu9t
z9$^Y2jaz@5gXIWg*B_xdH;YG`!Wdt4E=8k_J*W;%-z*+y3itY=z7&l!{=~1Z1T)@*
zZQR#hkZ52R42bb~tSaP5U=G)#%|?9(?5&vH-$~!ZGTMfH-3fCU))Y6S}TMI7IeXa*iP19LEKJu
z!5Y(FTI&Jh=Ryc6sM0_dj1QQSn+qvM`+)ItVSnid4;p`J4DmFe`&tDeebD#|sUXq^
zjlDx6)k1Z~pQAuXLAMzLk=B`Jyd&B&1;f^wo&74=KJ=HNR;kx)V+J;>-y>6yc`gFOzgAr*kkLnkp?R_GH02#ZVtwn0A?9?h(-!ntIsxmw+Hbk
zpf;PV)n^;O+oKfeY{Odp6bU`$e(YQmmR~bP*I!cUAaf0CIT?rjL+)?RGseB3A)*4^
z2{nlAJd?RD3*vg7aknFpa-DNN$5y@{mXLzls&Z3kzG>#x!~Izqp`CBsEljjr?_9vy
zk=ItC1+`ka546B!?g#~2qzjC@#D$d0o=-D_cxfY~pyp97?mTVUo}r~kpEhUparb!o
zhg|+#XpB3YfY5>(vRso{nD?K?XcroHWs_=~u#LzQ)dVT15zBp+MR}r{AYGIv>J;wr
zEH>sGAJi#mL7$pXZk{YQ)%HRj^_+rsv2hpjKyHdIp`E<6DN;}yM6QS|G40%SZETS)
zG3WO4P0PK}rN-UIF5~G`w6OMZxy!NCw074LC`G%}xXXwbbC0y%7`Li}kb)|en-le>
zwVS#qMOtspkX4-YD6W+*%cU98Wu|;mo1tBnYcsUVaxJ$^m*;KU94)BT%3XxzrnR4gdIehZcHb}v8ri^yIY3@GT^bgyhU2oh)OrDkN
zs~e2bW^aoYRH=NM+hCgO0BMVKgX!c}0{ug7vu?~&T#Xb|X|=pPHk#&|;%c-T^AvNt
z^+jXcuMYZ$?a+d%mG4_Gn&$TIF(I}?`l4}Hk3sIbzLaOCJyK9do_u(E$<7sWR|sRY
zFXfX3cVA!jV}Qcb(1Pwn97OxFX{C8Q4e86q|0bb-$W_=^jM11nAO+pwBZWv`G5#bU
zL|T5ubhckTsEC`fuNu?SH%Ldcpt~|cA=+0>OKs|oXkRtSa
z_JSqY_r&V~93x1eh<5Zh1HD~Q)m)$2uBe8?2afAwxJ
z!t{{whb$L~+r!#xA>4w_Er{)5?X)0n54%ol%tf-O{6d$U5K_>sdq7+2FDig#v|s3&
z^CDTUeyJS=LJMlO;`vMMCzK-nQdh|r3H>FHSPogh*yfW$q<=Aq8)l$2mSI-rb#Rfa
zR=?5~htPr=vaC?QGX7HnrD(s>7XLvO|IHMR`W*fM%fIOcE}MNqyN(-Dzxs*9zXk&)k_
zKm-rEoPpSmjQsop;&x=@4{tA)gpP{*rUXI?s#Kb4ROBZSN|BC=^e)fE(p01KYNe?_
zmv0Kuj*fi3LA0auYN0Wa|AumLSR^r^OALsoF_GUNfOr}c`TYS{WLY*Q@*9MUrRB!5
z#>naq3Z)6(s7aN17!oF9T)l8
z;U*WMV`gc%eie
z7?8zJM1}cL(D41n!75W8fbkPr&j6`sx;6(y_@HY_5Zme63qTxC*X9@?Z8anEdqfB+
z=$;(3rGCJINM}Us5$%nx0n!U*Y7c_Yf?BP3o~b>EQnWLr2g#CifY6h9#M11b>p&DD
zeNsCRXpMcp9U!eP6ESWvan&QC>&TWnB@_Nl0ayL>r7LYx)(c^IMvK)0m?
zkizR%EAPi5T12DlLP!g7s--H#j@;Q#hq)XXjdWgL5MHdmcO`xB}f~2}C+4
zYVQ_WAksNeAN%tjjM?qY)jkgK@L<{XAsAP4wUdLmnyZ~0#MNBw2@nqe
zYE#SZZ=UbuR4bdmc~M)r!x)-Nv-s(#u*moEO9MvX)6$`&DKC}Iw@@R5h!AuEf&{oQ
z@*i11YFQZZkwqptkXjbH07LV`EM5{7>U}Lg#BxdGKTP~kDp{)C^oLxf!!3M@^+PGf
zOQWW4xd!5Psq|9`{<17y9u-!5x0hkLT&K^=#O;d6pX)=U1axf*V!J{@kYGW)u88cp
ze%Zj3HfTB_w4h5TXiNRU42ZTN@&_}Q$-r5ub0CBiRH-;#8Trr1lp!23PJu)jue6mEH!bR(jhlp*^+$QNq<_Con6>u69dvUoh;+ZswII^{I$zdGhzC?!
z1|4g)GEX1Sxt3D22XZZ0{aEMP+E5PdKsVQdNI%xO7DW27&b762X!nWEWDpMk`neXy
z)h9aFg1Gub=UNa~pXgj$E7SHt9pMlU0BUo|G<{GIkouY5LPBJlA$iNPf@{
z>l4U4{b~LLGEaXR^*P7)Fb?THi$ZroQ5(u39jH<{r28yt?@lNvMfzFfPbg~TknVGx
z3LzdIWbnu)9p(u>*M%8~tIu^|2IA`T$RE7b%9-6Eovb0Gpgz2u*&T{b_EkBvI~28Q
zQ}s}4#|VdZ$D^=Y_1LuL@>_m8{9kWrSkf`zsH8S*LP!+3@eJ~C$D>AW&IfUOJZkCA
zHbLATk2-g?XR5Vwrg~2tj*H!qDvb3#aoX6YjUR%Ki2dI|s14<`4|Mwl5Ze*uxRpDA
zfpI+|_UCT3a@;pE_J^AgTF@PCf@nv^{%{jSIx_YLV72ly@lmn=s}B%T(CrC8q@&_?
z?m(}$Y>)d!#b>)e`%o*#eWPQ476qXN-2oDac68i9TUw6$M#m>xn&ZAPvFYbKm>lwJ8AVRWM-_Z{Io}Kdq4h7f2oUoe*v+qi%V|F
z0OGVRX5l_f4*IW<>1%q!@gBjW#WH|&dM=e|ae7>G+bT+tPLEkqvn=3`EyPd8g#~V+
zj>OHAEa~Jaqfo+mDh{nqh(gdNSCIMisn}kW7h4Kv#qyh>BCkg>e;dXdkS_Yo)i1O(*WTYw4D%J`70E2V*hsl|NxmSq^W(m9
zdL5b{m$P_bTv+5^eLu!@VQklLq4^0*yST8_7yX2yC9(g?cO^G#;=*!YbR|X0V*hRM
zsw{4Z3u}DQRTMSEsr@Cpxk{R7W$dRmh&an|W83v$j911@-1!ek%dd>>j?JK@aFuUQ
zA+(@-Gl90W%8g(U>8jXoIj@o?S{=K;qJUI31)!7O3Zq>eSGlnSqFo)kKS6>u^i1sc
z>JZHUx|bS=^qJW2)j?~_@@KkS1R0dY>*B)S#8^?2p3^)nkInp@BiW%IyBZ
z9XzlsAo%a@9SY)Pe_V1aP!K2kW0v4!ofB3N2P;>6Cm2cGvdue~D`oj`FfO_6F{LOE
z#w}Xe`&eF#+A|M1(T7=
z7rrlbSb#{sjH}#7Y7ps{F@J=`KQgO@uj5MX`N922xl|SlU&mGMRZJ<;uj4k=
zRXbg+EEbN%l_nPiZ;_)W1bi&^2LT|`V{zh^*C5hkan{1#haMF2#{V|1w7M|pTL!4~
z+t}av2T^_-w{UMY5aqYA{TnQyxjKta#D&p`Ti;)e<%yU(*G!h?Y8i+3B>rd%!Yk;$
zKY-ZYleBR23W(Qx62`@4PD|;C#Gg!DZ3iRh+8eZ`CHE{K+7SsS69a6u491a_Cf^M%
zDqn2}pBEWt@CPD&*f%!D*j5sMB3K4-
z1?$twTwO{0oJT3zO5%?MuaQmPl*Au^LP$ZC%4|I)@v|PKNT(zmEZt@k#bo_x5?)w+
zUCj;rVo83sRP&oVDrfy5xT^0p_Gpe$eRi3$A5Hw`i&8v2nw)<@)jwNL%-B;a3x5#&
zW4~+cj6F3EL1yf!iGN{Gig0Se!Q2R$0M;z
zWk9=hGh@%lJBUo#pj*jYW2fvHiJ!7Tq%#utceALI8GB~_WHM!gXR21_?3sz5voS_H
zGhxmi8QOrEv*%RqxFk5vqso*$C-GA@h;mNir)&`AoP;U+N%yGC*$XPu2Lw-`lqq|G
zPOc!z1&N=sL6i#;rtD`TTPJ(86%BV^8Z?AtsVSAN$SajC+KMD`^Bko}S0wfWdKj53
zUX>J{^Yff^-&Hctk-*5vz+SD>5kw*ArX!H?w_0Z-BjfEETPT|Z(6Oyk5aVYO|D!r1
zLw8N$7yb~opj-HZw$v~Djf~Z2{S<*C8JwWoe1O3tg#z9C7M8eD~NL(<3{
z@eh{#Z1f2+5LpM^zyk5QF)6vMgFMGZ$-r>A12tHl`6VXJ>KiKa`vjdTzaJQUw=e${
zAN*(aAz6G$Cr?W8@sdoQveFzZd3vSt$v{?`{2Spbxlr7{lK5YSP>S%CggLAt{cNz{
zrpnOTpzcckjdD}2lmu_m!APl?CU##Dnj!qXoTRYN=XVH}TM{l7-bkK?klr^c7hDls
zR~{nieM8d=VfVk0uq{e@hmhWFn%*Ij-ff!RA(Gzhi9ZL1h!b?F0r9#$@#nxGac)oK
z`1vxPaELtroBCpb7)zjAK7+PYZujxx2hqMMov1-hMu$jVcQp+DaZn#z3h?UOmH0Cm
zkSKN~{_`D(r(KEvdprMM7k&Or=g(OxHE<~-MKD!Lly@|hFM=8?13AgL6V-Q@M#ru=Or@X!|=MwM#y?gjwzpeT09W|An
zgMy2%x)$MneQ{qa2|l3x7orl-RRUsrK>II9B?qMc{wGg%tvvU^%8Eh3zxU_g2oL5$
z$?n0#|0s)6ga;FTlr=$4&#%kkzb1t-4ZpZLh{C?tVfxpEBYGJV*U1^y*GV`!E!u{G
zDgIj4c2`QVgnJ~ZJT^EO*bg9^M-t{^l%Sq8~;SYJ=@ovl-3_rNv{iDEnjC>7^BjY
z4=QaxDm|%`wjY)H8@ktL@wl`wDRoQt>#-b{`c>NXlD+Y%U%ErY1G=R*Yc3t=x2d(6cZ9CVls&{*4AoS?b?tAj*4F*56J@`X*FXAS_>Rht7o5
z_b(9Pgw(J2L4*@TC=>1VLK9Q};Ts}a(5*B;q!ZKj?!XMR#;jjg$zApvvbd5K9#4bn
zc~Q-eh7bS6S-&3syWtH#yCHZgY;gn1isWRW4A2`SDUUU@8Wx-p3<7wv$MnfSY#&P#
zH)(*>@>puufuXrEi>IZ9#Xi$FVmU44WaCr0es`mIo!fB#O~Eh2GJw~)sb5`!*v?J;
zeg(wqTz%{tB`5Pzf2kJYu|fA)3bduoT^2y3^HTc*IH{CW&rjW&UI-~zcG1IV=cmow
zFC{^=^HcZdV6lc4XlH}Isge6%Pp91K
zl9`rbv`?r03igdMmo7~G1P?h>t*nO^rvCR8lpmSvgp<1+)m!K_m&ju3hirlfJA5_P(;#uKa4qMXS
zklV`S0IDr_tc6`OV@#G-rta&Z5XN9nX&XTtuT0OhH)cT+yehYqjDl(_$D*rpTQ(T0
zQ~%dH`F4gaXfLhsw=zTdZ%Ii}9_nBj93JP=Eih^7jt9j0-!pUF7RS*OBZ-44eiMx
zAxWCRJ~p8swlAgU_LcdXQo6v)xvg{ou#f%qj+A2jvNI0N&@6r}E$sGl=TJ;vllf5Q
z{h^ZmO*+v-gaEpQI*9G2)Sr2SWNB0C&%B39LN}-W@EPJsH>djR9oQE8zq|vY-JJRx
zH$x@+uj>Q|p#|NA8xZO1Y2qe85b5iwp8$snZP7^#LJGQ>XlPiLrrVPGWh%wi+RtJ`
zW%O>%Lzc-CbQ2(jNVm#cMdnTr=~jtY)=EQVt+Xu--}7rF80&4R|K2xLo?v@w+PeFf
zpkob7+I@TKzfe+&>+LCDC|w(n^fy!EUNb}O+zPtAFNpNb)bD*kq;IC|eVvqU@K!EO
zBIX}hwbCu#%C&OV@K&y6V%U*u3hH}&6vhuSj+(4CcoXx~jUw}=L*_TAKe1`f?Ieq@;z
zzVxGZ7?vOCs2wJwc8{Mk4aCEMGHS^`jPahdiQ5T-xZUIDP)aG>t78D-X+YOeL0jra
zEr@ilj@n@|YWMls3r8}VK-Y92p7xbf|BFHxSNqb;t$;vW?b8*|Frg216hml1jY0jSdZlHoK=9^vEE|C$LRuV54JN(S-A=_#%sP>Sb|Q-An1Oy1w0q^4}Ac09?)9oWrb
zAlgsTrf!UbXg^8)ubGC)WPUI;DwSIyph{&BAIzmPh!5sc2Jxr4G__Yda;=QwPjjt|
z;!kreqxiGbe`+5V%5S$o_eB6i`dNCa=1~UmXQ}@I$uRp_Czr~tkk74D)_;_u{XEy&
zFFU!GQG6&hr~9nRF(K&I+{5fBK9n}MYYsfgAU>43zg7=2h!5)^hLD2pZ3R+mr^9Iz
zH;Q4jhh-Fxl@FdbW$}@;@Zag|6Tb?A@=e$tk-1*l{U#YtM|C_w_ywI`5Zj|VoIuDZtfPashoOZ{bD5Ld_2
zb}lg>u8z6ISZIEl#eYu=_mtc|^ru+ZJ4g{^8zvc?!N}h302jJhD_6?PL2H
zmLp4PxtR^_XA<0~lHX@SWB_!vfW$hg)X4Qn5bdavKfnR0WmL(Zl>MB~N2S7eUyJ>-
zIi=KXnSL&nj4SzV4@4zp*wq44%eaz1VFIaTT&bDsL?E?{E7`dxG&g7Qgi>LWujOVe
zCul7DwhK%x(|qGcNfys26&hSEk<9%wN|9ZxM~T!jv*fow5QU)I{(#ITGfRH=lgM=O
zq#s!*WrTwE_6k^*z0#9z@E90+DmNA_sK&0;E&H)0+F7}+ysAO9m95gO+%I{Uo!iQ*
z8N^n;StNF=G&?sYOLI!@WP?I^+k*BaLlDPvO70{Bq}k@?k1lUl(5~F25Zk#Wx7Pr9
zyUxpPC8hJqxv^}O=HAo9}T$t%hDCLy>TRkPbc5MKz%s*U)e0pAC4=E_2l2(4&xgE#`Srpmj9JaeTiF^j4NW|
zPU5nXKS6=81$)TSK?<>5R^nH<&X!Av%X3E=wxC_DVVhyQyyRAEQBn@Mb+{sLXSrqw
z+C>P)^1rfKQEDk~(9jI$i(RR(#*h2qSgz99Ww?yU)g^!1AEH}=?(_}Bc6F(xTQGu*
zoYf`0?LS;b*)zT$8i?)>x|IWHOZ^8W5bZN1cNiM+fBAT>RCvYD5z0viS@ZHN!n2Iml9JuM}T%INf0te
zY$*9li5w?zFr%Fk!Y}9!mdY^38%zFViTwj7F(v;=6v7y^SATIVbHt0K&h{tJAale^
zc@UC+P=k;;;-x$Y=7^U|{{OGUf(cu&hdn01lS~pXm)zHci2uvVYo)>t->hQ#S}C#%
zrKlv$x=Dv0L?P(r8W1;|bgn5$(`?q^2RXFwXB8ZG
zNt$(=&V~?TMf1U8nph+{{SgkTNMBR

diff --git a/clients/python/src/zb_mom_ww_mxgateway/generated/mxaccess_gateway_pb2.py b/clients/python/src/zb_mom_ww_mxgateway/generated/mxaccess_gateway_pb2.py
index 8860ba1..0b11094 100644
--- a/clients/python/src/zb_mom_ww_mxgateway/generated/mxaccess_gateway_pb2.py
+++ b/clients/python/src/zb_mom_ww_mxgateway/generated/mxaccess_gateway_pb2.py
@@ -26,7 +26,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb
 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16mxaccess_gateway.proto\x12\x13mxaccess_gateway.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"j\n\x18QueryActiveAlarmsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x03 \x01(\t\"\x9f\x01\n\x12OpenSessionRequest\x12\x19\n\x11requested_backend\x18\x01 \x01(\t\x12\x1b\n\x13\x63lient_session_name\x18\x02 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x03 \x01(\t\x12\x32\n\x0f\x63ommand_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xaa\x02\n\x10OpenSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x14\n\x0c\x62\x61\x63kend_name\x18\x02 \x01(\t\x12\x19\n\x11worker_process_id\x18\x03 \x01(\x05\x12\x1f\n\x17worker_protocol_version\x18\x04 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x05 \x03(\t\x12:\n\x17\x64\x65\x66\x61ult_command_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x0fprotocol_status\x18\x07 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12 \n\x18gateway_protocol_version\x18\x08 \x01(\r\"H\n\x13\x43loseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\"\x9d\x01\n\x11\x43loseSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x36\n\x0b\x66inal_state\x18\x02 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\"H\n\x13StreamEventsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x61\x66ter_worker_sequence\x18\x02 \x01(\x04\"v\n\x10MxCommandRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12/\n\x07\x63ommand\x18\x03 \x01(\x0b\x32\x1e.mxaccess_gateway.v1.MxCommand\"\xc0\x15\n\tMxCommand\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12\x38\n\x08register\x18\n \x01(\x0b\x32$.mxaccess_gateway.v1.RegisterCommandH\x00\x12<\n\nunregister\x18\x0b \x01(\x0b\x32&.mxaccess_gateway.v1.UnregisterCommandH\x00\x12\x37\n\x08\x61\x64\x64_item\x18\x0c \x01(\x0b\x32#.mxaccess_gateway.v1.AddItemCommandH\x00\x12\x39\n\tadd_item2\x18\r \x01(\x0b\x32$.mxaccess_gateway.v1.AddItem2CommandH\x00\x12=\n\x0bremove_item\x18\x0e \x01(\x0b\x32&.mxaccess_gateway.v1.RemoveItemCommandH\x00\x12\x34\n\x06\x61\x64vise\x18\x0f \x01(\x0b\x32\".mxaccess_gateway.v1.AdviseCommandH\x00\x12\x39\n\tun_advise\x18\x10 \x01(\x0b\x32$.mxaccess_gateway.v1.UnAdviseCommandH\x00\x12K\n\x12\x61\x64vise_supervisory\x18\x11 \x01(\x0b\x32-.mxaccess_gateway.v1.AdviseSupervisoryCommandH\x00\x12H\n\x11\x61\x64\x64_buffered_item\x18\x12 \x01(\x0b\x32+.mxaccess_gateway.v1.AddBufferedItemCommandH\x00\x12]\n\x1cset_buffered_update_interval\x18\x13 \x01(\x0b\x32\x35.mxaccess_gateway.v1.SetBufferedUpdateIntervalCommandH\x00\x12\x36\n\x07suspend\x18\x14 \x01(\x0b\x32#.mxaccess_gateway.v1.SuspendCommandH\x00\x12\x38\n\x08\x61\x63tivate\x18\x15 \x01(\x0b\x32$.mxaccess_gateway.v1.ActivateCommandH\x00\x12\x32\n\x05write\x18\x16 \x01(\x0b\x32!.mxaccess_gateway.v1.WriteCommandH\x00\x12\x34\n\x06write2\x18\x17 \x01(\x0b\x32\".mxaccess_gateway.v1.Write2CommandH\x00\x12\x41\n\rwrite_secured\x18\x18 \x01(\x0b\x32(.mxaccess_gateway.v1.WriteSecuredCommandH\x00\x12\x43\n\x0ewrite_secured2\x18\x19 \x01(\x0b\x32).mxaccess_gateway.v1.WriteSecured2CommandH\x00\x12I\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32,.mxaccess_gateway.v1.AuthenticateUserCommandH\x00\x12M\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32-.mxaccess_gateway.v1.ArchestrAUserToIdCommandH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.AddItemBulkCommandH\x00\x12\x46\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32*.mxaccess_gateway.v1.AdviseItemBulkCommandH\x00\x12\x46\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32*.mxaccess_gateway.v1.RemoveItemBulkCommandH\x00\x12K\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32,.mxaccess_gateway.v1.UnAdviseItemBulkCommandH\x00\x12\x43\n\x0esubscribe_bulk\x18  \x01(\x0b\x32).mxaccess_gateway.v1.SubscribeBulkCommandH\x00\x12G\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32+.mxaccess_gateway.v1.UnsubscribeBulkCommandH\x00\x12G\n\x10subscribe_alarms\x18\" \x01(\x0b\x32+.mxaccess_gateway.v1.SubscribeAlarmsCommandH\x00\x12K\n\x12unsubscribe_alarms\x18# \x01(\x0b\x32-.mxaccess_gateway.v1.UnsubscribeAlarmsCommandH\x00\x12Q\n\x19\x61\x63knowledge_alarm_command\x18$ \x01(\x0b\x32,.mxaccess_gateway.v1.AcknowledgeAlarmCommandH\x00\x12T\n\x1bquery_active_alarms_command\x18% \x01(\x0b\x32-.mxaccess_gateway.v1.QueryActiveAlarmsCommandH\x00\x12_\n!acknowledge_alarm_by_name_command\x18& \x01(\x0b\x32\x32.mxaccess_gateway.v1.AcknowledgeAlarmByNameCommandH\x00\x12;\n\nwrite_bulk\x18\' \x01(\x0b\x32%.mxaccess_gateway.v1.WriteBulkCommandH\x00\x12=\n\x0bwrite2_bulk\x18( \x01(\x0b\x32&.mxaccess_gateway.v1.Write2BulkCommandH\x00\x12J\n\x12write_secured_bulk\x18) \x01(\x0b\x32,.mxaccess_gateway.v1.WriteSecuredBulkCommandH\x00\x12L\n\x13write_secured2_bulk\x18* \x01(\x0b\x32-.mxaccess_gateway.v1.WriteSecured2BulkCommandH\x00\x12\x39\n\tread_bulk\x18+ \x01(\x0b\x32$.mxaccess_gateway.v1.ReadBulkCommandH\x00\x12\x30\n\x04ping\x18\x64 \x01(\x0b\x32 .mxaccess_gateway.v1.PingCommandH\x00\x12H\n\x11get_session_state\x18\x65 \x01(\x0b\x32+.mxaccess_gateway.v1.GetSessionStateCommandH\x00\x12\x44\n\x0fget_worker_info\x18\x66 \x01(\x0b\x32).mxaccess_gateway.v1.GetWorkerInfoCommandH\x00\x12?\n\x0c\x64rain_events\x18g \x01(\x0b\x32\'.mxaccess_gateway.v1.DrainEventsCommandH\x00\x12\x45\n\x0fshutdown_worker\x18h \x01(\x0b\x32*.mxaccess_gateway.v1.ShutdownWorkerCommandH\x00\x42\t\n\x07payload\"&\n\x0fRegisterCommand\x12\x13\n\x0b\x63lient_name\x18\x01 \x01(\t\"*\n\x11UnregisterCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"@\n\x0e\x41\x64\x64ItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\"W\n\x0f\x41\x64\x64Item2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"?\n\x11RemoveItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\";\n\rAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0fUnAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"F\n\x18\x41\x64viseSupervisoryCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"^\n\x16\x41\x64\x64\x42ufferedItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"_\n SetBufferedUpdateIntervalCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12$\n\x1cupdate_interval_milliseconds\x18\x02 \x01(\x05\"<\n\x0eSuspendCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0f\x41\x63tivateCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"x\n\x0cWriteCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"\xb0\x01\n\rWrite2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x05 \x01(\x05\"\xa1\x01\n\x13WriteSecuredCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\xd9\x01\n\x14WriteSecured2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"c\n\x17\x41uthenticateUserCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bverify_user\x18\x02 \x01(\t\x12\x1c\n\x14verify_user_password\x18\x03 \x01(\t\"G\n\x18\x41rchestrAUserToIdCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0cuser_id_guid\x18\x02 \x01(\t\"B\n\x12\x41\x64\x64ItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"D\n\x15\x41\x64viseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x15RemoveItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"F\n\x17UnAdviseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x14SubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"\xee\x01\n\x16SubscribeAlarmsCommand\x12\x1f\n\x17subscription_expression\x18\x01 \x01(\t\x12;\n\x0b\x66orced_mode\x18\x02 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12:\n\nwatch_list\x18\x03 \x03(\x0b\x32&.mxaccess_gateway.v1.AlarmSubtagTarget\x12:\n\x08\x66\x61ilover\x18\x04 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmFailoverConfig\"\x1a\n\x18UnsubscribeAlarmsCommand\"\xb4\x01\n\x11\x41larmSubtagTarget\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x15\n\ractive_subtag\x18\x03 \x01(\t\x12\x14\n\x0c\x61\x63ked_subtag\x18\x04 \x01(\t\x12\x1a\n\x12\x61\x63k_comment_subtag\x18\x05 \x01(\t\x12\x17\n\x0fpriority_subtag\x18\x06 \x01(\t\"\x85\x01\n\x13\x41larmFailoverConfig\x12%\n\x1d\x63onsecutive_failure_threshold\x18\x01 \x01(\x05\x12\'\n\x1f\x66\x61ilback_probe_interval_seconds\x18\x02 \x01(\x05\x12\x1e\n\x16\x66\x61ilback_stable_probes\x18\x03 \x01(\x05\"\xa1\x01\n\x17\x41\x63knowledgeAlarmCommand\x12\x12\n\nalarm_guid\x18\x01 \x01(\t\x12\x0f\n\x07\x63omment\x18\x02 \x01(\t\x12\x15\n\roperator_user\x18\x03 \x01(\t\x12\x15\n\roperator_node\x18\x04 \x01(\t\x12\x17\n\x0foperator_domain\x18\x05 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x06 \x01(\t\"7\n\x18QueryActiveAlarmsCommand\x12\x1b\n\x13\x61larm_filter_prefix\x18\x01 \x01(\t\"\xd2\x01\n\x1d\x41\x63knowledgeAlarmByNameCommand\x12\x12\n\nalarm_name\x18\x01 \x01(\t\x12\x15\n\rprovider_name\x18\x02 \x01(\t\x12\x12\n\ngroup_name\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\t\x12\x15\n\roperator_node\x18\x06 \x01(\t\x12\x17\n\x0foperator_domain\x18\x07 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x08 \x01(\t\"E\n\x16UnsubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"_\n\x10WriteBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x34\n\x07\x65ntries\x18\x02 \x03(\x0b\x32#.mxaccess_gateway.v1.WriteBulkEntry\"c\n\x0eWriteBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x03 \x01(\x05\"a\n\x11Write2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x35\n\x07\x65ntries\x18\x02 \x03(\x0b\x32$.mxaccess_gateway.v1.Write2BulkEntry\"\x9b\x01\n\x0fWrite2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"m\n\x17WriteSecuredBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12;\n\x07\x65ntries\x18\x02 \x03(\x0b\x32*.mxaccess_gateway.v1.WriteSecuredBulkEntry\"\x8c\x01\n\x15WriteSecuredBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"o\n\x18WriteSecured2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12<\n\x07\x65ntries\x18\x02 \x03(\x0b\x32+.mxaccess_gateway.v1.WriteSecured2BulkEntry\"\xc4\x01\n\x16WriteSecured2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"S\n\x0fReadBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\x12\x12\n\ntimeout_ms\x18\x03 \x01(\r\"\x1e\n\x0bPingCommand\x12\x0f\n\x07message\x18\x01 \x01(\t\"\x18\n\x16GetSessionStateCommand\"\x16\n\x14GetWorkerInfoCommand\"(\n\x12\x44rainEventsCommand\x12\x12\n\nmax_events\x18\x01 \x01(\r\"H\n\x15ShutdownWorkerCommand\x12/\n\x0cgrace_period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x86\x0f\n\x0eMxCommandReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12\x30\n\x04kind\x18\x03 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12<\n\x0fprotocol_status\x18\x04 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x32\n\x0creturn_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x34\n\x08statuses\x18\x07 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x08 \x01(\t\x12\x36\n\x08register\x18\x14 \x01(\x0b\x32\".mxaccess_gateway.v1.RegisterReplyH\x00\x12\x35\n\x08\x61\x64\x64_item\x18\x15 \x01(\x0b\x32!.mxaccess_gateway.v1.AddItemReplyH\x00\x12\x37\n\tadd_item2\x18\x16 \x01(\x0b\x32\".mxaccess_gateway.v1.AddItem2ReplyH\x00\x12\x46\n\x11\x61\x64\x64_buffered_item\x18\x17 \x01(\x0b\x32).mxaccess_gateway.v1.AddBufferedItemReplyH\x00\x12\x34\n\x07suspend\x18\x18 \x01(\x0b\x32!.mxaccess_gateway.v1.SuspendReplyH\x00\x12\x36\n\x08\x61\x63tivate\x18\x19 \x01(\x0b\x32\".mxaccess_gateway.v1.ActivateReplyH\x00\x12G\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32*.mxaccess_gateway.v1.AuthenticateUserReplyH\x00\x12K\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32+.mxaccess_gateway.v1.ArchestrAUserToIdReplyH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x46\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x41\n\x0esubscribe_bulk\x18  \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12N\n\x11\x61\x63knowledge_alarm\x18\" \x01(\x0b\x32\x31.mxaccess_gateway.v1.AcknowledgeAlarmReplyPayloadH\x00\x12Q\n\x13query_active_alarms\x18# \x01(\x0b\x32\x32.mxaccess_gateway.v1.QueryActiveAlarmsReplyPayloadH\x00\x12\x39\n\nwrite_bulk\x18$ \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12:\n\x0bwrite2_bulk\x18% \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x41\n\x12write_secured_bulk\x18& \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x42\n\x13write_secured2_bulk\x18\' \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x37\n\tread_bulk\x18( \x01(\x0b\x32\".mxaccess_gateway.v1.BulkReadReplyH\x00\x12?\n\rsession_state\x18\x64 \x01(\x0b\x32&.mxaccess_gateway.v1.SessionStateReplyH\x00\x12;\n\x0bworker_info\x18\x65 \x01(\x0b\x32$.mxaccess_gateway.v1.WorkerInfoReplyH\x00\x12=\n\x0c\x64rain_events\x18\x66 \x01(\x0b\x32%.mxaccess_gateway.v1.DrainEventsReplyH\x00\x42\t\n\x07payloadB\n\n\x08_hresult\"&\n\rRegisterReply\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"#\n\x0c\x41\x64\x64ItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"$\n\rAddItem2Reply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"+\n\x14\x41\x64\x64\x42ufferedItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"B\n\x0cSuspendReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"C\n\rActivateReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"(\n\x15\x41uthenticateUserReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\")\n\x16\x41rchestrAUserToIdReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\"\x81\x01\n\x0fSubscribeResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x15\n\rerror_message\x18\x05 \x01(\t\"K\n\x12\x42ulkSubscribeReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.SubscribeResult\"\xc4\x01\n\x0f\x42ulkWriteResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x03 \x01(\x08\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x34\n\x08statuses\x18\x05 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\x06 \x01(\tB\n\n\x08_hresult\"G\n\x0e\x42ulkWriteReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.BulkWriteResult\"\xbe\x02\n\x0e\x42ulkReadResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x12\n\nwas_cached\x18\x05 \x01(\x08\x12+\n\x05value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x07 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\t \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\n \x01(\t\"E\n\rBulkReadReply\x12\x34\n\x07results\x18\x01 \x03(\x0b\x32#.mxaccess_gateway.v1.BulkReadResult\"E\n\x11SessionStateReply\x12\x30\n\x05state\x18\x01 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\"u\n\x0fWorkerInfoReply\x12\x19\n\x11worker_process_id\x18\x01 \x01(\x05\x12\x16\n\x0eworker_version\x18\x02 \x01(\t\x12\x17\n\x0fmxaccess_progid\x18\x03 \x01(\t\x12\x16\n\x0emxaccess_clsid\x18\x04 \x01(\t\"@\n\x10\x44rainEventsReply\x12,\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1c.mxaccess_gateway.v1.MxEvent\"5\n\x1c\x41\x63knowledgeAlarmReplyPayload\x12\x15\n\rnative_status\x18\x01 \x01(\x05\"x\n\x1dQueryActiveAlarmsReplyPayload\x12;\n\tsnapshots\x18\x01 \x03(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshot\x12\x1a\n\x12snapshot_truncated\x18\x02 \x01(\x08\"\x8f\x08\n\x07MxEvent\x12\x32\n\x06\x66\x61mily\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxEventFamily\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\x15\n\rserver_handle\x18\x03 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x06 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\x08 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x17\n\x0fworker_sequence\x18\t \x01(\x04\x12\x34\n\x10worker_timestamp\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x19gateway_receive_timestamp\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x07hresult\x18\x0c \x01(\x05H\x01\x88\x01\x01\x12\x12\n\nraw_status\x18\r \x01(\t\x12\x37\n\nreplay_gap\x18\x0e \x01(\x0b\x32\x1e.mxaccess_gateway.v1.ReplayGapH\x02\x88\x01\x01\x12@\n\x0eon_data_change\x18\x14 \x01(\x0b\x32&.mxaccess_gateway.v1.OnDataChangeEventH\x00\x12\x46\n\x11on_write_complete\x18\x15 \x01(\x0b\x32).mxaccess_gateway.v1.OnWriteCompleteEventH\x00\x12I\n\x12operation_complete\x18\x16 \x01(\x0b\x32+.mxaccess_gateway.v1.OperationCompleteEventH\x00\x12Q\n\x17on_buffered_data_change\x18\x17 \x01(\x0b\x32..mxaccess_gateway.v1.OnBufferedDataChangeEventH\x00\x12J\n\x13on_alarm_transition\x18\x18 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x12^\n\x1eon_alarm_provider_mode_changed\x18\x19 \x01(\x0b\x32\x34.mxaccess_gateway.v1.OnAlarmProviderModeChangedEventH\x00\x42\x06\n\x04\x62odyB\n\n\x08_hresultB\r\n\x0b_replay_gap\"P\n\tReplayGap\x12 \n\x18requested_after_sequence\x18\x01 \x01(\x04\x12!\n\x19oldest_available_sequence\x18\x02 \x01(\x04\"\x13\n\x11OnDataChangeEvent\"\x16\n\x14OnWriteCompleteEvent\"\x18\n\x16OperationCompleteEvent\"\xd4\x01\n\x19OnBufferedDataChangeEvent\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x34\n\x0equality_values\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x36\n\x10timestamp_values\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x15\n\rraw_data_type\x18\x04 \x01(\x05\"\xd0\x04\n\x16OnAlarmTransitionEvent\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x41\n\x0ftransition_kind\x18\x04 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmTransitionKind\x12\x10\n\x08severity\x18\x05 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14transition_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\x08 \x01(\t\x12\x18\n\x10operator_comment\x18\t \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\n \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x10\n\x08\x64\x65graded\x18\x0e \x01(\x08\x12?\n\x0fsource_provider\x18\x0f \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\"\xa0\x01\n\x1fOnAlarmProviderModeChangedEvent\x12\x34\n\x04mode\x18\x01 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12\x0f\n\x07hresult\x18\x03 \x01(\x05\x12&\n\x02\x61t\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xf1\x04\n\x13\x41\x63tiveAlarmSnapshot\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x10\n\x08severity\x18\x04 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12?\n\rcurrent_state\x18\x06 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmConditionState\x12\x10\n\x08\x63\x61tegory\x18\x07 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12=\n\x19last_transition_timestamp\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\n \x01(\t\x12\x18\n\x10operator_comment\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x10\n\x08\x64\x65graded\x18\x0e \x01(\x08\x12?\n\x0fsource_provider\x18\x0f \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x1f\n\x17\x66rom_truncated_snapshot\x18\x10 \x01(\x08\"\x90\x01\n\x17\x41\x63knowledgeAlarmRequest\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1c\n\x14\x61larm_full_reference\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\tJ\x04\x08\x01\x10\x02R\nsession_id\"\xf1\x01\n\x15\x41\x63knowledgeAlarmReply\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06status\x18\x05 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x06 \x01(\tB\n\n\x08_hresultJ\x04\x08\x01\x10\x02R\nsession_id\"Q\n\x13StreamAlarmsRequest\x12\x1d\n\x15\x63lient_correlation_id\x18\x01 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x02 \x01(\t\"\xc9\x02\n\x10\x41larmFeedMessage\x12@\n\x0c\x61\x63tive_alarm\x18\x01 \x01(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshotH\x00\x12\x1b\n\x11snapshot_complete\x18\x02 \x01(\x08H\x00\x12\x41\n\ntransition\x18\x03 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x12\x43\n\x0fprovider_status\x18\x04 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmProviderStatusH\x00\x12\x43\n\x0fsnapshot_status\x18\x05 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmSnapshotStatusH\x00\x42\t\n\x07payload\"\x98\x01\n\x13\x41larmProviderStatus\x12\x34\n\x04mode\x18\x01 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x10\n\x08\x64\x65graded\x18\x02 \x01(\x08\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12)\n\x05since\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"(\n\x13\x41larmSnapshotStatus\x12\x11\n\ttruncated\x18\x01 \x01(\x08\"\xeb\x01\n\rMxStatusProxy\x12\x0f\n\x07success\x18\x01 \x01(\x05\x12\x37\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32%.mxaccess_gateway.v1.MxStatusCategory\x12\x38\n\x0b\x64\x65tected_by\x18\x03 \x01(\x0e\x32#.mxaccess_gateway.v1.MxStatusSource\x12\x0e\n\x06\x64\x65tail\x18\x04 \x01(\x05\x12\x14\n\x0craw_category\x18\x05 \x01(\x05\x12\x17\n\x0fraw_detected_by\x18\x06 \x01(\x05\x12\x17\n\x0f\x64iagnostic_text\x18\x07 \x01(\t\"\xe9\x03\n\x07MxValue\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x0f\n\x07is_null\x18\x03 \x01(\x08\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x15\n\rraw_data_type\x18\x05 \x01(\x05\x12\x14\n\nbool_value\x18\n \x01(\x08H\x00\x12\x15\n\x0bint32_value\x18\x0b \x01(\x05H\x00\x12\x15\n\x0bint64_value\x18\x0c \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\r \x01(\x02H\x00\x12\x16\n\x0c\x64ouble_value\x18\x0e \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x0f \x01(\tH\x00\x12\x35\n\x0ftimestamp_value\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12\x33\n\x0b\x61rray_value\x18\x11 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArrayH\x00\x12\x13\n\traw_value\x18\x12 \x01(\x0cH\x00\x12@\n\x12sparse_array_value\x18\x13 \x01(\x0b\x32\".mxaccess_gateway.v1.MxSparseArrayH\x00\x42\x06\n\x04kind\"\xfe\x04\n\x07MxArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x12\n\ndimensions\x18\x03 \x03(\r\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x1d\n\x15raw_element_data_type\x18\x05 \x01(\x05\x12\x35\n\x0b\x62ool_values\x18\n \x01(\x0b\x32\x1e.mxaccess_gateway.v1.BoolArrayH\x00\x12\x37\n\x0cint32_values\x18\x0b \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int32ArrayH\x00\x12\x37\n\x0cint64_values\x18\x0c \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int64ArrayH\x00\x12\x37\n\x0c\x66loat_values\x18\r \x01(\x0b\x32\x1f.mxaccess_gateway.v1.FloatArrayH\x00\x12\x39\n\rdouble_values\x18\x0e \x01(\x0b\x32 .mxaccess_gateway.v1.DoubleArrayH\x00\x12\x39\n\rstring_values\x18\x0f \x01(\x0b\x32 .mxaccess_gateway.v1.StringArrayH\x00\x12?\n\x10timestamp_values\x18\x10 \x01(\x0b\x32#.mxaccess_gateway.v1.TimestampArrayH\x00\x12\x33\n\nraw_values\x18\x11 \x01(\x0b\x32\x1d.mxaccess_gateway.v1.RawArrayH\x00\x42\x08\n\x06values\"\x99\x01\n\rMxSparseArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0ctotal_length\x18\x02 \x01(\r\x12\x36\n\x08\x65lements\x18\x03 \x03(\x0b\x32$.mxaccess_gateway.v1.MxSparseElement\"M\n\x0fMxSparseElement\x12\r\n\x05index\x18\x01 \x01(\r\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\x1b\n\tBoolArray\x12\x0e\n\x06values\x18\x01 \x03(\x08\"\x1c\n\nInt32Array\x12\x0e\n\x06values\x18\x01 \x03(\x05\"\x1c\n\nInt64Array\x12\x0e\n\x06values\x18\x01 \x03(\x03\"\x1c\n\nFloatArray\x12\x0e\n\x06values\x18\x01 \x03(\x02\"\x1d\n\x0b\x44oubleArray\x12\x0e\n\x06values\x18\x01 \x03(\x01\"\x1d\n\x0bStringArray\x12\x0e\n\x06values\x18\x01 \x03(\t\"<\n\x0eTimestampArray\x12*\n\x06values\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1a\n\x08RawArray\x12\x0e\n\x06values\x18\x01 \x03(\x0c\"X\n\x0eProtocolStatus\x12\x35\n\x04\x63ode\x18\x01 \x01(\x0e\x32\'.mxaccess_gateway.v1.ProtocolStatusCode\x12\x0f\n\x07message\x18\x02 \x01(\t*\x9f\x0b\n\rMxCommandKind\x12\x1f\n\x1bMX_COMMAND_KIND_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_COMMAND_KIND_REGISTER\x10\x01\x12\x1e\n\x1aMX_COMMAND_KIND_UNREGISTER\x10\x02\x12\x1c\n\x18MX_COMMAND_KIND_ADD_ITEM\x10\x03\x12\x1d\n\x19MX_COMMAND_KIND_ADD_ITEM2\x10\x04\x12\x1f\n\x1bMX_COMMAND_KIND_REMOVE_ITEM\x10\x05\x12\x1a\n\x16MX_COMMAND_KIND_ADVISE\x10\x06\x12\x1d\n\x19MX_COMMAND_KIND_UN_ADVISE\x10\x07\x12&\n\"MX_COMMAND_KIND_ADVISE_SUPERVISORY\x10\x08\x12%\n!MX_COMMAND_KIND_ADD_BUFFERED_ITEM\x10\t\x12\x30\n,MX_COMMAND_KIND_SET_BUFFERED_UPDATE_INTERVAL\x10\n\x12\x1b\n\x17MX_COMMAND_KIND_SUSPEND\x10\x0b\x12\x1c\n\x18MX_COMMAND_KIND_ACTIVATE\x10\x0c\x12\x19\n\x15MX_COMMAND_KIND_WRITE\x10\r\x12\x1a\n\x16MX_COMMAND_KIND_WRITE2\x10\x0e\x12!\n\x1dMX_COMMAND_KIND_WRITE_SECURED\x10\x0f\x12\"\n\x1eMX_COMMAND_KIND_WRITE_SECURED2\x10\x10\x12%\n!MX_COMMAND_KIND_AUTHENTICATE_USER\x10\x11\x12(\n$MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID\x10\x12\x12!\n\x1dMX_COMMAND_KIND_ADD_ITEM_BULK\x10\x13\x12$\n MX_COMMAND_KIND_ADVISE_ITEM_BULK\x10\x14\x12$\n MX_COMMAND_KIND_REMOVE_ITEM_BULK\x10\x15\x12\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK\x10\x16\x12\"\n\x1eMX_COMMAND_KIND_SUBSCRIBE_BULK\x10\x17\x12$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\x10\x18\x12$\n MX_COMMAND_KIND_SUBSCRIBE_ALARMS\x10\x19\x12&\n\"MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\x10\x1a\x12%\n!MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\x10\x1b\x12\'\n#MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS\x10\x1c\x12-\n)MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME\x10\x1d\x12\x1e\n\x1aMX_COMMAND_KIND_WRITE_BULK\x10\x1e\x12\x1f\n\x1bMX_COMMAND_KIND_WRITE2_BULK\x10\x1f\x12&\n\"MX_COMMAND_KIND_WRITE_SECURED_BULK\x10 \x12\'\n#MX_COMMAND_KIND_WRITE_SECURED2_BULK\x10!\x12\x1d\n\x19MX_COMMAND_KIND_READ_BULK\x10\"\x12\x18\n\x14MX_COMMAND_KIND_PING\x10\x64\x12%\n!MX_COMMAND_KIND_GET_SESSION_STATE\x10\x65\x12#\n\x1fMX_COMMAND_KIND_GET_WORKER_INFO\x10\x66\x12 \n\x1cMX_COMMAND_KIND_DRAIN_EVENTS\x10g\x12#\n\x1fMX_COMMAND_KIND_SHUTDOWN_WORKER\x10h*z\n\x11\x41larmProviderMode\x12#\n\x1f\x41LARM_PROVIDER_MODE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_PROVIDER_MODE_ALARMMGR\x10\x01\x12\x1e\n\x1a\x41LARM_PROVIDER_MODE_SUBTAG\x10\x02*\xad\x02\n\rMxEventFamily\x12\x1f\n\x1bMX_EVENT_FAMILY_UNSPECIFIED\x10\x00\x12\"\n\x1eMX_EVENT_FAMILY_ON_DATA_CHANGE\x10\x01\x12%\n!MX_EVENT_FAMILY_ON_WRITE_COMPLETE\x10\x02\x12&\n\"MX_EVENT_FAMILY_OPERATION_COMPLETE\x10\x03\x12+\n\'MX_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE\x10\x04\x12\'\n#MX_EVENT_FAMILY_ON_ALARM_TRANSITION\x10\x05\x12\x32\n.MX_EVENT_FAMILY_ON_ALARM_PROVIDER_MODE_CHANGED\x10\x06*\xca\x01\n\x13\x41larmTransitionKind\x12%\n!ALARM_TRANSITION_KIND_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_RAISE\x10\x01\x12%\n!ALARM_TRANSITION_KIND_ACKNOWLEDGE\x10\x02\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_CLEAR\x10\x03\x12#\n\x1f\x41LARM_TRANSITION_KIND_RETRIGGER\x10\x04*\xaa\x01\n\x13\x41larmConditionState\x12%\n!ALARM_CONDITION_STATE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_CONDITION_STATE_ACTIVE\x10\x01\x12&\n\"ALARM_CONDITION_STATE_ACTIVE_ACKED\x10\x02\x12\"\n\x1e\x41LARM_CONDITION_STATE_INACTIVE\x10\x03*\xa5\x03\n\x10MxStatusCategory\x12\"\n\x1eMX_STATUS_CATEGORY_UNSPECIFIED\x10\x00\x12\x1e\n\x1aMX_STATUS_CATEGORY_UNKNOWN\x10\x01\x12\x19\n\x15MX_STATUS_CATEGORY_OK\x10\x02\x12\x1e\n\x1aMX_STATUS_CATEGORY_PENDING\x10\x03\x12\x1e\n\x1aMX_STATUS_CATEGORY_WARNING\x10\x04\x12*\n&MX_STATUS_CATEGORY_COMMUNICATION_ERROR\x10\x05\x12*\n&MX_STATUS_CATEGORY_CONFIGURATION_ERROR\x10\x06\x12(\n$MX_STATUS_CATEGORY_OPERATIONAL_ERROR\x10\x07\x12%\n!MX_STATUS_CATEGORY_SECURITY_ERROR\x10\x08\x12%\n!MX_STATUS_CATEGORY_SOFTWARE_ERROR\x10\t\x12\"\n\x1eMX_STATUS_CATEGORY_OTHER_ERROR\x10\n*\xca\x02\n\x0eMxStatusSource\x12 \n\x1cMX_STATUS_SOURCE_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_STATUS_SOURCE_UNKNOWN\x10\x01\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_LMX\x10\x02\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_LMX\x10\x03\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_NMX\x10\x04\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_NMX\x10\x05\x12\x31\n-MX_STATUS_SOURCE_REQUESTING_AUTOMATION_OBJECT\x10\x06\x12\x31\n-MX_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJECT\x10\x07*\xdd\x04\n\nMxDataType\x12\x1c\n\x18MX_DATA_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14MX_DATA_TYPE_UNKNOWN\x10\x01\x12\x18\n\x14MX_DATA_TYPE_NO_DATA\x10\x02\x12\x18\n\x14MX_DATA_TYPE_BOOLEAN\x10\x03\x12\x18\n\x14MX_DATA_TYPE_INTEGER\x10\x04\x12\x16\n\x12MX_DATA_TYPE_FLOAT\x10\x05\x12\x17\n\x13MX_DATA_TYPE_DOUBLE\x10\x06\x12\x17\n\x13MX_DATA_TYPE_STRING\x10\x07\x12\x15\n\x11MX_DATA_TYPE_TIME\x10\x08\x12\x1d\n\x19MX_DATA_TYPE_ELAPSED_TIME\x10\t\x12\x1f\n\x1bMX_DATA_TYPE_REFERENCE_TYPE\x10\n\x12\x1c\n\x18MX_DATA_TYPE_STATUS_TYPE\x10\x0b\x12\x15\n\x11MX_DATA_TYPE_ENUM\x10\x0c\x12-\n)MX_DATA_TYPE_SECURITY_CLASSIFICATION_ENUM\x10\r\x12\"\n\x1eMX_DATA_TYPE_DATA_QUALITY_TYPE\x10\x0e\x12\x1f\n\x1bMX_DATA_TYPE_QUALIFIED_ENUM\x10\x0f\x12!\n\x1dMX_DATA_TYPE_QUALIFIED_STRUCT\x10\x10\x12)\n%MX_DATA_TYPE_INTERNATIONALIZED_STRING\x10\x11\x12\x1b\n\x17MX_DATA_TYPE_BIG_STRING\x10\x12\x12\x14\n\x10MX_DATA_TYPE_END\x10\x13*\xa3\x03\n\x12ProtocolStatusCode\x12$\n PROTOCOL_STATUS_CODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17PROTOCOL_STATUS_CODE_OK\x10\x01\x12(\n$PROTOCOL_STATUS_CODE_INVALID_REQUEST\x10\x02\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND\x10\x03\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_READY\x10\x04\x12+\n\'PROTOCOL_STATUS_CODE_WORKER_UNAVAILABLE\x10\x05\x12 \n\x1cPROTOCOL_STATUS_CODE_TIMEOUT\x10\x06\x12!\n\x1dPROTOCOL_STATUS_CODE_CANCELED\x10\x07\x12+\n\'PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION\x10\x08\x12)\n%PROTOCOL_STATUS_CODE_MXACCESS_FAILURE\x10\t*\xbf\x02\n\x0cSessionState\x12\x1d\n\x19SESSION_STATE_UNSPECIFIED\x10\x00\x12\x1a\n\x16SESSION_STATE_CREATING\x10\x01\x12!\n\x1dSESSION_STATE_STARTING_WORKER\x10\x02\x12\"\n\x1eSESSION_STATE_WAITING_FOR_PIPE\x10\x03\x12\x1d\n\x19SESSION_STATE_HANDSHAKING\x10\x04\x12%\n!SESSION_STATE_INITIALIZING_WORKER\x10\x05\x12\x17\n\x13SESSION_STATE_READY\x10\x06\x12\x19\n\x15SESSION_STATE_CLOSING\x10\x07\x12\x18\n\x14SESSION_STATE_CLOSED\x10\x08\x12\x19\n\x15SESSION_STATE_FAULTED\x10\t2\xc3\x05\n\x0fMxAccessGateway\x12]\n\x0bOpenSession\x12\'.mxaccess_gateway.v1.OpenSessionRequest\x1a%.mxaccess_gateway.v1.OpenSessionReply\x12`\n\x0c\x43loseSession\x12(.mxaccess_gateway.v1.CloseSessionRequest\x1a&.mxaccess_gateway.v1.CloseSessionReply\x12T\n\x06Invoke\x12%.mxaccess_gateway.v1.MxCommandRequest\x1a#.mxaccess_gateway.v1.MxCommandReply\x12X\n\x0cStreamEvents\x12(.mxaccess_gateway.v1.StreamEventsRequest\x1a\x1c.mxaccess_gateway.v1.MxEvent0\x01\x12l\n\x10\x41\x63knowledgeAlarm\x12,.mxaccess_gateway.v1.AcknowledgeAlarmRequest\x1a*.mxaccess_gateway.v1.AcknowledgeAlarmReply\x12\x61\n\x0cStreamAlarms\x12(.mxaccess_gateway.v1.StreamAlarmsRequest\x1a%.mxaccess_gateway.v1.AlarmFeedMessage0\x01\x12n\n\x11QueryActiveAlarms\x12-.mxaccess_gateway.v1.QueryActiveAlarmsRequest\x1a(.mxaccess_gateway.v1.ActiveAlarmSnapshot0\x01\x42&\xaa\x02#ZB.MOM.WW.MxGateway.Contracts.Protob\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16mxaccess_gateway.proto\x12\x13mxaccess_gateway.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"j\n\x18QueryActiveAlarmsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x03 \x01(\t\"\x9f\x01\n\x12OpenSessionRequest\x12\x19\n\x11requested_backend\x18\x01 \x01(\t\x12\x1b\n\x13\x63lient_session_name\x18\x02 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x03 \x01(\t\x12\x32\n\x0f\x63ommand_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xaa\x02\n\x10OpenSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x14\n\x0c\x62\x61\x63kend_name\x18\x02 \x01(\t\x12\x19\n\x11worker_process_id\x18\x03 \x01(\x05\x12\x1f\n\x17worker_protocol_version\x18\x04 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x05 \x03(\t\x12:\n\x17\x64\x65\x66\x61ult_command_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x0fprotocol_status\x18\x07 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12 \n\x18gateway_protocol_version\x18\x08 \x01(\r\"H\n\x13\x43loseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\"\x9d\x01\n\x11\x43loseSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x36\n\x0b\x66inal_state\x18\x02 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\"H\n\x13StreamEventsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x61\x66ter_worker_sequence\x18\x02 \x01(\x04\"v\n\x10MxCommandRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12/\n\x07\x63ommand\x18\x03 \x01(\x0b\x32\x1e.mxaccess_gateway.v1.MxCommand\"\x95\x16\n\tMxCommand\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12\x38\n\x08register\x18\n \x01(\x0b\x32$.mxaccess_gateway.v1.RegisterCommandH\x00\x12<\n\nunregister\x18\x0b \x01(\x0b\x32&.mxaccess_gateway.v1.UnregisterCommandH\x00\x12\x37\n\x08\x61\x64\x64_item\x18\x0c \x01(\x0b\x32#.mxaccess_gateway.v1.AddItemCommandH\x00\x12\x39\n\tadd_item2\x18\r \x01(\x0b\x32$.mxaccess_gateway.v1.AddItem2CommandH\x00\x12=\n\x0bremove_item\x18\x0e \x01(\x0b\x32&.mxaccess_gateway.v1.RemoveItemCommandH\x00\x12\x34\n\x06\x61\x64vise\x18\x0f \x01(\x0b\x32\".mxaccess_gateway.v1.AdviseCommandH\x00\x12\x39\n\tun_advise\x18\x10 \x01(\x0b\x32$.mxaccess_gateway.v1.UnAdviseCommandH\x00\x12K\n\x12\x61\x64vise_supervisory\x18\x11 \x01(\x0b\x32-.mxaccess_gateway.v1.AdviseSupervisoryCommandH\x00\x12H\n\x11\x61\x64\x64_buffered_item\x18\x12 \x01(\x0b\x32+.mxaccess_gateway.v1.AddBufferedItemCommandH\x00\x12]\n\x1cset_buffered_update_interval\x18\x13 \x01(\x0b\x32\x35.mxaccess_gateway.v1.SetBufferedUpdateIntervalCommandH\x00\x12\x36\n\x07suspend\x18\x14 \x01(\x0b\x32#.mxaccess_gateway.v1.SuspendCommandH\x00\x12\x38\n\x08\x61\x63tivate\x18\x15 \x01(\x0b\x32$.mxaccess_gateway.v1.ActivateCommandH\x00\x12\x32\n\x05write\x18\x16 \x01(\x0b\x32!.mxaccess_gateway.v1.WriteCommandH\x00\x12\x34\n\x06write2\x18\x17 \x01(\x0b\x32\".mxaccess_gateway.v1.Write2CommandH\x00\x12\x41\n\rwrite_secured\x18\x18 \x01(\x0b\x32(.mxaccess_gateway.v1.WriteSecuredCommandH\x00\x12\x43\n\x0ewrite_secured2\x18\x19 \x01(\x0b\x32).mxaccess_gateway.v1.WriteSecured2CommandH\x00\x12I\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32,.mxaccess_gateway.v1.AuthenticateUserCommandH\x00\x12M\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32-.mxaccess_gateway.v1.ArchestrAUserToIdCommandH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.AddItemBulkCommandH\x00\x12\x46\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32*.mxaccess_gateway.v1.AdviseItemBulkCommandH\x00\x12\x46\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32*.mxaccess_gateway.v1.RemoveItemBulkCommandH\x00\x12K\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32,.mxaccess_gateway.v1.UnAdviseItemBulkCommandH\x00\x12\x43\n\x0esubscribe_bulk\x18  \x01(\x0b\x32).mxaccess_gateway.v1.SubscribeBulkCommandH\x00\x12G\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32+.mxaccess_gateway.v1.UnsubscribeBulkCommandH\x00\x12G\n\x10subscribe_alarms\x18\" \x01(\x0b\x32+.mxaccess_gateway.v1.SubscribeAlarmsCommandH\x00\x12K\n\x12unsubscribe_alarms\x18# \x01(\x0b\x32-.mxaccess_gateway.v1.UnsubscribeAlarmsCommandH\x00\x12Q\n\x19\x61\x63knowledge_alarm_command\x18$ \x01(\x0b\x32,.mxaccess_gateway.v1.AcknowledgeAlarmCommandH\x00\x12T\n\x1bquery_active_alarms_command\x18% \x01(\x0b\x32-.mxaccess_gateway.v1.QueryActiveAlarmsCommandH\x00\x12_\n!acknowledge_alarm_by_name_command\x18& \x01(\x0b\x32\x32.mxaccess_gateway.v1.AcknowledgeAlarmByNameCommandH\x00\x12;\n\nwrite_bulk\x18\' \x01(\x0b\x32%.mxaccess_gateway.v1.WriteBulkCommandH\x00\x12=\n\x0bwrite2_bulk\x18( \x01(\x0b\x32&.mxaccess_gateway.v1.Write2BulkCommandH\x00\x12J\n\x12write_secured_bulk\x18) \x01(\x0b\x32,.mxaccess_gateway.v1.WriteSecuredBulkCommandH\x00\x12L\n\x13write_secured2_bulk\x18* \x01(\x0b\x32-.mxaccess_gateway.v1.WriteSecured2BulkCommandH\x00\x12\x39\n\tread_bulk\x18+ \x01(\x0b\x32$.mxaccess_gateway.v1.ReadBulkCommandH\x00\x12S\n\x17update_alarm_watch_list\x18, \x01(\x0b\x32\x30.mxaccess_gateway.v1.UpdateAlarmWatchListCommandH\x00\x12\x30\n\x04ping\x18\x64 \x01(\x0b\x32 .mxaccess_gateway.v1.PingCommandH\x00\x12H\n\x11get_session_state\x18\x65 \x01(\x0b\x32+.mxaccess_gateway.v1.GetSessionStateCommandH\x00\x12\x44\n\x0fget_worker_info\x18\x66 \x01(\x0b\x32).mxaccess_gateway.v1.GetWorkerInfoCommandH\x00\x12?\n\x0c\x64rain_events\x18g \x01(\x0b\x32\'.mxaccess_gateway.v1.DrainEventsCommandH\x00\x12\x45\n\x0fshutdown_worker\x18h \x01(\x0b\x32*.mxaccess_gateway.v1.ShutdownWorkerCommandH\x00\x42\t\n\x07payload\"&\n\x0fRegisterCommand\x12\x13\n\x0b\x63lient_name\x18\x01 \x01(\t\"*\n\x11UnregisterCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"@\n\x0e\x41\x64\x64ItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\"W\n\x0f\x41\x64\x64Item2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"?\n\x11RemoveItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\";\n\rAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0fUnAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"F\n\x18\x41\x64viseSupervisoryCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"^\n\x16\x41\x64\x64\x42ufferedItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"_\n SetBufferedUpdateIntervalCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12$\n\x1cupdate_interval_milliseconds\x18\x02 \x01(\x05\"<\n\x0eSuspendCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0f\x41\x63tivateCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"x\n\x0cWriteCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"\xb0\x01\n\rWrite2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x05 \x01(\x05\"\xa1\x01\n\x13WriteSecuredCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\xd9\x01\n\x14WriteSecured2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"c\n\x17\x41uthenticateUserCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bverify_user\x18\x02 \x01(\t\x12\x1c\n\x14verify_user_password\x18\x03 \x01(\t\"G\n\x18\x41rchestrAUserToIdCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0cuser_id_guid\x18\x02 \x01(\t\"B\n\x12\x41\x64\x64ItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"D\n\x15\x41\x64viseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x15RemoveItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"F\n\x17UnAdviseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x14SubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"\x88\x02\n\x16SubscribeAlarmsCommand\x12\x1f\n\x17subscription_expression\x18\x01 \x01(\t\x12;\n\x0b\x66orced_mode\x18\x02 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12:\n\nwatch_list\x18\x03 \x03(\x0b\x32&.mxaccess_gateway.v1.AlarmSubtagTarget\x12:\n\x08\x66\x61ilover\x18\x04 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmFailoverConfig\x12\x18\n\x10\x66\x61llback_enabled\x18\x05 \x01(\x08\"Y\n\x1bUpdateAlarmWatchListCommand\x12:\n\nwatch_list\x18\x01 \x03(\x0b\x32&.mxaccess_gateway.v1.AlarmSubtagTarget\"\x1a\n\x18UnsubscribeAlarmsCommand\"\xb4\x01\n\x11\x41larmSubtagTarget\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x15\n\ractive_subtag\x18\x03 \x01(\t\x12\x14\n\x0c\x61\x63ked_subtag\x18\x04 \x01(\t\x12\x1a\n\x12\x61\x63k_comment_subtag\x18\x05 \x01(\t\x12\x17\n\x0fpriority_subtag\x18\x06 \x01(\t\"\x85\x01\n\x13\x41larmFailoverConfig\x12%\n\x1d\x63onsecutive_failure_threshold\x18\x01 \x01(\x05\x12\'\n\x1f\x66\x61ilback_probe_interval_seconds\x18\x02 \x01(\x05\x12\x1e\n\x16\x66\x61ilback_stable_probes\x18\x03 \x01(\x05\"\xa1\x01\n\x17\x41\x63knowledgeAlarmCommand\x12\x12\n\nalarm_guid\x18\x01 \x01(\t\x12\x0f\n\x07\x63omment\x18\x02 \x01(\t\x12\x15\n\roperator_user\x18\x03 \x01(\t\x12\x15\n\roperator_node\x18\x04 \x01(\t\x12\x17\n\x0foperator_domain\x18\x05 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x06 \x01(\t\"7\n\x18QueryActiveAlarmsCommand\x12\x1b\n\x13\x61larm_filter_prefix\x18\x01 \x01(\t\"\xd2\x01\n\x1d\x41\x63knowledgeAlarmByNameCommand\x12\x12\n\nalarm_name\x18\x01 \x01(\t\x12\x15\n\rprovider_name\x18\x02 \x01(\t\x12\x12\n\ngroup_name\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\t\x12\x15\n\roperator_node\x18\x06 \x01(\t\x12\x17\n\x0foperator_domain\x18\x07 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x08 \x01(\t\"E\n\x16UnsubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"_\n\x10WriteBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x34\n\x07\x65ntries\x18\x02 \x03(\x0b\x32#.mxaccess_gateway.v1.WriteBulkEntry\"c\n\x0eWriteBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x03 \x01(\x05\"a\n\x11Write2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x35\n\x07\x65ntries\x18\x02 \x03(\x0b\x32$.mxaccess_gateway.v1.Write2BulkEntry\"\x9b\x01\n\x0fWrite2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"m\n\x17WriteSecuredBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12;\n\x07\x65ntries\x18\x02 \x03(\x0b\x32*.mxaccess_gateway.v1.WriteSecuredBulkEntry\"\x8c\x01\n\x15WriteSecuredBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"o\n\x18WriteSecured2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12<\n\x07\x65ntries\x18\x02 \x03(\x0b\x32+.mxaccess_gateway.v1.WriteSecured2BulkEntry\"\xc4\x01\n\x16WriteSecured2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"S\n\x0fReadBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\x12\x12\n\ntimeout_ms\x18\x03 \x01(\r\"\x1e\n\x0bPingCommand\x12\x0f\n\x07message\x18\x01 \x01(\t\"\x18\n\x16GetSessionStateCommand\"\x16\n\x14GetWorkerInfoCommand\"(\n\x12\x44rainEventsCommand\x12\x12\n\nmax_events\x18\x01 \x01(\r\"H\n\x15ShutdownWorkerCommand\x12/\n\x0cgrace_period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x86\x0f\n\x0eMxCommandReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12\x30\n\x04kind\x18\x03 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12<\n\x0fprotocol_status\x18\x04 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x32\n\x0creturn_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x34\n\x08statuses\x18\x07 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x08 \x01(\t\x12\x36\n\x08register\x18\x14 \x01(\x0b\x32\".mxaccess_gateway.v1.RegisterReplyH\x00\x12\x35\n\x08\x61\x64\x64_item\x18\x15 \x01(\x0b\x32!.mxaccess_gateway.v1.AddItemReplyH\x00\x12\x37\n\tadd_item2\x18\x16 \x01(\x0b\x32\".mxaccess_gateway.v1.AddItem2ReplyH\x00\x12\x46\n\x11\x61\x64\x64_buffered_item\x18\x17 \x01(\x0b\x32).mxaccess_gateway.v1.AddBufferedItemReplyH\x00\x12\x34\n\x07suspend\x18\x18 \x01(\x0b\x32!.mxaccess_gateway.v1.SuspendReplyH\x00\x12\x36\n\x08\x61\x63tivate\x18\x19 \x01(\x0b\x32\".mxaccess_gateway.v1.ActivateReplyH\x00\x12G\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32*.mxaccess_gateway.v1.AuthenticateUserReplyH\x00\x12K\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32+.mxaccess_gateway.v1.ArchestrAUserToIdReplyH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x46\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x41\n\x0esubscribe_bulk\x18  \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12N\n\x11\x61\x63knowledge_alarm\x18\" \x01(\x0b\x32\x31.mxaccess_gateway.v1.AcknowledgeAlarmReplyPayloadH\x00\x12Q\n\x13query_active_alarms\x18# \x01(\x0b\x32\x32.mxaccess_gateway.v1.QueryActiveAlarmsReplyPayloadH\x00\x12\x39\n\nwrite_bulk\x18$ \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12:\n\x0bwrite2_bulk\x18% \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x41\n\x12write_secured_bulk\x18& \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x42\n\x13write_secured2_bulk\x18\' \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x37\n\tread_bulk\x18( \x01(\x0b\x32\".mxaccess_gateway.v1.BulkReadReplyH\x00\x12?\n\rsession_state\x18\x64 \x01(\x0b\x32&.mxaccess_gateway.v1.SessionStateReplyH\x00\x12;\n\x0bworker_info\x18\x65 \x01(\x0b\x32$.mxaccess_gateway.v1.WorkerInfoReplyH\x00\x12=\n\x0c\x64rain_events\x18\x66 \x01(\x0b\x32%.mxaccess_gateway.v1.DrainEventsReplyH\x00\x42\t\n\x07payloadB\n\n\x08_hresult\"&\n\rRegisterReply\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"#\n\x0c\x41\x64\x64ItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"$\n\rAddItem2Reply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"+\n\x14\x41\x64\x64\x42ufferedItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"B\n\x0cSuspendReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"C\n\rActivateReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"(\n\x15\x41uthenticateUserReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\")\n\x16\x41rchestrAUserToIdReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\"\x81\x01\n\x0fSubscribeResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x15\n\rerror_message\x18\x05 \x01(\t\"K\n\x12\x42ulkSubscribeReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.SubscribeResult\"\xc4\x01\n\x0f\x42ulkWriteResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x03 \x01(\x08\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x34\n\x08statuses\x18\x05 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\x06 \x01(\tB\n\n\x08_hresult\"G\n\x0e\x42ulkWriteReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.BulkWriteResult\"\xbe\x02\n\x0e\x42ulkReadResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x12\n\nwas_cached\x18\x05 \x01(\x08\x12+\n\x05value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x07 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\t \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\n \x01(\t\"E\n\rBulkReadReply\x12\x34\n\x07results\x18\x01 \x03(\x0b\x32#.mxaccess_gateway.v1.BulkReadResult\"E\n\x11SessionStateReply\x12\x30\n\x05state\x18\x01 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\"u\n\x0fWorkerInfoReply\x12\x19\n\x11worker_process_id\x18\x01 \x01(\x05\x12\x16\n\x0eworker_version\x18\x02 \x01(\t\x12\x17\n\x0fmxaccess_progid\x18\x03 \x01(\t\x12\x16\n\x0emxaccess_clsid\x18\x04 \x01(\t\"@\n\x10\x44rainEventsReply\x12,\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1c.mxaccess_gateway.v1.MxEvent\"5\n\x1c\x41\x63knowledgeAlarmReplyPayload\x12\x15\n\rnative_status\x18\x01 \x01(\x05\"x\n\x1dQueryActiveAlarmsReplyPayload\x12;\n\tsnapshots\x18\x01 \x03(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshot\x12\x1a\n\x12snapshot_truncated\x18\x02 \x01(\x08\"\x8f\x08\n\x07MxEvent\x12\x32\n\x06\x66\x61mily\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxEventFamily\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\x15\n\rserver_handle\x18\x03 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x06 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\x08 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x17\n\x0fworker_sequence\x18\t \x01(\x04\x12\x34\n\x10worker_timestamp\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x19gateway_receive_timestamp\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x07hresult\x18\x0c \x01(\x05H\x01\x88\x01\x01\x12\x12\n\nraw_status\x18\r \x01(\t\x12\x37\n\nreplay_gap\x18\x0e \x01(\x0b\x32\x1e.mxaccess_gateway.v1.ReplayGapH\x02\x88\x01\x01\x12@\n\x0eon_data_change\x18\x14 \x01(\x0b\x32&.mxaccess_gateway.v1.OnDataChangeEventH\x00\x12\x46\n\x11on_write_complete\x18\x15 \x01(\x0b\x32).mxaccess_gateway.v1.OnWriteCompleteEventH\x00\x12I\n\x12operation_complete\x18\x16 \x01(\x0b\x32+.mxaccess_gateway.v1.OperationCompleteEventH\x00\x12Q\n\x17on_buffered_data_change\x18\x17 \x01(\x0b\x32..mxaccess_gateway.v1.OnBufferedDataChangeEventH\x00\x12J\n\x13on_alarm_transition\x18\x18 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x12^\n\x1eon_alarm_provider_mode_changed\x18\x19 \x01(\x0b\x32\x34.mxaccess_gateway.v1.OnAlarmProviderModeChangedEventH\x00\x42\x06\n\x04\x62odyB\n\n\x08_hresultB\r\n\x0b_replay_gap\"P\n\tReplayGap\x12 \n\x18requested_after_sequence\x18\x01 \x01(\x04\x12!\n\x19oldest_available_sequence\x18\x02 \x01(\x04\"\x13\n\x11OnDataChangeEvent\"\x16\n\x14OnWriteCompleteEvent\"\x18\n\x16OperationCompleteEvent\"\xd4\x01\n\x19OnBufferedDataChangeEvent\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x34\n\x0equality_values\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x36\n\x10timestamp_values\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x15\n\rraw_data_type\x18\x04 \x01(\x05\"\xd0\x04\n\x16OnAlarmTransitionEvent\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x41\n\x0ftransition_kind\x18\x04 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmTransitionKind\x12\x10\n\x08severity\x18\x05 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14transition_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\x08 \x01(\t\x12\x18\n\x10operator_comment\x18\t \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\n \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x10\n\x08\x64\x65graded\x18\x0e \x01(\x08\x12?\n\x0fsource_provider\x18\x0f \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\"\xa0\x01\n\x1fOnAlarmProviderModeChangedEvent\x12\x34\n\x04mode\x18\x01 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12\x0f\n\x07hresult\x18\x03 \x01(\x05\x12&\n\x02\x61t\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xf1\x04\n\x13\x41\x63tiveAlarmSnapshot\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x10\n\x08severity\x18\x04 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12?\n\rcurrent_state\x18\x06 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmConditionState\x12\x10\n\x08\x63\x61tegory\x18\x07 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12=\n\x19last_transition_timestamp\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\n \x01(\t\x12\x18\n\x10operator_comment\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x10\n\x08\x64\x65graded\x18\x0e \x01(\x08\x12?\n\x0fsource_provider\x18\x0f \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x1f\n\x17\x66rom_truncated_snapshot\x18\x10 \x01(\x08\"\x90\x01\n\x17\x41\x63knowledgeAlarmRequest\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1c\n\x14\x61larm_full_reference\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\tJ\x04\x08\x01\x10\x02R\nsession_id\"\xf1\x01\n\x15\x41\x63knowledgeAlarmReply\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06status\x18\x05 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x06 \x01(\tB\n\n\x08_hresultJ\x04\x08\x01\x10\x02R\nsession_id\"Q\n\x13StreamAlarmsRequest\x12\x1d\n\x15\x63lient_correlation_id\x18\x01 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x02 \x01(\t\"\xc9\x02\n\x10\x41larmFeedMessage\x12@\n\x0c\x61\x63tive_alarm\x18\x01 \x01(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshotH\x00\x12\x1b\n\x11snapshot_complete\x18\x02 \x01(\x08H\x00\x12\x41\n\ntransition\x18\x03 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x12\x43\n\x0fprovider_status\x18\x04 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmProviderStatusH\x00\x12\x43\n\x0fsnapshot_status\x18\x05 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmSnapshotStatusH\x00\x42\t\n\x07payload\"\x98\x01\n\x13\x41larmProviderStatus\x12\x34\n\x04mode\x18\x01 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x10\n\x08\x64\x65graded\x18\x02 \x01(\x08\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12)\n\x05since\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"(\n\x13\x41larmSnapshotStatus\x12\x11\n\ttruncated\x18\x01 \x01(\x08\"\xeb\x01\n\rMxStatusProxy\x12\x0f\n\x07success\x18\x01 \x01(\x05\x12\x37\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32%.mxaccess_gateway.v1.MxStatusCategory\x12\x38\n\x0b\x64\x65tected_by\x18\x03 \x01(\x0e\x32#.mxaccess_gateway.v1.MxStatusSource\x12\x0e\n\x06\x64\x65tail\x18\x04 \x01(\x05\x12\x14\n\x0craw_category\x18\x05 \x01(\x05\x12\x17\n\x0fraw_detected_by\x18\x06 \x01(\x05\x12\x17\n\x0f\x64iagnostic_text\x18\x07 \x01(\t\"\xe9\x03\n\x07MxValue\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x0f\n\x07is_null\x18\x03 \x01(\x08\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x15\n\rraw_data_type\x18\x05 \x01(\x05\x12\x14\n\nbool_value\x18\n \x01(\x08H\x00\x12\x15\n\x0bint32_value\x18\x0b \x01(\x05H\x00\x12\x15\n\x0bint64_value\x18\x0c \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\r \x01(\x02H\x00\x12\x16\n\x0c\x64ouble_value\x18\x0e \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x0f \x01(\tH\x00\x12\x35\n\x0ftimestamp_value\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12\x33\n\x0b\x61rray_value\x18\x11 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArrayH\x00\x12\x13\n\traw_value\x18\x12 \x01(\x0cH\x00\x12@\n\x12sparse_array_value\x18\x13 \x01(\x0b\x32\".mxaccess_gateway.v1.MxSparseArrayH\x00\x42\x06\n\x04kind\"\xfe\x04\n\x07MxArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x12\n\ndimensions\x18\x03 \x03(\r\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x1d\n\x15raw_element_data_type\x18\x05 \x01(\x05\x12\x35\n\x0b\x62ool_values\x18\n \x01(\x0b\x32\x1e.mxaccess_gateway.v1.BoolArrayH\x00\x12\x37\n\x0cint32_values\x18\x0b \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int32ArrayH\x00\x12\x37\n\x0cint64_values\x18\x0c \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int64ArrayH\x00\x12\x37\n\x0c\x66loat_values\x18\r \x01(\x0b\x32\x1f.mxaccess_gateway.v1.FloatArrayH\x00\x12\x39\n\rdouble_values\x18\x0e \x01(\x0b\x32 .mxaccess_gateway.v1.DoubleArrayH\x00\x12\x39\n\rstring_values\x18\x0f \x01(\x0b\x32 .mxaccess_gateway.v1.StringArrayH\x00\x12?\n\x10timestamp_values\x18\x10 \x01(\x0b\x32#.mxaccess_gateway.v1.TimestampArrayH\x00\x12\x33\n\nraw_values\x18\x11 \x01(\x0b\x32\x1d.mxaccess_gateway.v1.RawArrayH\x00\x42\x08\n\x06values\"\x99\x01\n\rMxSparseArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0ctotal_length\x18\x02 \x01(\r\x12\x36\n\x08\x65lements\x18\x03 \x03(\x0b\x32$.mxaccess_gateway.v1.MxSparseElement\"M\n\x0fMxSparseElement\x12\r\n\x05index\x18\x01 \x01(\r\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\x1b\n\tBoolArray\x12\x0e\n\x06values\x18\x01 \x03(\x08\"\x1c\n\nInt32Array\x12\x0e\n\x06values\x18\x01 \x03(\x05\"\x1c\n\nInt64Array\x12\x0e\n\x06values\x18\x01 \x03(\x03\"\x1c\n\nFloatArray\x12\x0e\n\x06values\x18\x01 \x03(\x02\"\x1d\n\x0b\x44oubleArray\x12\x0e\n\x06values\x18\x01 \x03(\x01\"\x1d\n\x0bStringArray\x12\x0e\n\x06values\x18\x01 \x03(\t\"<\n\x0eTimestampArray\x12*\n\x06values\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1a\n\x08RawArray\x12\x0e\n\x06values\x18\x01 \x03(\x0c\"X\n\x0eProtocolStatus\x12\x35\n\x04\x63ode\x18\x01 \x01(\x0e\x32\'.mxaccess_gateway.v1.ProtocolStatusCode\x12\x0f\n\x07message\x18\x02 \x01(\t*\xcc\x0b\n\rMxCommandKind\x12\x1f\n\x1bMX_COMMAND_KIND_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_COMMAND_KIND_REGISTER\x10\x01\x12\x1e\n\x1aMX_COMMAND_KIND_UNREGISTER\x10\x02\x12\x1c\n\x18MX_COMMAND_KIND_ADD_ITEM\x10\x03\x12\x1d\n\x19MX_COMMAND_KIND_ADD_ITEM2\x10\x04\x12\x1f\n\x1bMX_COMMAND_KIND_REMOVE_ITEM\x10\x05\x12\x1a\n\x16MX_COMMAND_KIND_ADVISE\x10\x06\x12\x1d\n\x19MX_COMMAND_KIND_UN_ADVISE\x10\x07\x12&\n\"MX_COMMAND_KIND_ADVISE_SUPERVISORY\x10\x08\x12%\n!MX_COMMAND_KIND_ADD_BUFFERED_ITEM\x10\t\x12\x30\n,MX_COMMAND_KIND_SET_BUFFERED_UPDATE_INTERVAL\x10\n\x12\x1b\n\x17MX_COMMAND_KIND_SUSPEND\x10\x0b\x12\x1c\n\x18MX_COMMAND_KIND_ACTIVATE\x10\x0c\x12\x19\n\x15MX_COMMAND_KIND_WRITE\x10\r\x12\x1a\n\x16MX_COMMAND_KIND_WRITE2\x10\x0e\x12!\n\x1dMX_COMMAND_KIND_WRITE_SECURED\x10\x0f\x12\"\n\x1eMX_COMMAND_KIND_WRITE_SECURED2\x10\x10\x12%\n!MX_COMMAND_KIND_AUTHENTICATE_USER\x10\x11\x12(\n$MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID\x10\x12\x12!\n\x1dMX_COMMAND_KIND_ADD_ITEM_BULK\x10\x13\x12$\n MX_COMMAND_KIND_ADVISE_ITEM_BULK\x10\x14\x12$\n MX_COMMAND_KIND_REMOVE_ITEM_BULK\x10\x15\x12\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK\x10\x16\x12\"\n\x1eMX_COMMAND_KIND_SUBSCRIBE_BULK\x10\x17\x12$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\x10\x18\x12$\n MX_COMMAND_KIND_SUBSCRIBE_ALARMS\x10\x19\x12&\n\"MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\x10\x1a\x12%\n!MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\x10\x1b\x12\'\n#MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS\x10\x1c\x12-\n)MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME\x10\x1d\x12\x1e\n\x1aMX_COMMAND_KIND_WRITE_BULK\x10\x1e\x12\x1f\n\x1bMX_COMMAND_KIND_WRITE2_BULK\x10\x1f\x12&\n\"MX_COMMAND_KIND_WRITE_SECURED_BULK\x10 \x12\'\n#MX_COMMAND_KIND_WRITE_SECURED2_BULK\x10!\x12\x1d\n\x19MX_COMMAND_KIND_READ_BULK\x10\"\x12+\n\'MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST\x10#\x12\x18\n\x14MX_COMMAND_KIND_PING\x10\x64\x12%\n!MX_COMMAND_KIND_GET_SESSION_STATE\x10\x65\x12#\n\x1fMX_COMMAND_KIND_GET_WORKER_INFO\x10\x66\x12 \n\x1cMX_COMMAND_KIND_DRAIN_EVENTS\x10g\x12#\n\x1fMX_COMMAND_KIND_SHUTDOWN_WORKER\x10h*z\n\x11\x41larmProviderMode\x12#\n\x1f\x41LARM_PROVIDER_MODE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_PROVIDER_MODE_ALARMMGR\x10\x01\x12\x1e\n\x1a\x41LARM_PROVIDER_MODE_SUBTAG\x10\x02*\xad\x02\n\rMxEventFamily\x12\x1f\n\x1bMX_EVENT_FAMILY_UNSPECIFIED\x10\x00\x12\"\n\x1eMX_EVENT_FAMILY_ON_DATA_CHANGE\x10\x01\x12%\n!MX_EVENT_FAMILY_ON_WRITE_COMPLETE\x10\x02\x12&\n\"MX_EVENT_FAMILY_OPERATION_COMPLETE\x10\x03\x12+\n\'MX_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE\x10\x04\x12\'\n#MX_EVENT_FAMILY_ON_ALARM_TRANSITION\x10\x05\x12\x32\n.MX_EVENT_FAMILY_ON_ALARM_PROVIDER_MODE_CHANGED\x10\x06*\xca\x01\n\x13\x41larmTransitionKind\x12%\n!ALARM_TRANSITION_KIND_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_RAISE\x10\x01\x12%\n!ALARM_TRANSITION_KIND_ACKNOWLEDGE\x10\x02\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_CLEAR\x10\x03\x12#\n\x1f\x41LARM_TRANSITION_KIND_RETRIGGER\x10\x04*\xaa\x01\n\x13\x41larmConditionState\x12%\n!ALARM_CONDITION_STATE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_CONDITION_STATE_ACTIVE\x10\x01\x12&\n\"ALARM_CONDITION_STATE_ACTIVE_ACKED\x10\x02\x12\"\n\x1e\x41LARM_CONDITION_STATE_INACTIVE\x10\x03*\xa5\x03\n\x10MxStatusCategory\x12\"\n\x1eMX_STATUS_CATEGORY_UNSPECIFIED\x10\x00\x12\x1e\n\x1aMX_STATUS_CATEGORY_UNKNOWN\x10\x01\x12\x19\n\x15MX_STATUS_CATEGORY_OK\x10\x02\x12\x1e\n\x1aMX_STATUS_CATEGORY_PENDING\x10\x03\x12\x1e\n\x1aMX_STATUS_CATEGORY_WARNING\x10\x04\x12*\n&MX_STATUS_CATEGORY_COMMUNICATION_ERROR\x10\x05\x12*\n&MX_STATUS_CATEGORY_CONFIGURATION_ERROR\x10\x06\x12(\n$MX_STATUS_CATEGORY_OPERATIONAL_ERROR\x10\x07\x12%\n!MX_STATUS_CATEGORY_SECURITY_ERROR\x10\x08\x12%\n!MX_STATUS_CATEGORY_SOFTWARE_ERROR\x10\t\x12\"\n\x1eMX_STATUS_CATEGORY_OTHER_ERROR\x10\n*\xca\x02\n\x0eMxStatusSource\x12 \n\x1cMX_STATUS_SOURCE_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_STATUS_SOURCE_UNKNOWN\x10\x01\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_LMX\x10\x02\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_LMX\x10\x03\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_NMX\x10\x04\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_NMX\x10\x05\x12\x31\n-MX_STATUS_SOURCE_REQUESTING_AUTOMATION_OBJECT\x10\x06\x12\x31\n-MX_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJECT\x10\x07*\xdd\x04\n\nMxDataType\x12\x1c\n\x18MX_DATA_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14MX_DATA_TYPE_UNKNOWN\x10\x01\x12\x18\n\x14MX_DATA_TYPE_NO_DATA\x10\x02\x12\x18\n\x14MX_DATA_TYPE_BOOLEAN\x10\x03\x12\x18\n\x14MX_DATA_TYPE_INTEGER\x10\x04\x12\x16\n\x12MX_DATA_TYPE_FLOAT\x10\x05\x12\x17\n\x13MX_DATA_TYPE_DOUBLE\x10\x06\x12\x17\n\x13MX_DATA_TYPE_STRING\x10\x07\x12\x15\n\x11MX_DATA_TYPE_TIME\x10\x08\x12\x1d\n\x19MX_DATA_TYPE_ELAPSED_TIME\x10\t\x12\x1f\n\x1bMX_DATA_TYPE_REFERENCE_TYPE\x10\n\x12\x1c\n\x18MX_DATA_TYPE_STATUS_TYPE\x10\x0b\x12\x15\n\x11MX_DATA_TYPE_ENUM\x10\x0c\x12-\n)MX_DATA_TYPE_SECURITY_CLASSIFICATION_ENUM\x10\r\x12\"\n\x1eMX_DATA_TYPE_DATA_QUALITY_TYPE\x10\x0e\x12\x1f\n\x1bMX_DATA_TYPE_QUALIFIED_ENUM\x10\x0f\x12!\n\x1dMX_DATA_TYPE_QUALIFIED_STRUCT\x10\x10\x12)\n%MX_DATA_TYPE_INTERNATIONALIZED_STRING\x10\x11\x12\x1b\n\x17MX_DATA_TYPE_BIG_STRING\x10\x12\x12\x14\n\x10MX_DATA_TYPE_END\x10\x13*\xa3\x03\n\x12ProtocolStatusCode\x12$\n PROTOCOL_STATUS_CODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17PROTOCOL_STATUS_CODE_OK\x10\x01\x12(\n$PROTOCOL_STATUS_CODE_INVALID_REQUEST\x10\x02\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND\x10\x03\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_READY\x10\x04\x12+\n\'PROTOCOL_STATUS_CODE_WORKER_UNAVAILABLE\x10\x05\x12 \n\x1cPROTOCOL_STATUS_CODE_TIMEOUT\x10\x06\x12!\n\x1dPROTOCOL_STATUS_CODE_CANCELED\x10\x07\x12+\n\'PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION\x10\x08\x12)\n%PROTOCOL_STATUS_CODE_MXACCESS_FAILURE\x10\t*\xbf\x02\n\x0cSessionState\x12\x1d\n\x19SESSION_STATE_UNSPECIFIED\x10\x00\x12\x1a\n\x16SESSION_STATE_CREATING\x10\x01\x12!\n\x1dSESSION_STATE_STARTING_WORKER\x10\x02\x12\"\n\x1eSESSION_STATE_WAITING_FOR_PIPE\x10\x03\x12\x1d\n\x19SESSION_STATE_HANDSHAKING\x10\x04\x12%\n!SESSION_STATE_INITIALIZING_WORKER\x10\x05\x12\x17\n\x13SESSION_STATE_READY\x10\x06\x12\x19\n\x15SESSION_STATE_CLOSING\x10\x07\x12\x18\n\x14SESSION_STATE_CLOSED\x10\x08\x12\x19\n\x15SESSION_STATE_FAULTED\x10\t2\xc3\x05\n\x0fMxAccessGateway\x12]\n\x0bOpenSession\x12\'.mxaccess_gateway.v1.OpenSessionRequest\x1a%.mxaccess_gateway.v1.OpenSessionReply\x12`\n\x0c\x43loseSession\x12(.mxaccess_gateway.v1.CloseSessionRequest\x1a&.mxaccess_gateway.v1.CloseSessionReply\x12T\n\x06Invoke\x12%.mxaccess_gateway.v1.MxCommandRequest\x1a#.mxaccess_gateway.v1.MxCommandReply\x12X\n\x0cStreamEvents\x12(.mxaccess_gateway.v1.StreamEventsRequest\x1a\x1c.mxaccess_gateway.v1.MxEvent0\x01\x12l\n\x10\x41\x63knowledgeAlarm\x12,.mxaccess_gateway.v1.AcknowledgeAlarmRequest\x1a*.mxaccess_gateway.v1.AcknowledgeAlarmReply\x12\x61\n\x0cStreamAlarms\x12(.mxaccess_gateway.v1.StreamAlarmsRequest\x1a%.mxaccess_gateway.v1.AlarmFeedMessage0\x01\x12n\n\x11QueryActiveAlarms\x12-.mxaccess_gateway.v1.QueryActiveAlarmsRequest\x1a(.mxaccess_gateway.v1.ActiveAlarmSnapshot0\x01\x42&\xaa\x02#ZB.MOM.WW.MxGateway.Contracts.Protob\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -34,26 +34,26 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mxaccess_gateway_pb2', _glo
 if not _descriptor._USE_C_DESCRIPTORS:
   _globals['DESCRIPTOR']._loaded_options = None
   _globals['DESCRIPTOR']._serialized_options = b'\252\002#ZB.MOM.WW.MxGateway.Contracts.Proto'
-  _globals['_MXCOMMANDKIND']._serialized_start=17674
-  _globals['_MXCOMMANDKIND']._serialized_end=19113
-  _globals['_ALARMPROVIDERMODE']._serialized_start=19115
-  _globals['_ALARMPROVIDERMODE']._serialized_end=19237
-  _globals['_MXEVENTFAMILY']._serialized_start=19240
-  _globals['_MXEVENTFAMILY']._serialized_end=19541
-  _globals['_ALARMTRANSITIONKIND']._serialized_start=19544
-  _globals['_ALARMTRANSITIONKIND']._serialized_end=19746
-  _globals['_ALARMCONDITIONSTATE']._serialized_start=19749
-  _globals['_ALARMCONDITIONSTATE']._serialized_end=19919
-  _globals['_MXSTATUSCATEGORY']._serialized_start=19922
-  _globals['_MXSTATUSCATEGORY']._serialized_end=20343
-  _globals['_MXSTATUSSOURCE']._serialized_start=20346
-  _globals['_MXSTATUSSOURCE']._serialized_end=20676
-  _globals['_MXDATATYPE']._serialized_start=20679
-  _globals['_MXDATATYPE']._serialized_end=21284
-  _globals['_PROTOCOLSTATUSCODE']._serialized_start=21287
-  _globals['_PROTOCOLSTATUSCODE']._serialized_end=21706
-  _globals['_SESSIONSTATE']._serialized_start=21709
-  _globals['_SESSIONSTATE']._serialized_end=22028
+  _globals['_MXCOMMANDKIND']._serialized_start=17876
+  _globals['_MXCOMMANDKIND']._serialized_end=19360
+  _globals['_ALARMPROVIDERMODE']._serialized_start=19362
+  _globals['_ALARMPROVIDERMODE']._serialized_end=19484
+  _globals['_MXEVENTFAMILY']._serialized_start=19487
+  _globals['_MXEVENTFAMILY']._serialized_end=19788
+  _globals['_ALARMTRANSITIONKIND']._serialized_start=19791
+  _globals['_ALARMTRANSITIONKIND']._serialized_end=19993
+  _globals['_ALARMCONDITIONSTATE']._serialized_start=19996
+  _globals['_ALARMCONDITIONSTATE']._serialized_end=20166
+  _globals['_MXSTATUSCATEGORY']._serialized_start=20169
+  _globals['_MXSTATUSCATEGORY']._serialized_end=20590
+  _globals['_MXSTATUSSOURCE']._serialized_start=20593
+  _globals['_MXSTATUSSOURCE']._serialized_end=20923
+  _globals['_MXDATATYPE']._serialized_start=20926
+  _globals['_MXDATATYPE']._serialized_end=21531
+  _globals['_PROTOCOLSTATUSCODE']._serialized_start=21534
+  _globals['_PROTOCOLSTATUSCODE']._serialized_end=21953
+  _globals['_SESSIONSTATE']._serialized_start=21956
+  _globals['_SESSIONSTATE']._serialized_end=22275
   _globals['_QUERYACTIVEALARMSREQUEST']._serialized_start=112
   _globals['_QUERYACTIVEALARMSREQUEST']._serialized_end=218
   _globals['_OPENSESSIONREQUEST']._serialized_start=221
@@ -69,195 +69,197 @@ if not _descriptor._USE_C_DESCRIPTORS:
   _globals['_MXCOMMANDREQUEST']._serialized_start=991
   _globals['_MXCOMMANDREQUEST']._serialized_end=1109
   _globals['_MXCOMMAND']._serialized_start=1112
-  _globals['_MXCOMMAND']._serialized_end=3864
-  _globals['_REGISTERCOMMAND']._serialized_start=3866
-  _globals['_REGISTERCOMMAND']._serialized_end=3904
-  _globals['_UNREGISTERCOMMAND']._serialized_start=3906
-  _globals['_UNREGISTERCOMMAND']._serialized_end=3948
-  _globals['_ADDITEMCOMMAND']._serialized_start=3950
-  _globals['_ADDITEMCOMMAND']._serialized_end=4014
-  _globals['_ADDITEM2COMMAND']._serialized_start=4016
-  _globals['_ADDITEM2COMMAND']._serialized_end=4103
-  _globals['_REMOVEITEMCOMMAND']._serialized_start=4105
-  _globals['_REMOVEITEMCOMMAND']._serialized_end=4168
-  _globals['_ADVISECOMMAND']._serialized_start=4170
-  _globals['_ADVISECOMMAND']._serialized_end=4229
-  _globals['_UNADVISECOMMAND']._serialized_start=4231
-  _globals['_UNADVISECOMMAND']._serialized_end=4292
-  _globals['_ADVISESUPERVISORYCOMMAND']._serialized_start=4294
-  _globals['_ADVISESUPERVISORYCOMMAND']._serialized_end=4364
-  _globals['_ADDBUFFEREDITEMCOMMAND']._serialized_start=4366
-  _globals['_ADDBUFFEREDITEMCOMMAND']._serialized_end=4460
-  _globals['_SETBUFFEREDUPDATEINTERVALCOMMAND']._serialized_start=4462
-  _globals['_SETBUFFEREDUPDATEINTERVALCOMMAND']._serialized_end=4557
-  _globals['_SUSPENDCOMMAND']._serialized_start=4559
-  _globals['_SUSPENDCOMMAND']._serialized_end=4619
-  _globals['_ACTIVATECOMMAND']._serialized_start=4621
-  _globals['_ACTIVATECOMMAND']._serialized_end=4682
-  _globals['_WRITECOMMAND']._serialized_start=4684
-  _globals['_WRITECOMMAND']._serialized_end=4804
-  _globals['_WRITE2COMMAND']._serialized_start=4807
-  _globals['_WRITE2COMMAND']._serialized_end=4983
-  _globals['_WRITESECUREDCOMMAND']._serialized_start=4986
-  _globals['_WRITESECUREDCOMMAND']._serialized_end=5147
-  _globals['_WRITESECURED2COMMAND']._serialized_start=5150
-  _globals['_WRITESECURED2COMMAND']._serialized_end=5367
-  _globals['_AUTHENTICATEUSERCOMMAND']._serialized_start=5369
-  _globals['_AUTHENTICATEUSERCOMMAND']._serialized_end=5468
-  _globals['_ARCHESTRAUSERTOIDCOMMAND']._serialized_start=5470
-  _globals['_ARCHESTRAUSERTOIDCOMMAND']._serialized_end=5541
-  _globals['_ADDITEMBULKCOMMAND']._serialized_start=5543
-  _globals['_ADDITEMBULKCOMMAND']._serialized_end=5609
-  _globals['_ADVISEITEMBULKCOMMAND']._serialized_start=5611
-  _globals['_ADVISEITEMBULKCOMMAND']._serialized_end=5679
-  _globals['_REMOVEITEMBULKCOMMAND']._serialized_start=5681
-  _globals['_REMOVEITEMBULKCOMMAND']._serialized_end=5749
-  _globals['_UNADVISEITEMBULKCOMMAND']._serialized_start=5751
-  _globals['_UNADVISEITEMBULKCOMMAND']._serialized_end=5821
-  _globals['_SUBSCRIBEBULKCOMMAND']._serialized_start=5823
-  _globals['_SUBSCRIBEBULKCOMMAND']._serialized_end=5891
-  _globals['_SUBSCRIBEALARMSCOMMAND']._serialized_start=5894
-  _globals['_SUBSCRIBEALARMSCOMMAND']._serialized_end=6132
-  _globals['_UNSUBSCRIBEALARMSCOMMAND']._serialized_start=6134
-  _globals['_UNSUBSCRIBEALARMSCOMMAND']._serialized_end=6160
-  _globals['_ALARMSUBTAGTARGET']._serialized_start=6163
-  _globals['_ALARMSUBTAGTARGET']._serialized_end=6343
-  _globals['_ALARMFAILOVERCONFIG']._serialized_start=6346
-  _globals['_ALARMFAILOVERCONFIG']._serialized_end=6479
-  _globals['_ACKNOWLEDGEALARMCOMMAND']._serialized_start=6482
-  _globals['_ACKNOWLEDGEALARMCOMMAND']._serialized_end=6643
-  _globals['_QUERYACTIVEALARMSCOMMAND']._serialized_start=6645
-  _globals['_QUERYACTIVEALARMSCOMMAND']._serialized_end=6700
-  _globals['_ACKNOWLEDGEALARMBYNAMECOMMAND']._serialized_start=6703
-  _globals['_ACKNOWLEDGEALARMBYNAMECOMMAND']._serialized_end=6913
-  _globals['_UNSUBSCRIBEBULKCOMMAND']._serialized_start=6915
-  _globals['_UNSUBSCRIBEBULKCOMMAND']._serialized_end=6984
-  _globals['_WRITEBULKCOMMAND']._serialized_start=6986
-  _globals['_WRITEBULKCOMMAND']._serialized_end=7081
-  _globals['_WRITEBULKENTRY']._serialized_start=7083
-  _globals['_WRITEBULKENTRY']._serialized_end=7182
-  _globals['_WRITE2BULKCOMMAND']._serialized_start=7184
-  _globals['_WRITE2BULKCOMMAND']._serialized_end=7281
-  _globals['_WRITE2BULKENTRY']._serialized_start=7284
-  _globals['_WRITE2BULKENTRY']._serialized_end=7439
-  _globals['_WRITESECUREDBULKCOMMAND']._serialized_start=7441
-  _globals['_WRITESECUREDBULKCOMMAND']._serialized_end=7550
-  _globals['_WRITESECUREDBULKENTRY']._serialized_start=7553
-  _globals['_WRITESECUREDBULKENTRY']._serialized_end=7693
-  _globals['_WRITESECURED2BULKCOMMAND']._serialized_start=7695
-  _globals['_WRITESECURED2BULKCOMMAND']._serialized_end=7806
-  _globals['_WRITESECURED2BULKENTRY']._serialized_start=7809
-  _globals['_WRITESECURED2BULKENTRY']._serialized_end=8005
-  _globals['_READBULKCOMMAND']._serialized_start=8007
-  _globals['_READBULKCOMMAND']._serialized_end=8090
-  _globals['_PINGCOMMAND']._serialized_start=8092
-  _globals['_PINGCOMMAND']._serialized_end=8122
-  _globals['_GETSESSIONSTATECOMMAND']._serialized_start=8124
-  _globals['_GETSESSIONSTATECOMMAND']._serialized_end=8148
-  _globals['_GETWORKERINFOCOMMAND']._serialized_start=8150
-  _globals['_GETWORKERINFOCOMMAND']._serialized_end=8172
-  _globals['_DRAINEVENTSCOMMAND']._serialized_start=8174
-  _globals['_DRAINEVENTSCOMMAND']._serialized_end=8214
-  _globals['_SHUTDOWNWORKERCOMMAND']._serialized_start=8216
-  _globals['_SHUTDOWNWORKERCOMMAND']._serialized_end=8288
-  _globals['_MXCOMMANDREPLY']._serialized_start=8291
-  _globals['_MXCOMMANDREPLY']._serialized_end=10217
-  _globals['_REGISTERREPLY']._serialized_start=10219
-  _globals['_REGISTERREPLY']._serialized_end=10257
-  _globals['_ADDITEMREPLY']._serialized_start=10259
-  _globals['_ADDITEMREPLY']._serialized_end=10294
-  _globals['_ADDITEM2REPLY']._serialized_start=10296
-  _globals['_ADDITEM2REPLY']._serialized_end=10332
-  _globals['_ADDBUFFEREDITEMREPLY']._serialized_start=10334
-  _globals['_ADDBUFFEREDITEMREPLY']._serialized_end=10377
-  _globals['_SUSPENDREPLY']._serialized_start=10379
-  _globals['_SUSPENDREPLY']._serialized_end=10445
-  _globals['_ACTIVATEREPLY']._serialized_start=10447
-  _globals['_ACTIVATEREPLY']._serialized_end=10514
-  _globals['_AUTHENTICATEUSERREPLY']._serialized_start=10516
-  _globals['_AUTHENTICATEUSERREPLY']._serialized_end=10556
-  _globals['_ARCHESTRAUSERTOIDREPLY']._serialized_start=10558
-  _globals['_ARCHESTRAUSERTOIDREPLY']._serialized_end=10599
-  _globals['_SUBSCRIBERESULT']._serialized_start=10602
-  _globals['_SUBSCRIBERESULT']._serialized_end=10731
-  _globals['_BULKSUBSCRIBEREPLY']._serialized_start=10733
-  _globals['_BULKSUBSCRIBEREPLY']._serialized_end=10808
-  _globals['_BULKWRITERESULT']._serialized_start=10811
-  _globals['_BULKWRITERESULT']._serialized_end=11007
-  _globals['_BULKWRITEREPLY']._serialized_start=11009
-  _globals['_BULKWRITEREPLY']._serialized_end=11080
-  _globals['_BULKREADRESULT']._serialized_start=11083
-  _globals['_BULKREADRESULT']._serialized_end=11401
-  _globals['_BULKREADREPLY']._serialized_start=11403
-  _globals['_BULKREADREPLY']._serialized_end=11472
-  _globals['_SESSIONSTATEREPLY']._serialized_start=11474
-  _globals['_SESSIONSTATEREPLY']._serialized_end=11543
-  _globals['_WORKERINFOREPLY']._serialized_start=11545
-  _globals['_WORKERINFOREPLY']._serialized_end=11662
-  _globals['_DRAINEVENTSREPLY']._serialized_start=11664
-  _globals['_DRAINEVENTSREPLY']._serialized_end=11728
-  _globals['_ACKNOWLEDGEALARMREPLYPAYLOAD']._serialized_start=11730
-  _globals['_ACKNOWLEDGEALARMREPLYPAYLOAD']._serialized_end=11783
-  _globals['_QUERYACTIVEALARMSREPLYPAYLOAD']._serialized_start=11785
-  _globals['_QUERYACTIVEALARMSREPLYPAYLOAD']._serialized_end=11905
-  _globals['_MXEVENT']._serialized_start=11908
-  _globals['_MXEVENT']._serialized_end=12947
-  _globals['_REPLAYGAP']._serialized_start=12949
-  _globals['_REPLAYGAP']._serialized_end=13029
-  _globals['_ONDATACHANGEEVENT']._serialized_start=13031
-  _globals['_ONDATACHANGEEVENT']._serialized_end=13050
-  _globals['_ONWRITECOMPLETEEVENT']._serialized_start=13052
-  _globals['_ONWRITECOMPLETEEVENT']._serialized_end=13074
-  _globals['_OPERATIONCOMPLETEEVENT']._serialized_start=13076
-  _globals['_OPERATIONCOMPLETEEVENT']._serialized_end=13100
-  _globals['_ONBUFFEREDDATACHANGEEVENT']._serialized_start=13103
-  _globals['_ONBUFFEREDDATACHANGEEVENT']._serialized_end=13315
-  _globals['_ONALARMTRANSITIONEVENT']._serialized_start=13318
-  _globals['_ONALARMTRANSITIONEVENT']._serialized_end=13910
-  _globals['_ONALARMPROVIDERMODECHANGEDEVENT']._serialized_start=13913
-  _globals['_ONALARMPROVIDERMODECHANGEDEVENT']._serialized_end=14073
-  _globals['_ACTIVEALARMSNAPSHOT']._serialized_start=14076
-  _globals['_ACTIVEALARMSNAPSHOT']._serialized_end=14701
-  _globals['_ACKNOWLEDGEALARMREQUEST']._serialized_start=14704
-  _globals['_ACKNOWLEDGEALARMREQUEST']._serialized_end=14848
-  _globals['_ACKNOWLEDGEALARMREPLY']._serialized_start=14851
-  _globals['_ACKNOWLEDGEALARMREPLY']._serialized_end=15092
-  _globals['_STREAMALARMSREQUEST']._serialized_start=15094
-  _globals['_STREAMALARMSREQUEST']._serialized_end=15175
-  _globals['_ALARMFEEDMESSAGE']._serialized_start=15178
-  _globals['_ALARMFEEDMESSAGE']._serialized_end=15507
-  _globals['_ALARMPROVIDERSTATUS']._serialized_start=15510
-  _globals['_ALARMPROVIDERSTATUS']._serialized_end=15662
-  _globals['_ALARMSNAPSHOTSTATUS']._serialized_start=15664
-  _globals['_ALARMSNAPSHOTSTATUS']._serialized_end=15704
-  _globals['_MXSTATUSPROXY']._serialized_start=15707
-  _globals['_MXSTATUSPROXY']._serialized_end=15942
-  _globals['_MXVALUE']._serialized_start=15945
-  _globals['_MXVALUE']._serialized_end=16434
-  _globals['_MXARRAY']._serialized_start=16437
-  _globals['_MXARRAY']._serialized_end=17075
-  _globals['_MXSPARSEARRAY']._serialized_start=17078
-  _globals['_MXSPARSEARRAY']._serialized_end=17231
-  _globals['_MXSPARSEELEMENT']._serialized_start=17233
-  _globals['_MXSPARSEELEMENT']._serialized_end=17310
-  _globals['_BOOLARRAY']._serialized_start=17312
-  _globals['_BOOLARRAY']._serialized_end=17339
-  _globals['_INT32ARRAY']._serialized_start=17341
-  _globals['_INT32ARRAY']._serialized_end=17369
-  _globals['_INT64ARRAY']._serialized_start=17371
-  _globals['_INT64ARRAY']._serialized_end=17399
-  _globals['_FLOATARRAY']._serialized_start=17401
-  _globals['_FLOATARRAY']._serialized_end=17429
-  _globals['_DOUBLEARRAY']._serialized_start=17431
-  _globals['_DOUBLEARRAY']._serialized_end=17460
-  _globals['_STRINGARRAY']._serialized_start=17462
-  _globals['_STRINGARRAY']._serialized_end=17491
-  _globals['_TIMESTAMPARRAY']._serialized_start=17493
-  _globals['_TIMESTAMPARRAY']._serialized_end=17553
-  _globals['_RAWARRAY']._serialized_start=17555
-  _globals['_RAWARRAY']._serialized_end=17581
-  _globals['_PROTOCOLSTATUS']._serialized_start=17583
-  _globals['_PROTOCOLSTATUS']._serialized_end=17671
-  _globals['_MXACCESSGATEWAY']._serialized_start=22031
-  _globals['_MXACCESSGATEWAY']._serialized_end=22738
+  _globals['_MXCOMMAND']._serialized_end=3949
+  _globals['_REGISTERCOMMAND']._serialized_start=3951
+  _globals['_REGISTERCOMMAND']._serialized_end=3989
+  _globals['_UNREGISTERCOMMAND']._serialized_start=3991
+  _globals['_UNREGISTERCOMMAND']._serialized_end=4033
+  _globals['_ADDITEMCOMMAND']._serialized_start=4035
+  _globals['_ADDITEMCOMMAND']._serialized_end=4099
+  _globals['_ADDITEM2COMMAND']._serialized_start=4101
+  _globals['_ADDITEM2COMMAND']._serialized_end=4188
+  _globals['_REMOVEITEMCOMMAND']._serialized_start=4190
+  _globals['_REMOVEITEMCOMMAND']._serialized_end=4253
+  _globals['_ADVISECOMMAND']._serialized_start=4255
+  _globals['_ADVISECOMMAND']._serialized_end=4314
+  _globals['_UNADVISECOMMAND']._serialized_start=4316
+  _globals['_UNADVISECOMMAND']._serialized_end=4377
+  _globals['_ADVISESUPERVISORYCOMMAND']._serialized_start=4379
+  _globals['_ADVISESUPERVISORYCOMMAND']._serialized_end=4449
+  _globals['_ADDBUFFEREDITEMCOMMAND']._serialized_start=4451
+  _globals['_ADDBUFFEREDITEMCOMMAND']._serialized_end=4545
+  _globals['_SETBUFFEREDUPDATEINTERVALCOMMAND']._serialized_start=4547
+  _globals['_SETBUFFEREDUPDATEINTERVALCOMMAND']._serialized_end=4642
+  _globals['_SUSPENDCOMMAND']._serialized_start=4644
+  _globals['_SUSPENDCOMMAND']._serialized_end=4704
+  _globals['_ACTIVATECOMMAND']._serialized_start=4706
+  _globals['_ACTIVATECOMMAND']._serialized_end=4767
+  _globals['_WRITECOMMAND']._serialized_start=4769
+  _globals['_WRITECOMMAND']._serialized_end=4889
+  _globals['_WRITE2COMMAND']._serialized_start=4892
+  _globals['_WRITE2COMMAND']._serialized_end=5068
+  _globals['_WRITESECUREDCOMMAND']._serialized_start=5071
+  _globals['_WRITESECUREDCOMMAND']._serialized_end=5232
+  _globals['_WRITESECURED2COMMAND']._serialized_start=5235
+  _globals['_WRITESECURED2COMMAND']._serialized_end=5452
+  _globals['_AUTHENTICATEUSERCOMMAND']._serialized_start=5454
+  _globals['_AUTHENTICATEUSERCOMMAND']._serialized_end=5553
+  _globals['_ARCHESTRAUSERTOIDCOMMAND']._serialized_start=5555
+  _globals['_ARCHESTRAUSERTOIDCOMMAND']._serialized_end=5626
+  _globals['_ADDITEMBULKCOMMAND']._serialized_start=5628
+  _globals['_ADDITEMBULKCOMMAND']._serialized_end=5694
+  _globals['_ADVISEITEMBULKCOMMAND']._serialized_start=5696
+  _globals['_ADVISEITEMBULKCOMMAND']._serialized_end=5764
+  _globals['_REMOVEITEMBULKCOMMAND']._serialized_start=5766
+  _globals['_REMOVEITEMBULKCOMMAND']._serialized_end=5834
+  _globals['_UNADVISEITEMBULKCOMMAND']._serialized_start=5836
+  _globals['_UNADVISEITEMBULKCOMMAND']._serialized_end=5906
+  _globals['_SUBSCRIBEBULKCOMMAND']._serialized_start=5908
+  _globals['_SUBSCRIBEBULKCOMMAND']._serialized_end=5976
+  _globals['_SUBSCRIBEALARMSCOMMAND']._serialized_start=5979
+  _globals['_SUBSCRIBEALARMSCOMMAND']._serialized_end=6243
+  _globals['_UPDATEALARMWATCHLISTCOMMAND']._serialized_start=6245
+  _globals['_UPDATEALARMWATCHLISTCOMMAND']._serialized_end=6334
+  _globals['_UNSUBSCRIBEALARMSCOMMAND']._serialized_start=6336
+  _globals['_UNSUBSCRIBEALARMSCOMMAND']._serialized_end=6362
+  _globals['_ALARMSUBTAGTARGET']._serialized_start=6365
+  _globals['_ALARMSUBTAGTARGET']._serialized_end=6545
+  _globals['_ALARMFAILOVERCONFIG']._serialized_start=6548
+  _globals['_ALARMFAILOVERCONFIG']._serialized_end=6681
+  _globals['_ACKNOWLEDGEALARMCOMMAND']._serialized_start=6684
+  _globals['_ACKNOWLEDGEALARMCOMMAND']._serialized_end=6845
+  _globals['_QUERYACTIVEALARMSCOMMAND']._serialized_start=6847
+  _globals['_QUERYACTIVEALARMSCOMMAND']._serialized_end=6902
+  _globals['_ACKNOWLEDGEALARMBYNAMECOMMAND']._serialized_start=6905
+  _globals['_ACKNOWLEDGEALARMBYNAMECOMMAND']._serialized_end=7115
+  _globals['_UNSUBSCRIBEBULKCOMMAND']._serialized_start=7117
+  _globals['_UNSUBSCRIBEBULKCOMMAND']._serialized_end=7186
+  _globals['_WRITEBULKCOMMAND']._serialized_start=7188
+  _globals['_WRITEBULKCOMMAND']._serialized_end=7283
+  _globals['_WRITEBULKENTRY']._serialized_start=7285
+  _globals['_WRITEBULKENTRY']._serialized_end=7384
+  _globals['_WRITE2BULKCOMMAND']._serialized_start=7386
+  _globals['_WRITE2BULKCOMMAND']._serialized_end=7483
+  _globals['_WRITE2BULKENTRY']._serialized_start=7486
+  _globals['_WRITE2BULKENTRY']._serialized_end=7641
+  _globals['_WRITESECUREDBULKCOMMAND']._serialized_start=7643
+  _globals['_WRITESECUREDBULKCOMMAND']._serialized_end=7752
+  _globals['_WRITESECUREDBULKENTRY']._serialized_start=7755
+  _globals['_WRITESECUREDBULKENTRY']._serialized_end=7895
+  _globals['_WRITESECURED2BULKCOMMAND']._serialized_start=7897
+  _globals['_WRITESECURED2BULKCOMMAND']._serialized_end=8008
+  _globals['_WRITESECURED2BULKENTRY']._serialized_start=8011
+  _globals['_WRITESECURED2BULKENTRY']._serialized_end=8207
+  _globals['_READBULKCOMMAND']._serialized_start=8209
+  _globals['_READBULKCOMMAND']._serialized_end=8292
+  _globals['_PINGCOMMAND']._serialized_start=8294
+  _globals['_PINGCOMMAND']._serialized_end=8324
+  _globals['_GETSESSIONSTATECOMMAND']._serialized_start=8326
+  _globals['_GETSESSIONSTATECOMMAND']._serialized_end=8350
+  _globals['_GETWORKERINFOCOMMAND']._serialized_start=8352
+  _globals['_GETWORKERINFOCOMMAND']._serialized_end=8374
+  _globals['_DRAINEVENTSCOMMAND']._serialized_start=8376
+  _globals['_DRAINEVENTSCOMMAND']._serialized_end=8416
+  _globals['_SHUTDOWNWORKERCOMMAND']._serialized_start=8418
+  _globals['_SHUTDOWNWORKERCOMMAND']._serialized_end=8490
+  _globals['_MXCOMMANDREPLY']._serialized_start=8493
+  _globals['_MXCOMMANDREPLY']._serialized_end=10419
+  _globals['_REGISTERREPLY']._serialized_start=10421
+  _globals['_REGISTERREPLY']._serialized_end=10459
+  _globals['_ADDITEMREPLY']._serialized_start=10461
+  _globals['_ADDITEMREPLY']._serialized_end=10496
+  _globals['_ADDITEM2REPLY']._serialized_start=10498
+  _globals['_ADDITEM2REPLY']._serialized_end=10534
+  _globals['_ADDBUFFEREDITEMREPLY']._serialized_start=10536
+  _globals['_ADDBUFFEREDITEMREPLY']._serialized_end=10579
+  _globals['_SUSPENDREPLY']._serialized_start=10581
+  _globals['_SUSPENDREPLY']._serialized_end=10647
+  _globals['_ACTIVATEREPLY']._serialized_start=10649
+  _globals['_ACTIVATEREPLY']._serialized_end=10716
+  _globals['_AUTHENTICATEUSERREPLY']._serialized_start=10718
+  _globals['_AUTHENTICATEUSERREPLY']._serialized_end=10758
+  _globals['_ARCHESTRAUSERTOIDREPLY']._serialized_start=10760
+  _globals['_ARCHESTRAUSERTOIDREPLY']._serialized_end=10801
+  _globals['_SUBSCRIBERESULT']._serialized_start=10804
+  _globals['_SUBSCRIBERESULT']._serialized_end=10933
+  _globals['_BULKSUBSCRIBEREPLY']._serialized_start=10935
+  _globals['_BULKSUBSCRIBEREPLY']._serialized_end=11010
+  _globals['_BULKWRITERESULT']._serialized_start=11013
+  _globals['_BULKWRITERESULT']._serialized_end=11209
+  _globals['_BULKWRITEREPLY']._serialized_start=11211
+  _globals['_BULKWRITEREPLY']._serialized_end=11282
+  _globals['_BULKREADRESULT']._serialized_start=11285
+  _globals['_BULKREADRESULT']._serialized_end=11603
+  _globals['_BULKREADREPLY']._serialized_start=11605
+  _globals['_BULKREADREPLY']._serialized_end=11674
+  _globals['_SESSIONSTATEREPLY']._serialized_start=11676
+  _globals['_SESSIONSTATEREPLY']._serialized_end=11745
+  _globals['_WORKERINFOREPLY']._serialized_start=11747
+  _globals['_WORKERINFOREPLY']._serialized_end=11864
+  _globals['_DRAINEVENTSREPLY']._serialized_start=11866
+  _globals['_DRAINEVENTSREPLY']._serialized_end=11930
+  _globals['_ACKNOWLEDGEALARMREPLYPAYLOAD']._serialized_start=11932
+  _globals['_ACKNOWLEDGEALARMREPLYPAYLOAD']._serialized_end=11985
+  _globals['_QUERYACTIVEALARMSREPLYPAYLOAD']._serialized_start=11987
+  _globals['_QUERYACTIVEALARMSREPLYPAYLOAD']._serialized_end=12107
+  _globals['_MXEVENT']._serialized_start=12110
+  _globals['_MXEVENT']._serialized_end=13149
+  _globals['_REPLAYGAP']._serialized_start=13151
+  _globals['_REPLAYGAP']._serialized_end=13231
+  _globals['_ONDATACHANGEEVENT']._serialized_start=13233
+  _globals['_ONDATACHANGEEVENT']._serialized_end=13252
+  _globals['_ONWRITECOMPLETEEVENT']._serialized_start=13254
+  _globals['_ONWRITECOMPLETEEVENT']._serialized_end=13276
+  _globals['_OPERATIONCOMPLETEEVENT']._serialized_start=13278
+  _globals['_OPERATIONCOMPLETEEVENT']._serialized_end=13302
+  _globals['_ONBUFFEREDDATACHANGEEVENT']._serialized_start=13305
+  _globals['_ONBUFFEREDDATACHANGEEVENT']._serialized_end=13517
+  _globals['_ONALARMTRANSITIONEVENT']._serialized_start=13520
+  _globals['_ONALARMTRANSITIONEVENT']._serialized_end=14112
+  _globals['_ONALARMPROVIDERMODECHANGEDEVENT']._serialized_start=14115
+  _globals['_ONALARMPROVIDERMODECHANGEDEVENT']._serialized_end=14275
+  _globals['_ACTIVEALARMSNAPSHOT']._serialized_start=14278
+  _globals['_ACTIVEALARMSNAPSHOT']._serialized_end=14903
+  _globals['_ACKNOWLEDGEALARMREQUEST']._serialized_start=14906
+  _globals['_ACKNOWLEDGEALARMREQUEST']._serialized_end=15050
+  _globals['_ACKNOWLEDGEALARMREPLY']._serialized_start=15053
+  _globals['_ACKNOWLEDGEALARMREPLY']._serialized_end=15294
+  _globals['_STREAMALARMSREQUEST']._serialized_start=15296
+  _globals['_STREAMALARMSREQUEST']._serialized_end=15377
+  _globals['_ALARMFEEDMESSAGE']._serialized_start=15380
+  _globals['_ALARMFEEDMESSAGE']._serialized_end=15709
+  _globals['_ALARMPROVIDERSTATUS']._serialized_start=15712
+  _globals['_ALARMPROVIDERSTATUS']._serialized_end=15864
+  _globals['_ALARMSNAPSHOTSTATUS']._serialized_start=15866
+  _globals['_ALARMSNAPSHOTSTATUS']._serialized_end=15906
+  _globals['_MXSTATUSPROXY']._serialized_start=15909
+  _globals['_MXSTATUSPROXY']._serialized_end=16144
+  _globals['_MXVALUE']._serialized_start=16147
+  _globals['_MXVALUE']._serialized_end=16636
+  _globals['_MXARRAY']._serialized_start=16639
+  _globals['_MXARRAY']._serialized_end=17277
+  _globals['_MXSPARSEARRAY']._serialized_start=17280
+  _globals['_MXSPARSEARRAY']._serialized_end=17433
+  _globals['_MXSPARSEELEMENT']._serialized_start=17435
+  _globals['_MXSPARSEELEMENT']._serialized_end=17512
+  _globals['_BOOLARRAY']._serialized_start=17514
+  _globals['_BOOLARRAY']._serialized_end=17541
+  _globals['_INT32ARRAY']._serialized_start=17543
+  _globals['_INT32ARRAY']._serialized_end=17571
+  _globals['_INT64ARRAY']._serialized_start=17573
+  _globals['_INT64ARRAY']._serialized_end=17601
+  _globals['_FLOATARRAY']._serialized_start=17603
+  _globals['_FLOATARRAY']._serialized_end=17631
+  _globals['_DOUBLEARRAY']._serialized_start=17633
+  _globals['_DOUBLEARRAY']._serialized_end=17662
+  _globals['_STRINGARRAY']._serialized_start=17664
+  _globals['_STRINGARRAY']._serialized_end=17693
+  _globals['_TIMESTAMPARRAY']._serialized_start=17695
+  _globals['_TIMESTAMPARRAY']._serialized_end=17755
+  _globals['_RAWARRAY']._serialized_start=17757
+  _globals['_RAWARRAY']._serialized_end=17783
+  _globals['_PROTOCOLSTATUS']._serialized_start=17785
+  _globals['_PROTOCOLSTATUS']._serialized_end=17873
+  _globals['_MXACCESSGATEWAY']._serialized_start=22278
+  _globals['_MXACCESSGATEWAY']._serialized_end=22985
 # @@protoc_insertion_point(module_scope)
diff --git a/clients/rust/protos/mxaccess_gateway.proto b/clients/rust/protos/mxaccess_gateway.proto
index daa3e8d..6b00da9 100644
--- a/clients/rust/protos/mxaccess_gateway.proto
+++ b/clients/rust/protos/mxaccess_gateway.proto
@@ -130,6 +130,7 @@ message MxCommand {
     WriteSecuredBulkCommand write_secured_bulk = 41;
     WriteSecured2BulkCommand write_secured2_bulk = 42;
     ReadBulkCommand read_bulk = 43;
+    UpdateAlarmWatchListCommand update_alarm_watch_list = 44;
     PingCommand ping = 100;
     GetSessionStateCommand get_session_state = 101;
     GetWorkerInfoCommand get_worker_info = 102;
@@ -174,6 +175,7 @@ enum MxCommandKind {
   MX_COMMAND_KIND_WRITE_SECURED_BULK = 32;
   MX_COMMAND_KIND_WRITE_SECURED2_BULK = 33;
   MX_COMMAND_KIND_READ_BULK = 34;
+  MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST = 35;
   MX_COMMAND_KIND_PING = 100;
   MX_COMMAND_KIND_GET_SESSION_STATE = 101;
   MX_COMMAND_KIND_GET_WORKER_INFO = 102;
@@ -344,8 +346,8 @@ enum AlarmProviderMode {
 // Subscription expression follows the canonical
 // `\\\Galaxy!` format (literal "Galaxy" provider). The
 // worker spins up a wnwrapConsumer-backed subscription on its STA on
-// first call; subsequent calls are an error (use UnsubscribeAlarms then
-// SubscribeAlarms to reconfigure).
+// first call; subsequent calls are an error. Use UpdateAlarmWatchList to
+// replace the standby targets without restarting the primary subscription.
 message SubscribeAlarmsCommand {
   string subscription_expression = 1;
   // UNSPECIFIED = auto-failover/failback. ALARMMGR/SUBTAG force one provider.
@@ -354,6 +356,17 @@ message SubscribeAlarmsCommand {
   // alarmmgr mode; in subtag mode it bounds what the consumer can observe.
   repeated AlarmSubtagTarget watch_list = 3;
   AlarmFailoverConfig failover = 4;
+  // True when auto mode should retain subtag-fallback capability even if the
+  // gateway's initial discovery produced an empty watch list. False leaves an
+  // empty list as an intentional alarm-manager-only subscription.
+  bool fallback_enabled = 5;
+}
+
+// Replace the live alarm subscription's subtag standby targets. The worker
+// constructs and attaches the replacement before swapping it into service, so
+// a setup failure leaves the existing standby and active provider unchanged.
+message UpdateAlarmWatchListCommand {
+  repeated AlarmSubtagTarget watch_list = 1;
 }
 
 // Tear down the worker's alarm consumer. No-op if no subscription is
@@ -537,11 +550,14 @@ message MxCommandReply {
   MxValue return_value = 6;
   // Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
   // WRITE_SECURED2 replies the worker holds the reply for a bounded window
-  // (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+  // (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
   // the matching MXAccess OnWriteComplete callback and copies its status rows
   // here, so statuses[0] carries the real MXAccess commit outcome (success OR
   // failure) while protocol_status/hresult still describe command acceptance
-  // only. Empty statuses on a write reply means the completion did not arrive
+  // only. Callback correlation is recency-based per item handle: after the
+  // bounded wait, a sequential write's callback supersedes a timed-out
+  // predecessor, and a later stale callback for that predecessor is ignored.
+  // Empty statuses on a write reply means the completion did not arrive
   // within the window — the write is unconfirmed, not failed. Correlation is
   // best-effort per (server_handle, item_handle): MXAccess's callback carries
   // no transaction id, so concurrent writes to the same item within the
diff --git a/docs/AlarmClientDiscovery.md b/docs/AlarmClientDiscovery.md
index 451c1d5..6caa43f 100644
--- a/docs/AlarmClientDiscovery.md
+++ b/docs/AlarmClientDiscovery.md
@@ -849,15 +849,20 @@ MXAccess item addresses for the `InAlarm`, `Acked`, `AckMsg`, and `Priority`
 subtags (confirmed AVEVA `AlarmExtension` field names, verified against the live
 ZB Galaxy `attribute_definition` rows).
 
-**The list is fixed for the life of the subscription.** The worker builds its
-subtag consumer from the targets `SubscribeAlarms` carried and keeps them until
-the subscription ends; a second `SubscribeAlarms` on a subscribed session is
-rejected, and the only way to replace the list — `UnsubscribeAlarms` then
-`SubscribeAlarms` — rebuilds `FailoverAlarmConsumer`, restarting it on the
-primary and discarding the warm standby state. Re-sending on a failover would
-therefore flap the feed rather than repair it. A monitor restart (a worker fault,
-or a gateway restart) re-resolves and re-sends, and that is the supported way to
-pick up Galaxy objects added since the monitor started.
+The gateway refreshes this list on the existing alarm reconciliation cadence
+and immediately before publishing a failover-to-subtag status. It compares a
+canonical fingerprint of all six target fields and sends
+`UpdateAlarmWatchListCommand` only for a material change. The worker constructs,
+subscribes, and attaches the replacement standby on its STA before swapping it
+in; a setup failure leaves the previous standby and the current primary/subtag
+mode unchanged. The gateway advances its acknowledged fingerprint only after an
+OK reply, so a rejected update remains degraded and is retried.
+
+`SubscribeAlarmsCommand.fallback_enabled` distinguishes an initially empty but
+discovery-enabled fallback from an intentionally alarm-manager-only
+subscription. In the former case the worker creates an empty standby that can be
+hot-swapped after discovery recovers. `ForceAlarmManager` leaves the field false
+and does not create a standby.
 
 Because the list is fixed, the resolution is **graded** rather than merely
 logged (GWC-37). `ResolveAsync` returns an `AlarmWatchListResolution` carrying
@@ -871,10 +876,10 @@ monitor folds the verdict into the alarm feed's `AlarmProviderStatus`:
   `AlarmProviderReasons.SubtagDiscoveryFailed` and the failure message, so a
   Galaxy Repository outage at startup is a standing status rather than one log
   line emitted possibly weeks before the failover that needs the list.
-- On the failover edge (`ApplyProviderModeChangeAsync` with `toMode == Subtag`)
-  the monitor re-resolves and compares against what it sent. A difference is
-  reported as `AlarmProviderReasons.SubtagWatchListStale` with both counts, on
-  the same status frame as the failover, because it cannot be applied.
+- If the worker rejects a material update, the monitor retains the previous
+  acknowledged fingerprint and reports
+  `AlarmProviderReasons.SubtagWatchListStale` with the rejection diagnostic.
+  The next reconciliation or failover edge retries the same resolved targets.
 
 `degraded` on the status is therefore the OR of "the subtag provider is the one
 serving" and "the subtag watch-list cannot cover anything". In `Auto` the second
diff --git a/docs/Contracts.md b/docs/Contracts.md
index e071e6a..dfa9093 100644
--- a/docs/Contracts.md
+++ b/docs/Contracts.md
@@ -40,6 +40,15 @@ the corresponding MXAccess `AddItem`, `Advise`, `UnAdvise`, and `RemoveItem`
 calls sequentially on the session STA and preserves input order in the result
 list.
 
+The shared alarm command model includes `SubscribeAlarms` and
+`UpdateAlarmWatchList`. `SubscribeAlarmsCommand.fallback_enabled` makes an empty
+initial watch list explicitly fallback-capable, allowing discovery recovery to
+populate a standby without restarting the primary alarm-manager subscription.
+`UpdateAlarmWatchListCommand.watch_list` is the complete replacement list. The
+worker prepares the replacement on its STA before swapping it into the existing
+failover consumer and returns a normal `MxCommandReply`; callers must treat only
+`protocol_status = OK` as acknowledgement of the new list.
+
 The command model also includes bulk write/read command kinds:
 `WriteBulk`, `Write2Bulk`, `WriteSecuredBulk`, `WriteSecured2Bulk`, and
 `ReadBulk`. They are unary `Invoke` payloads on the same `MxAccessGateway`
diff --git a/docs/GatewayConfiguration.md b/docs/GatewayConfiguration.md
index 0f8f0c4..b80266e 100644
--- a/docs/GatewayConfiguration.md
+++ b/docs/GatewayConfiguration.md
@@ -439,7 +439,7 @@ behavior.
 | `MxGateway:Alarms:Enabled` | `false` | Gates the gateway's always-on central alarm monitor. When `true`, the gateway opens one gateway-owned worker session dedicated to alarms, caches the active-alarm set, and fans it out to every client through the `StreamAlarms` RPC — no client opens its own session to see alarms. |
 | `MxGateway:Alarms:SubscriptionExpression` | _(empty)_ | AVEVA alarm-subscription expression the monitor subscribes on startup, in canonical `\\\Galaxy!` form. The literal `Galaxy` provider is correct regardless of the Galaxy database name. When empty and `Enabled` is `true`, the gateway falls back to `\\\Galaxy!` if `DefaultArea` is set. |
 | `MxGateway:Alarms:DefaultArea` | _(empty)_ | Area name used to compose a default subscription when `SubscriptionExpression` is empty. If both are empty while `Enabled` is `true`, the monitor faults with a configuration diagnostic. |
-| `MxGateway:Alarms:ReconcileIntervalSeconds` | `30` | How often the monitor reconciles its in-process alarm cache against the worker's authoritative active-alarm snapshot, catching transitions the live poll-and-diff feed missed. Floored at 5 seconds. |
+| `MxGateway:Alarms:ReconcileIntervalSeconds` | `30` | How often the monitor re-resolves and, on material change, hot-swaps the subtag fallback watch-list, then reconciles its in-process alarm cache against the worker's authoritative active-alarm snapshot. The acknowledged watch-list fingerprint advances only after an OK worker reply. Floored at 5 seconds. |
 | `MxGateway:Alarms:PollIntervalMilliseconds` | `500` | Cadence at which the worker's STA polls the AVEVA alarm consumer (`GetXmlCurrentAlarms2`) for the active-alarm snapshot the live feed diffs. Must be between `100` and `3600000` (one hour): every poll is a COM call plus an XML parse on the same STA that serves reads and writes, so a tighter cadence starves the command path, while a value above an hour stops being a cadence and silently disables alarm polling. The gateway conveys the value to the worker via the `MXGATEWAY_ALARM_POLL_INTERVAL_MS` environment variable; a missing or out-of-range value leaves the worker on the 500 ms default rather than failing the session. |
 | `MxGateway:Alarms:MaxAlarmsPerFetch` | `1024` | Cap the worker passes to `GetXmlCurrentAlarms2`'s `maxAlmCnt`. Must be between `64` and `65536` — the worker is a 32-bit process that materializes each reply as one BSTR plus a full `XmlDocument`, so an unbounded cap faults the STA with an out-of-memory rather than merely slowing it. It doubles as the **truncation threshold**: a fetch returning exactly this many records is treated as truncated, because the COM API caps its reply with no "more available" flag. On a truncated poll the worker retains the alarms the capped reply could not mention instead of letting their absence read as a clear, and logs a rate-limited `AlarmSnapshotTruncated` warning to its stderr (identifiers and counts only). **Remediation when you see that warning: raise this value** so the steady-state active-alarm count fits inside one fetch. A galaxy permanently above the cap holds stale entries in the snapshot until a sub-cap poll, and loses clear→re-raise cycles that happen entirely out of window (see `docs/DesignDecisions.md`). Conveyed to the worker via the `MXGATEWAY_ALARM_MAX_ALARMS_PER_FETCH` environment variable; a missing or out-of-range value leaves the worker on the 1024 default. |
 
diff --git a/docs/MxAccessWorkerInstanceDesign.md b/docs/MxAccessWorkerInstanceDesign.md
index 72cf562..5af663e 100644
--- a/docs/MxAccessWorkerInstanceDesign.md
+++ b/docs/MxAccessWorkerInstanceDesign.md
@@ -351,6 +351,18 @@ native client correlating by handle has the identical ambiguity). The exposure
 is bounded: `statuses` is an enrichment field, and `Hresult`/`ProtocolStatus`
 stay acceptance-only regardless of which completion (if any) was attributed.
 
+## Live alarm watch-list replacement
+
+An auto-mode `SubscribeAlarms` with `fallback_enabled = true` always builds a
+`FailoverAlarmConsumer`, even when initial discovery supplied no targets. The
+handler retains the subscription expression so `UpdateAlarmWatchList` can build
+and subscribe a new subtag consumer entirely on the session STA. The failover
+consumer attaches the replacement's transition callback before swapping the
+standby reference, then detaches and disposes the old standby. If construction,
+subscription, or attachment fails, it disposes the replacement and preserves
+the old standby. The active-provider selector is never reset, so primary mode
+stays primary and subtag mode immediately delegates to the new standby.
+
 ## COM Creation
 
 The MXAccess analysis source at `C:\Users\dohertj2\Desktop\mxaccess` identifies
diff --git a/src/ZB.MOM.WW.MxGateway.Contracts/Generated/MxaccessGateway.cs b/src/ZB.MOM.WW.MxGateway.Contracts/Generated/MxaccessGateway.cs
index b5d06b2..8075357 100644
--- a/src/ZB.MOM.WW.MxGateway.Contracts/Generated/MxaccessGateway.cs
+++ b/src/ZB.MOM.WW.MxGateway.Contracts/Generated/MxaccessGateway.cs
@@ -48,7 +48,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
             "c2lvbl9pZBgBIAEoCRIdChVhZnRlcl93b3JrZXJfc2VxdWVuY2UYAiABKAQi",
             "dgoQTXhDb21tYW5kUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEh0KFWNs",
             "aWVudF9jb3JyZWxhdGlvbl9pZBgCIAEoCRIvCgdjb21tYW5kGAMgASgLMh4u",
-            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmQiwBUKCU14Q29tbWFuZBIw",
+            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmQilRYKCU14Q29tbWFuZBIw",
             "CgRraW5kGAEgASgOMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmRL",
             "aW5kEjgKCHJlZ2lzdGVyGAogASgLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5S",
             "ZWdpc3RlckNvbW1hbmRIABI8Cgp1bnJlZ2lzdGVyGAsgASgLMiYubXhhY2Nl",
@@ -102,435 +102,440 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
             "bGtDb21tYW5kSAASTAoTd3JpdGVfc2VjdXJlZDJfYnVsaxgqIAEoCzItLm14",
             "YWNjZXNzX2dhdGV3YXkudjEuV3JpdGVTZWN1cmVkMkJ1bGtDb21tYW5kSAAS",
             "OQoJcmVhZF9idWxrGCsgASgLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5SZWFk",
-            "QnVsa0NvbW1hbmRIABIwCgRwaW5nGGQgASgLMiAubXhhY2Nlc3NfZ2F0ZXdh",
-            "eS52MS5QaW5nQ29tbWFuZEgAEkgKEWdldF9zZXNzaW9uX3N0YXRlGGUgASgL",
-            "MisubXhhY2Nlc3NfZ2F0ZXdheS52MS5HZXRTZXNzaW9uU3RhdGVDb21tYW5k",
-            "SAASRAoPZ2V0X3dvcmtlcl9pbmZvGGYgASgLMikubXhhY2Nlc3NfZ2F0ZXdh",
-            "eS52MS5HZXRXb3JrZXJJbmZvQ29tbWFuZEgAEj8KDGRyYWluX2V2ZW50cxhn",
-            "IAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuRHJhaW5FdmVudHNDb21tYW5k",
-            "SAASRQoPc2h1dGRvd25fd29ya2VyGGggASgLMioubXhhY2Nlc3NfZ2F0ZXdh",
-            "eS52MS5TaHV0ZG93bldvcmtlckNvbW1hbmRIAEIJCgdwYXlsb2FkIiYKD1Jl",
-            "Z2lzdGVyQ29tbWFuZBITCgtjbGllbnRfbmFtZRgBIAEoCSIqChFVbnJlZ2lz",
-            "dGVyQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFIkAKDkFkZEl0ZW1D",
-            "b21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFwoPaXRlbV9kZWZpbml0",
-            "aW9uGAIgASgJIlcKD0FkZEl0ZW0yQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxl",
-            "GAEgASgFEhcKD2l0ZW1fZGVmaW5pdGlvbhgCIAEoCRIUCgxpdGVtX2NvbnRl",
-            "eHQYAyABKAkiPwoRUmVtb3ZlSXRlbUNvbW1hbmQSFQoNc2VydmVyX2hhbmRs",
-            "ZRgBIAEoBRITCgtpdGVtX2hhbmRsZRgCIAEoBSI7Cg1BZHZpc2VDb21tYW5k",
-            "EhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUi",
-            "PQoPVW5BZHZpc2VDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoL",
-            "aXRlbV9oYW5kbGUYAiABKAUiRgoYQWR2aXNlU3VwZXJ2aXNvcnlDb21tYW5k",
-            "EhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUi",
-            "XgoWQWRkQnVmZmVyZWRJdGVtQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEg",
-            "ASgFEhcKD2l0ZW1fZGVmaW5pdGlvbhgCIAEoCRIUCgxpdGVtX2NvbnRleHQY",
-            "AyABKAkiXwogU2V0QnVmZmVyZWRVcGRhdGVJbnRlcnZhbENvbW1hbmQSFQoN",
-            "c2VydmVyX2hhbmRsZRgBIAEoBRIkChx1cGRhdGVfaW50ZXJ2YWxfbWlsbGlz",
-            "ZWNvbmRzGAIgASgFIjwKDlN1c3BlbmRDb21tYW5kEhUKDXNlcnZlcl9oYW5k",
-            "bGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUiPQoPQWN0aXZhdGVDb21t",
-            "YW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiAB",
-            "KAUieAoMV3JpdGVDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoL",
-            "aXRlbV9oYW5kbGUYAiABKAUSKwoFdmFsdWUYAyABKAsyHC5teGFjY2Vzc19n",
-            "YXRld2F5LnYxLk14VmFsdWUSDwoHdXNlcl9pZBgEIAEoBSKwAQoNV3JpdGUy",
+            "QnVsa0NvbW1hbmRIABJTChd1cGRhdGVfYWxhcm1fd2F0Y2hfbGlzdBgsIAEo",
+            "CzIwLm14YWNjZXNzX2dhdGV3YXkudjEuVXBkYXRlQWxhcm1XYXRjaExpc3RD",
+            "b21tYW5kSAASMAoEcGluZxhkIAEoCzIgLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "UGluZ0NvbW1hbmRIABJIChFnZXRfc2Vzc2lvbl9zdGF0ZRhlIAEoCzIrLm14",
+            "YWNjZXNzX2dhdGV3YXkudjEuR2V0U2Vzc2lvblN0YXRlQ29tbWFuZEgAEkQK",
+            "D2dldF93b3JrZXJfaW5mbxhmIAEoCzIpLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "R2V0V29ya2VySW5mb0NvbW1hbmRIABI/CgxkcmFpbl9ldmVudHMYZyABKAsy",
+            "Jy5teGFjY2Vzc19nYXRld2F5LnYxLkRyYWluRXZlbnRzQ29tbWFuZEgAEkUK",
+            "D3NodXRkb3duX3dvcmtlchhoIAEoCzIqLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "U2h1dGRvd25Xb3JrZXJDb21tYW5kSABCCQoHcGF5bG9hZCImCg9SZWdpc3Rl",
+            "ckNvbW1hbmQSEwoLY2xpZW50X25hbWUYASABKAkiKgoRVW5yZWdpc3RlckNv",
+            "bW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBSJACg5BZGRJdGVtQ29tbWFu",
+            "ZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhcKD2l0ZW1fZGVmaW5pdGlvbhgC",
+            "IAEoCSJXCg9BZGRJdGVtMkNvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEo",
+            "BRIXCg9pdGVtX2RlZmluaXRpb24YAiABKAkSFAoMaXRlbV9jb250ZXh0GAMg",
+            "ASgJIj8KEVJlbW92ZUl0ZW1Db21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASAB",
+            "KAUSEwoLaXRlbV9oYW5kbGUYAiABKAUiOwoNQWR2aXNlQ29tbWFuZBIVCg1z",
+            "ZXJ2ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFIj0KD1Vu",
+            "QWR2aXNlQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1f",
+            "aGFuZGxlGAIgASgFIkYKGEFkdmlzZVN1cGVydmlzb3J5Q29tbWFuZBIVCg1z",
+            "ZXJ2ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFIl4KFkFk",
+            "ZEJ1ZmZlcmVkSXRlbUNvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIX",
+            "Cg9pdGVtX2RlZmluaXRpb24YAiABKAkSFAoMaXRlbV9jb250ZXh0GAMgASgJ",
+            "Il8KIFNldEJ1ZmZlcmVkVXBkYXRlSW50ZXJ2YWxDb21tYW5kEhUKDXNlcnZl",
+            "cl9oYW5kbGUYASABKAUSJAocdXBkYXRlX2ludGVydmFsX21pbGxpc2Vjb25k",
+            "cxgCIAEoBSI8Cg5TdXNwZW5kQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEg",
+            "ASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFIj0KD0FjdGl2YXRlQ29tbWFuZBIV",
+            "Cg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFIngK",
+            "DFdyaXRlQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1f",
+            "aGFuZGxlGAIgASgFEisKBXZhbHVlGAMgASgLMhwubXhhY2Nlc3NfZ2F0ZXdh",
+            "eS52MS5NeFZhbHVlEg8KB3VzZXJfaWQYBCABKAUisAEKDVdyaXRlMkNvbW1h",
+            "bmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgtpdGVtX2hhbmRsZRgCIAEo",
+            "BRIrCgV2YWx1ZRgDIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1",
+            "ZRI1Cg90aW1lc3RhbXBfdmFsdWUYBCABKAsyHC5teGFjY2Vzc19nYXRld2F5",
+            "LnYxLk14VmFsdWUSDwoHdXNlcl9pZBgFIAEoBSKhAQoTV3JpdGVTZWN1cmVk",
             "Q29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxl",
-            "GAIgASgFEisKBXZhbHVlGAMgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5N",
-            "eFZhbHVlEjUKD3RpbWVzdGFtcF92YWx1ZRgEIAEoCzIcLm14YWNjZXNzX2dh",
-            "dGV3YXkudjEuTXhWYWx1ZRIPCgd1c2VyX2lkGAUgASgFIqEBChNXcml0ZVNl",
-            "Y3VyZWRDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9o",
-            "YW5kbGUYAiABKAUSFwoPY3VycmVudF91c2VyX2lkGAMgASgFEhgKEHZlcmlm",
-            "aWVyX3VzZXJfaWQYBCABKAUSKwoFdmFsdWUYBSABKAsyHC5teGFjY2Vzc19n",
-            "YXRld2F5LnYxLk14VmFsdWUi2QEKFFdyaXRlU2VjdXJlZDJDb21tYW5kEhUK",
-            "DXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUSFwoP",
-            "Y3VycmVudF91c2VyX2lkGAMgASgFEhgKEHZlcmlmaWVyX3VzZXJfaWQYBCAB",
-            "KAUSKwoFdmFsdWUYBSABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFs",
-            "dWUSNQoPdGltZXN0YW1wX3ZhbHVlGAYgASgLMhwubXhhY2Nlc3NfZ2F0ZXdh",
-            "eS52MS5NeFZhbHVlImMKF0F1dGhlbnRpY2F0ZVVzZXJDb21tYW5kEhUKDXNl",
-            "cnZlcl9oYW5kbGUYASABKAUSEwoLdmVyaWZ5X3VzZXIYAiABKAkSHAoUdmVy",
-            "aWZ5X3VzZXJfcGFzc3dvcmQYAyABKAkiRwoYQXJjaGVzdHJBVXNlclRvSWRD",
-            "b21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFAoMdXNlcl9pZF9ndWlk",
-            "GAIgASgJIkIKEkFkZEl0ZW1CdWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxl",
-            "GAEgASgFEhUKDXRhZ19hZGRyZXNzZXMYAiADKAkiRAoVQWR2aXNlSXRlbUJ1",
-            "bGtDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFAoMaXRlbV9oYW5k",
-            "bGVzGAIgAygFIkQKFVJlbW92ZUl0ZW1CdWxrQ29tbWFuZBIVCg1zZXJ2ZXJf",
-            "aGFuZGxlGAEgASgFEhQKDGl0ZW1faGFuZGxlcxgCIAMoBSJGChdVbkFkdmlz",
-            "ZUl0ZW1CdWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhQKDGl0",
-            "ZW1faGFuZGxlcxgCIAMoBSJEChRTdWJzY3JpYmVCdWxrQ29tbWFuZBIVCg1z",
-            "ZXJ2ZXJfaGFuZGxlGAEgASgFEhUKDXRhZ19hZGRyZXNzZXMYAiADKAki7gEK",
-            "FlN1YnNjcmliZUFsYXJtc0NvbW1hbmQSHwoXc3Vic2NyaXB0aW9uX2V4cHJl",
-            "c3Npb24YASABKAkSOwoLZm9yY2VkX21vZGUYAiABKA4yJi5teGFjY2Vzc19n",
-            "YXRld2F5LnYxLkFsYXJtUHJvdmlkZXJNb2RlEjoKCndhdGNoX2xpc3QYAyAD",
-            "KAsyJi5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJtU3VidGFnVGFyZ2V0EjoK",
-            "CGZhaWxvdmVyGAQgASgLMigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybUZh",
-            "aWxvdmVyQ29uZmlnIhoKGFVuc3Vic2NyaWJlQWxhcm1zQ29tbWFuZCK0AQoR",
-            "QWxhcm1TdWJ0YWdUYXJnZXQSHAoUYWxhcm1fZnVsbF9yZWZlcmVuY2UYASAB",
-            "KAkSHwoXc291cmNlX29iamVjdF9yZWZlcmVuY2UYAiABKAkSFQoNYWN0aXZl",
-            "X3N1YnRhZxgDIAEoCRIUCgxhY2tlZF9zdWJ0YWcYBCABKAkSGgoSYWNrX2Nv",
-            "bW1lbnRfc3VidGFnGAUgASgJEhcKD3ByaW9yaXR5X3N1YnRhZxgGIAEoCSKF",
-            "AQoTQWxhcm1GYWlsb3ZlckNvbmZpZxIlCh1jb25zZWN1dGl2ZV9mYWlsdXJl",
-            "X3RocmVzaG9sZBgBIAEoBRInCh9mYWlsYmFja19wcm9iZV9pbnRlcnZhbF9z",
-            "ZWNvbmRzGAIgASgFEh4KFmZhaWxiYWNrX3N0YWJsZV9wcm9iZXMYAyABKAUi",
-            "oQEKF0Fja25vd2xlZGdlQWxhcm1Db21tYW5kEhIKCmFsYXJtX2d1aWQYASAB",
-            "KAkSDwoHY29tbWVudBgCIAEoCRIVCg1vcGVyYXRvcl91c2VyGAMgASgJEhUK",
-            "DW9wZXJhdG9yX25vZGUYBCABKAkSFwoPb3BlcmF0b3JfZG9tYWluGAUgASgJ",
-            "EhoKEm9wZXJhdG9yX2Z1bGxfbmFtZRgGIAEoCSI3ChhRdWVyeUFjdGl2ZUFs",
-            "YXJtc0NvbW1hbmQSGwoTYWxhcm1fZmlsdGVyX3ByZWZpeBgBIAEoCSLSAQod",
-            "QWNrbm93bGVkZ2VBbGFybUJ5TmFtZUNvbW1hbmQSEgoKYWxhcm1fbmFtZRgB",
-            "IAEoCRIVCg1wcm92aWRlcl9uYW1lGAIgASgJEhIKCmdyb3VwX25hbWUYAyAB",
-            "KAkSDwoHY29tbWVudBgEIAEoCRIVCg1vcGVyYXRvcl91c2VyGAUgASgJEhUK",
-            "DW9wZXJhdG9yX25vZGUYBiABKAkSFwoPb3BlcmF0b3JfZG9tYWluGAcgASgJ",
-            "EhoKEm9wZXJhdG9yX2Z1bGxfbmFtZRgIIAEoCSJFChZVbnN1YnNjcmliZUJ1",
-            "bGtDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFAoMaXRlbV9oYW5k",
-            "bGVzGAIgAygFIl8KEFdyaXRlQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRs",
-            "ZRgBIAEoBRI0CgdlbnRyaWVzGAIgAygLMiMubXhhY2Nlc3NfZ2F0ZXdheS52",
-            "MS5Xcml0ZUJ1bGtFbnRyeSJjCg5Xcml0ZUJ1bGtFbnRyeRITCgtpdGVtX2hh",
-            "bmRsZRgBIAEoBRIrCgV2YWx1ZRgCIAEoCzIcLm14YWNjZXNzX2dhdGV3YXku",
-            "djEuTXhWYWx1ZRIPCgd1c2VyX2lkGAMgASgFImEKEVdyaXRlMkJ1bGtDb21t",
-            "YW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSNQoHZW50cmllcxgCIAMoCzIk",
-            "Lm14YWNjZXNzX2dhdGV3YXkudjEuV3JpdGUyQnVsa0VudHJ5IpsBCg9Xcml0",
-            "ZTJCdWxrRW50cnkSEwoLaXRlbV9oYW5kbGUYASABKAUSKwoFdmFsdWUYAiAB",
-            "KAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUSNQoPdGltZXN0YW1w",
-            "X3ZhbHVlGAMgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEg8K",
-            "B3VzZXJfaWQYBCABKAUibQoXV3JpdGVTZWN1cmVkQnVsa0NvbW1hbmQSFQoN",
-            "c2VydmVyX2hhbmRsZRgBIAEoBRI7CgdlbnRyaWVzGAIgAygLMioubXhhY2Nl",
-            "c3NfZ2F0ZXdheS52MS5Xcml0ZVNlY3VyZWRCdWxrRW50cnkijAEKFVdyaXRl",
-            "U2VjdXJlZEJ1bGtFbnRyeRITCgtpdGVtX2hhbmRsZRgBIAEoBRIXCg9jdXJy",
-            "ZW50X3VzZXJfaWQYAiABKAUSGAoQdmVyaWZpZXJfdXNlcl9pZBgDIAEoBRIr",
-            "CgV2YWx1ZRgEIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZSJv",
-            "ChhXcml0ZVNlY3VyZWQyQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgB",
-            "IAEoBRI8CgdlbnRyaWVzGAIgAygLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5X",
-            "cml0ZVNlY3VyZWQyQnVsa0VudHJ5IsQBChZXcml0ZVNlY3VyZWQyQnVsa0Vu",
-            "dHJ5EhMKC2l0ZW1faGFuZGxlGAEgASgFEhcKD2N1cnJlbnRfdXNlcl9pZBgC",
-            "IAEoBRIYChB2ZXJpZmllcl91c2VyX2lkGAMgASgFEisKBXZhbHVlGAQgASgL",
-            "MhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEjUKD3RpbWVzdGFtcF92",
-            "YWx1ZRgFIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZSJTCg9S",
-            "ZWFkQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIVCg10YWdf",
-            "YWRkcmVzc2VzGAIgAygJEhIKCnRpbWVvdXRfbXMYAyABKA0iHgoLUGluZ0Nv",
-            "bW1hbmQSDwoHbWVzc2FnZRgBIAEoCSIYChZHZXRTZXNzaW9uU3RhdGVDb21t",
-            "YW5kIhYKFEdldFdvcmtlckluZm9Db21tYW5kIigKEkRyYWluRXZlbnRzQ29t",
-            "bWFuZBISCgptYXhfZXZlbnRzGAEgASgNIkgKFVNodXRkb3duV29ya2VyQ29t",
-            "bWFuZBIvCgxncmFjZV9wZXJpb2QYASABKAsyGS5nb29nbGUucHJvdG9idWYu",
-            "RHVyYXRpb24ihg8KDk14Q29tbWFuZFJlcGx5EhIKCnNlc3Npb25faWQYASAB",
-            "KAkSFgoOY29ycmVsYXRpb25faWQYAiABKAkSMAoEa2luZBgDIAEoDjIiLm14",
-            "YWNjZXNzX2dhdGV3YXkudjEuTXhDb21tYW5kS2luZBI8Cg9wcm90b2NvbF9z",
-            "dGF0dXMYBCABKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLlByb3RvY29sU3Rh",
-            "dHVzEhQKB2hyZXN1bHQYBSABKAVIAYgBARIyCgxyZXR1cm5fdmFsdWUYBiAB",
-            "KAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUSNAoIc3RhdHVzZXMY",
-            "ByADKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVzUHJveHkSGgoS",
-            "ZGlhZ25vc3RpY19tZXNzYWdlGAggASgJEjYKCHJlZ2lzdGVyGBQgASgLMiIu",
-            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5SZWdpc3RlclJlcGx5SAASNQoIYWRkX2l0",
-            "ZW0YFSABKAsyIS5teGFjY2Vzc19nYXRld2F5LnYxLkFkZEl0ZW1SZXBseUgA",
-            "EjcKCWFkZF9pdGVtMhgWIAEoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEuQWRk",
-            "SXRlbTJSZXBseUgAEkYKEWFkZF9idWZmZXJlZF9pdGVtGBcgASgLMikubXhh",
-            "Y2Nlc3NfZ2F0ZXdheS52MS5BZGRCdWZmZXJlZEl0ZW1SZXBseUgAEjQKB3N1",
-            "c3BlbmQYGCABKAsyIS5teGFjY2Vzc19nYXRld2F5LnYxLlN1c3BlbmRSZXBs",
-            "eUgAEjYKCGFjdGl2YXRlGBkgASgLMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5B",
-            "Y3RpdmF0ZVJlcGx5SAASRwoRYXV0aGVudGljYXRlX3VzZXIYGiABKAsyKi5t",
-            "eGFjY2Vzc19nYXRld2F5LnYxLkF1dGhlbnRpY2F0ZVVzZXJSZXBseUgAEksK",
-            "FGFyY2hlc3RyYV91c2VyX3RvX2lkGBsgASgLMisubXhhY2Nlc3NfZ2F0ZXdh",
-            "eS52MS5BcmNoZXN0ckFVc2VyVG9JZFJlcGx5SAASQAoNYWRkX2l0ZW1fYnVs",
-            "axgcIAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmliZVJl",
-            "cGx5SAASQwoQYWR2aXNlX2l0ZW1fYnVsaxgdIAEoCzInLm14YWNjZXNzX2dh",
-            "dGV3YXkudjEuQnVsa1N1YnNjcmliZVJlcGx5SAASQwoQcmVtb3ZlX2l0ZW1f",
-            "YnVsaxgeIAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmli",
-            "ZVJlcGx5SAASRgoTdW5fYWR2aXNlX2l0ZW1fYnVsaxgfIAEoCzInLm14YWNj",
-            "ZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmliZVJlcGx5SAASQQoOc3Vic2Ny",
-            "aWJlX2J1bGsYICABKAsyJy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtTdWJz",
-            "Y3JpYmVSZXBseUgAEkMKEHVuc3Vic2NyaWJlX2J1bGsYISABKAsyJy5teGFj",
-            "Y2Vzc19nYXRld2F5LnYxLkJ1bGtTdWJzY3JpYmVSZXBseUgAEk4KEWFja25v",
-            "d2xlZGdlX2FsYXJtGCIgASgLMjEubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY2tu",
-            "b3dsZWRnZUFsYXJtUmVwbHlQYXlsb2FkSAASUQoTcXVlcnlfYWN0aXZlX2Fs",
-            "YXJtcxgjIAEoCzIyLm14YWNjZXNzX2dhdGV3YXkudjEuUXVlcnlBY3RpdmVB",
-            "bGFybXNSZXBseVBheWxvYWRIABI5Cgp3cml0ZV9idWxrGCQgASgLMiMubXhh",
-            "Y2Nlc3NfZ2F0ZXdheS52MS5CdWxrV3JpdGVSZXBseUgAEjoKC3dyaXRlMl9i",
-            "dWxrGCUgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5CdWxrV3JpdGVSZXBs",
-            "eUgAEkEKEndyaXRlX3NlY3VyZWRfYnVsaxgmIAEoCzIjLm14YWNjZXNzX2dh",
-            "dGV3YXkudjEuQnVsa1dyaXRlUmVwbHlIABJCChN3cml0ZV9zZWN1cmVkMl9i",
-            "dWxrGCcgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5CdWxrV3JpdGVSZXBs",
-            "eUgAEjcKCXJlYWRfYnVsaxgoIAEoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEu",
-            "QnVsa1JlYWRSZXBseUgAEj8KDXNlc3Npb25fc3RhdGUYZCABKAsyJi5teGFj",
-            "Y2Vzc19nYXRld2F5LnYxLlNlc3Npb25TdGF0ZVJlcGx5SAASOwoLd29ya2Vy",
-            "X2luZm8YZSABKAsyJC5teGFjY2Vzc19nYXRld2F5LnYxLldvcmtlckluZm9S",
-            "ZXBseUgAEj0KDGRyYWluX2V2ZW50cxhmIAEoCzIlLm14YWNjZXNzX2dhdGV3",
-            "YXkudjEuRHJhaW5FdmVudHNSZXBseUgAQgkKB3BheWxvYWRCCgoIX2hyZXN1",
-            "bHQiJgoNUmVnaXN0ZXJSZXBseRIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFIiMK",
-            "DEFkZEl0ZW1SZXBseRITCgtpdGVtX2hhbmRsZRgBIAEoBSIkCg1BZGRJdGVt",
-            "MlJlcGx5EhMKC2l0ZW1faGFuZGxlGAEgASgFIisKFEFkZEJ1ZmZlcmVkSXRl",
-            "bVJlcGx5EhMKC2l0ZW1faGFuZGxlGAEgASgFIkIKDFN1c3BlbmRSZXBseRIy",
-            "CgZzdGF0dXMYASABKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVz",
-            "UHJveHkiQwoNQWN0aXZhdGVSZXBseRIyCgZzdGF0dXMYASABKAsyIi5teGFj",
-            "Y2Vzc19nYXRld2F5LnYxLk14U3RhdHVzUHJveHkiKAoVQXV0aGVudGljYXRl",
-            "VXNlclJlcGx5Eg8KB3VzZXJfaWQYASABKAUiKQoWQXJjaGVzdHJBVXNlclRv",
-            "SWRSZXBseRIPCgd1c2VyX2lkGAEgASgFIoEBCg9TdWJzY3JpYmVSZXN1bHQS",
-            "FQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgt0YWdfYWRkcmVzcxgCIAEoCRIT",
-            "CgtpdGVtX2hhbmRsZRgDIAEoBRIWCg53YXNfc3VjY2Vzc2Z1bBgEIAEoCBIV",
-            "Cg1lcnJvcl9tZXNzYWdlGAUgASgJIksKEkJ1bGtTdWJzY3JpYmVSZXBseRI1",
-            "CgdyZXN1bHRzGAEgAygLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5TdWJzY3Jp",
-            "YmVSZXN1bHQixAEKD0J1bGtXcml0ZVJlc3VsdBIVCg1zZXJ2ZXJfaGFuZGxl",
-            "GAEgASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFEhYKDndhc19zdWNjZXNzZnVs",
-            "GAMgASgIEhQKB2hyZXN1bHQYBCABKAVIAIgBARI0CghzdGF0dXNlcxgFIAMo",
-            "CzIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNQcm94eRIVCg1lcnJv",
-            "cl9tZXNzYWdlGAYgASgJQgoKCF9ocmVzdWx0IkcKDkJ1bGtXcml0ZVJlcGx5",
-            "EjUKB3Jlc3VsdHMYASADKAsyJC5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtX",
-            "cml0ZVJlc3VsdCK+AgoOQnVsa1JlYWRSZXN1bHQSFQoNc2VydmVyX2hhbmRs",
-            "ZRgBIAEoBRITCgt0YWdfYWRkcmVzcxgCIAEoCRITCgtpdGVtX2hhbmRsZRgD",
-            "IAEoBRIWCg53YXNfc3VjY2Vzc2Z1bBgEIAEoCBISCgp3YXNfY2FjaGVkGAUg",
-            "ASgIEisKBXZhbHVlGAYgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZh",
-            "bHVlEg8KB3F1YWxpdHkYByABKAUSNAoQc291cmNlX3RpbWVzdGFtcBgIIAEo",
-            "CzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoIc3RhdHVzZXMYCSAD",
-            "KAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVzUHJveHkSFQoNZXJy",
-            "b3JfbWVzc2FnZRgKIAEoCSJFCg1CdWxrUmVhZFJlcGx5EjQKB3Jlc3VsdHMY",
-            "ASADKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtSZWFkUmVzdWx0IkUK",
-            "EVNlc3Npb25TdGF0ZVJlcGx5EjAKBXN0YXRlGAEgASgOMiEubXhhY2Nlc3Nf",
-            "Z2F0ZXdheS52MS5TZXNzaW9uU3RhdGUidQoPV29ya2VySW5mb1JlcGx5EhkK",
-            "EXdvcmtlcl9wcm9jZXNzX2lkGAEgASgFEhYKDndvcmtlcl92ZXJzaW9uGAIg",
-            "ASgJEhcKD214YWNjZXNzX3Byb2dpZBgDIAEoCRIWCg5teGFjY2Vzc19jbHNp",
-            "ZBgEIAEoCSJAChBEcmFpbkV2ZW50c1JlcGx5EiwKBmV2ZW50cxgBIAMoCzIc",
-            "Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhFdmVudCI1ChxBY2tub3dsZWRnZUFs",
-            "YXJtUmVwbHlQYXlsb2FkEhUKDW5hdGl2ZV9zdGF0dXMYASABKAUieAodUXVl",
-            "cnlBY3RpdmVBbGFybXNSZXBseVBheWxvYWQSOwoJc25hcHNob3RzGAEgAygL",
-            "MigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY3RpdmVBbGFybVNuYXBzaG90EhoK",
-            "EnNuYXBzaG90X3RydW5jYXRlZBgCIAEoCCKPCAoHTXhFdmVudBIyCgZmYW1p",
-            "bHkYASABKA4yIi5teGFjY2Vzc19nYXRld2F5LnYxLk14RXZlbnRGYW1pbHkS",
-            "EgoKc2Vzc2lvbl9pZBgCIAEoCRIVCg1zZXJ2ZXJfaGFuZGxlGAMgASgFEhMK",
-            "C2l0ZW1faGFuZGxlGAQgASgFEisKBXZhbHVlGAUgASgLMhwubXhhY2Nlc3Nf",
-            "Z2F0ZXdheS52MS5NeFZhbHVlEg8KB3F1YWxpdHkYBiABKAUSNAoQc291cmNl",
-            "X3RpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAS",
-            "NAoIc3RhdHVzZXMYCCADKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3Rh",
-            "dHVzUHJveHkSFwoPd29ya2VyX3NlcXVlbmNlGAkgASgEEjQKEHdvcmtlcl90",
-            "aW1lc3RhbXAYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj0K",
-            "GWdhdGV3YXlfcmVjZWl2ZV90aW1lc3RhbXAYCyABKAsyGi5nb29nbGUucHJv",
-            "dG9idWYuVGltZXN0YW1wEhQKB2hyZXN1bHQYDCABKAVIAYgBARISCgpyYXdf",
-            "c3RhdHVzGA0gASgJEjcKCnJlcGxheV9nYXAYDiABKAsyHi5teGFjY2Vzc19n",
-            "YXRld2F5LnYxLlJlcGxheUdhcEgCiAEBEkAKDm9uX2RhdGFfY2hhbmdlGBQg",
-            "ASgLMiYubXhhY2Nlc3NfZ2F0ZXdheS52MS5PbkRhdGFDaGFuZ2VFdmVudEgA",
-            "EkYKEW9uX3dyaXRlX2NvbXBsZXRlGBUgASgLMikubXhhY2Nlc3NfZ2F0ZXdh",
-            "eS52MS5PbldyaXRlQ29tcGxldGVFdmVudEgAEkkKEm9wZXJhdGlvbl9jb21w",
-            "bGV0ZRgWIAEoCzIrLm14YWNjZXNzX2dhdGV3YXkudjEuT3BlcmF0aW9uQ29t",
-            "cGxldGVFdmVudEgAElEKF29uX2J1ZmZlcmVkX2RhdGFfY2hhbmdlGBcgASgL",
-            "Mi4ubXhhY2Nlc3NfZ2F0ZXdheS52MS5PbkJ1ZmZlcmVkRGF0YUNoYW5nZUV2",
-            "ZW50SAASSgoTb25fYWxhcm1fdHJhbnNpdGlvbhgYIAEoCzIrLm14YWNjZXNz",
-            "X2dhdGV3YXkudjEuT25BbGFybVRyYW5zaXRpb25FdmVudEgAEl4KHm9uX2Fs",
-            "YXJtX3Byb3ZpZGVyX21vZGVfY2hhbmdlZBgZIAEoCzI0Lm14YWNjZXNzX2dh",
-            "dGV3YXkudjEuT25BbGFybVByb3ZpZGVyTW9kZUNoYW5nZWRFdmVudEgAQgYK",
-            "BGJvZHlCCgoIX2hyZXN1bHRCDQoLX3JlcGxheV9nYXAiUAoJUmVwbGF5R2Fw",
-            "EiAKGHJlcXVlc3RlZF9hZnRlcl9zZXF1ZW5jZRgBIAEoBBIhChlvbGRlc3Rf",
-            "YXZhaWxhYmxlX3NlcXVlbmNlGAIgASgEIhMKEU9uRGF0YUNoYW5nZUV2ZW50",
-            "IhYKFE9uV3JpdGVDb21wbGV0ZUV2ZW50IhgKFk9wZXJhdGlvbkNvbXBsZXRl",
-            "RXZlbnQi1AEKGU9uQnVmZmVyZWREYXRhQ2hhbmdlRXZlbnQSMgoJZGF0YV90",
-            "eXBlGAEgASgOMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeERhdGFUeXBlEjQK",
-            "DnF1YWxpdHlfdmFsdWVzGAIgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5N",
-            "eEFycmF5EjYKEHRpbWVzdGFtcF92YWx1ZXMYAyABKAsyHC5teGFjY2Vzc19n",
-            "YXRld2F5LnYxLk14QXJyYXkSFQoNcmF3X2RhdGFfdHlwZRgEIAEoBSLQBAoW",
-            "T25BbGFybVRyYW5zaXRpb25FdmVudBIcChRhbGFybV9mdWxsX3JlZmVyZW5j",
-            "ZRgBIAEoCRIfChdzb3VyY2Vfb2JqZWN0X3JlZmVyZW5jZRgCIAEoCRIXCg9h",
-            "bGFybV90eXBlX25hbWUYAyABKAkSQQoPdHJhbnNpdGlvbl9raW5kGAQgASgO",
-            "MigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVRyYW5zaXRpb25LaW5kEhAK",
-            "CHNldmVyaXR5GAUgASgFEjwKGG9yaWdpbmFsX3JhaXNlX3RpbWVzdGFtcBgG",
-            "IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoUdHJhbnNpdGlv",
-            "bl90aW1lc3RhbXAYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w",
-            "EhUKDW9wZXJhdG9yX3VzZXIYCCABKAkSGAoQb3BlcmF0b3JfY29tbWVudBgJ",
-            "IAEoCRIQCghjYXRlZ29yeRgKIAEoCRITCgtkZXNjcmlwdGlvbhgLIAEoCRIz",
-            "Cg1jdXJyZW50X3ZhbHVlGAwgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5N",
-            "eFZhbHVlEjEKC2xpbWl0X3ZhbHVlGA0gASgLMhwubXhhY2Nlc3NfZ2F0ZXdh",
-            "eS52MS5NeFZhbHVlEhAKCGRlZ3JhZGVkGA4gASgIEj8KD3NvdXJjZV9wcm92",
-            "aWRlchgPIAEoDjImLm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1Qcm92aWRl",
-            "ck1vZGUioAEKH09uQWxhcm1Qcm92aWRlck1vZGVDaGFuZ2VkRXZlbnQSNAoE",
-            "bW9kZRgBIAEoDjImLm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1Qcm92aWRl",
-            "ck1vZGUSDgoGcmVhc29uGAIgASgJEg8KB2hyZXN1bHQYAyABKAUSJgoCYXQY",
-            "BCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIvEEChNBY3RpdmVB",
-            "bGFybVNuYXBzaG90EhwKFGFsYXJtX2Z1bGxfcmVmZXJlbmNlGAEgASgJEh8K",
-            "F3NvdXJjZV9vYmplY3RfcmVmZXJlbmNlGAIgASgJEhcKD2FsYXJtX3R5cGVf",
-            "bmFtZRgDIAEoCRIQCghzZXZlcml0eRgEIAEoBRI8ChhvcmlnaW5hbF9yYWlz",
-            "ZV90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w",
-            "Ej8KDWN1cnJlbnRfc3RhdGUYBiABKA4yKC5teGFjY2Vzc19nYXRld2F5LnYx",
-            "LkFsYXJtQ29uZGl0aW9uU3RhdGUSEAoIY2F0ZWdvcnkYByABKAkSEwoLZGVz",
-            "Y3JpcHRpb24YCCABKAkSPQoZbGFzdF90cmFuc2l0aW9uX3RpbWVzdGFtcBgJ",
-            "IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNb3BlcmF0b3Jf",
-            "dXNlchgKIAEoCRIYChBvcGVyYXRvcl9jb21tZW50GAsgASgJEjMKDWN1cnJl",
-            "bnRfdmFsdWUYDCABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUS",
-            "MQoLbGltaXRfdmFsdWUYDSABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14",
-            "VmFsdWUSEAoIZGVncmFkZWQYDiABKAgSPwoPc291cmNlX3Byb3ZpZGVyGA8g",
-            "ASgOMiYubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVByb3ZpZGVyTW9kZRIf",
-            "Chdmcm9tX3RydW5jYXRlZF9zbmFwc2hvdBgQIAEoCCKQAQoXQWNrbm93bGVk",
-            "Z2VBbGFybVJlcXVlc3QSHQoVY2xpZW50X2NvcnJlbGF0aW9uX2lkGAIgASgJ",
-            "EhwKFGFsYXJtX2Z1bGxfcmVmZXJlbmNlGAMgASgJEg8KB2NvbW1lbnQYBCAB",
-            "KAkSFQoNb3BlcmF0b3JfdXNlchgFIAEoCUoECAEQAlIKc2Vzc2lvbl9pZCLx",
-            "AQoVQWNrbm93bGVkZ2VBbGFybVJlcGx5EhYKDmNvcnJlbGF0aW9uX2lkGAIg",
-            "ASgJEjwKD3Byb3RvY29sX3N0YXR1cxgDIAEoCzIjLm14YWNjZXNzX2dhdGV3",
-            "YXkudjEuUHJvdG9jb2xTdGF0dXMSFAoHaHJlc3VsdBgEIAEoBUgAiAEBEjIK",
-            "BnN0YXR1cxgFIAEoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNQ",
-            "cm94eRIaChJkaWFnbm9zdGljX21lc3NhZ2UYBiABKAlCCgoIX2hyZXN1bHRK",
-            "BAgBEAJSCnNlc3Npb25faWQiUQoTU3RyZWFtQWxhcm1zUmVxdWVzdBIdChVj",
-            "bGllbnRfY29ycmVsYXRpb25faWQYASABKAkSGwoTYWxhcm1fZmlsdGVyX3By",
-            "ZWZpeBgCIAEoCSLJAgoQQWxhcm1GZWVkTWVzc2FnZRJACgxhY3RpdmVfYWxh",
-            "cm0YASABKAsyKC5teGFjY2Vzc19nYXRld2F5LnYxLkFjdGl2ZUFsYXJtU25h",
-            "cHNob3RIABIbChFzbmFwc2hvdF9jb21wbGV0ZRgCIAEoCEgAEkEKCnRyYW5z",
-            "aXRpb24YAyABKAsyKy5teGFjY2Vzc19nYXRld2F5LnYxLk9uQWxhcm1UcmFu",
-            "c2l0aW9uRXZlbnRIABJDCg9wcm92aWRlcl9zdGF0dXMYBCABKAsyKC5teGFj",
-            "Y2Vzc19nYXRld2F5LnYxLkFsYXJtUHJvdmlkZXJTdGF0dXNIABJDCg9zbmFw",
-            "c2hvdF9zdGF0dXMYBSABKAsyKC5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJt",
-            "U25hcHNob3RTdGF0dXNIAEIJCgdwYXlsb2FkIpgBChNBbGFybVByb3ZpZGVy",
-            "U3RhdHVzEjQKBG1vZGUYASABKA4yJi5teGFjY2Vzc19nYXRld2F5LnYxLkFs",
-            "YXJtUHJvdmlkZXJNb2RlEhAKCGRlZ3JhZGVkGAIgASgIEg4KBnJlYXNvbhgD",
-            "IAEoCRIpCgVzaW5jZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh",
-            "bXAiKAoTQWxhcm1TbmFwc2hvdFN0YXR1cxIRCgl0cnVuY2F0ZWQYASABKAgi",
-            "6wEKDU14U3RhdHVzUHJveHkSDwoHc3VjY2VzcxgBIAEoBRI3CghjYXRlZ29y",
-            "eRgCIAEoDjIlLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNDYXRlZ29y",
-            "eRI4CgtkZXRlY3RlZF9ieRgDIAEoDjIjLm14YWNjZXNzX2dhdGV3YXkudjEu",
-            "TXhTdGF0dXNTb3VyY2USDgoGZGV0YWlsGAQgASgFEhQKDHJhd19jYXRlZ29y",
-            "eRgFIAEoBRIXCg9yYXdfZGV0ZWN0ZWRfYnkYBiABKAUSFwoPZGlhZ25vc3Rp",
-            "Y190ZXh0GAcgASgJIukDCgdNeFZhbHVlEjIKCWRhdGFfdHlwZRgBIAEoDjIf",
-            "Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhEYXRhVHlwZRIUCgx2YXJpYW50X3R5",
-            "cGUYAiABKAkSDwoHaXNfbnVsbBgDIAEoCBIWCg5yYXdfZGlhZ25vc3RpYxgE",
-            "IAEoCRIVCg1yYXdfZGF0YV90eXBlGAUgASgFEhQKCmJvb2xfdmFsdWUYCiAB",
-            "KAhIABIVCgtpbnQzMl92YWx1ZRgLIAEoBUgAEhUKC2ludDY0X3ZhbHVlGAwg",
-            "ASgDSAASFQoLZmxvYXRfdmFsdWUYDSABKAJIABIWCgxkb3VibGVfdmFsdWUY",
-            "DiABKAFIABIWCgxzdHJpbmdfdmFsdWUYDyABKAlIABI1Cg90aW1lc3RhbXBf",
-            "dmFsdWUYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASMwoL",
-            "YXJyYXlfdmFsdWUYESABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14QXJy",
-            "YXlIABITCglyYXdfdmFsdWUYEiABKAxIABJAChJzcGFyc2VfYXJyYXlfdmFs",
-            "dWUYEyABKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3BhcnNlQXJyYXlI",
-            "AEIGCgRraW5kIv4ECgdNeEFycmF5EjoKEWVsZW1lbnRfZGF0YV90eXBlGAEg",
-            "ASgOMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeERhdGFUeXBlEhQKDHZhcmlh",
-            "bnRfdHlwZRgCIAEoCRISCgpkaW1lbnNpb25zGAMgAygNEhYKDnJhd19kaWFn",
-            "bm9zdGljGAQgASgJEh0KFXJhd19lbGVtZW50X2RhdGFfdHlwZRgFIAEoBRI1",
-            "Cgtib29sX3ZhbHVlcxgKIAEoCzIeLm14YWNjZXNzX2dhdGV3YXkudjEuQm9v",
-            "bEFycmF5SAASNwoMaW50MzJfdmFsdWVzGAsgASgLMh8ubXhhY2Nlc3NfZ2F0",
-            "ZXdheS52MS5JbnQzMkFycmF5SAASNwoMaW50NjRfdmFsdWVzGAwgASgLMh8u",
-            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5JbnQ2NEFycmF5SAASNwoMZmxvYXRfdmFs",
-            "dWVzGA0gASgLMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5GbG9hdEFycmF5SAAS",
-            "OQoNZG91YmxlX3ZhbHVlcxgOIAEoCzIgLm14YWNjZXNzX2dhdGV3YXkudjEu",
-            "RG91YmxlQXJyYXlIABI5Cg1zdHJpbmdfdmFsdWVzGA8gASgLMiAubXhhY2Nl",
-            "c3NfZ2F0ZXdheS52MS5TdHJpbmdBcnJheUgAEj8KEHRpbWVzdGFtcF92YWx1",
-            "ZXMYECABKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLlRpbWVzdGFtcEFycmF5",
-            "SAASMwoKcmF3X3ZhbHVlcxgRIAEoCzIdLm14YWNjZXNzX2dhdGV3YXkudjEu",
-            "UmF3QXJyYXlIAEIICgZ2YWx1ZXMimQEKDU14U3BhcnNlQXJyYXkSOgoRZWxl",
-            "bWVudF9kYXRhX3R5cGUYASABKA4yHy5teGFjY2Vzc19nYXRld2F5LnYxLk14",
-            "RGF0YVR5cGUSFAoMdG90YWxfbGVuZ3RoGAIgASgNEjYKCGVsZW1lbnRzGAMg",
-            "AygLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFNwYXJzZUVsZW1lbnQiTQoP",
-            "TXhTcGFyc2VFbGVtZW50Eg0KBWluZGV4GAEgASgNEisKBXZhbHVlGAIgASgL",
-            "MhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlIhsKCUJvb2xBcnJheRIO",
-            "CgZ2YWx1ZXMYASADKAgiHAoKSW50MzJBcnJheRIOCgZ2YWx1ZXMYASADKAUi",
-            "HAoKSW50NjRBcnJheRIOCgZ2YWx1ZXMYASADKAMiHAoKRmxvYXRBcnJheRIO",
-            "CgZ2YWx1ZXMYASADKAIiHQoLRG91YmxlQXJyYXkSDgoGdmFsdWVzGAEgAygB",
-            "Ih0KC1N0cmluZ0FycmF5Eg4KBnZhbHVlcxgBIAMoCSI8Cg5UaW1lc3RhbXBB",
-            "cnJheRIqCgZ2YWx1ZXMYASADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0",
-            "YW1wIhoKCFJhd0FycmF5Eg4KBnZhbHVlcxgBIAMoDCJYCg5Qcm90b2NvbFN0",
-            "YXR1cxI1CgRjb2RlGAEgASgOMicubXhhY2Nlc3NfZ2F0ZXdheS52MS5Qcm90",
-            "b2NvbFN0YXR1c0NvZGUSDwoHbWVzc2FnZRgCIAEoCSqfCwoNTXhDb21tYW5k",
-            "S2luZBIfChtNWF9DT01NQU5EX0tJTkRfVU5TUEVDSUZJRUQQABIcChhNWF9D",
-            "T01NQU5EX0tJTkRfUkVHSVNURVIQARIeChpNWF9DT01NQU5EX0tJTkRfVU5S",
-            "RUdJU1RFUhACEhwKGE1YX0NPTU1BTkRfS0lORF9BRERfSVRFTRADEh0KGU1Y",
-            "X0NPTU1BTkRfS0lORF9BRERfSVRFTTIQBBIfChtNWF9DT01NQU5EX0tJTkRf",
-            "UkVNT1ZFX0lURU0QBRIaChZNWF9DT01NQU5EX0tJTkRfQURWSVNFEAYSHQoZ",
-            "TVhfQ09NTUFORF9LSU5EX1VOX0FEVklTRRAHEiYKIk1YX0NPTU1BTkRfS0lO",
-            "RF9BRFZJU0VfU1VQRVJWSVNPUlkQCBIlCiFNWF9DT01NQU5EX0tJTkRfQURE",
-            "X0JVRkZFUkVEX0lURU0QCRIwCixNWF9DT01NQU5EX0tJTkRfU0VUX0JVRkZF",
-            "UkVEX1VQREFURV9JTlRFUlZBTBAKEhsKF01YX0NPTU1BTkRfS0lORF9TVVNQ",
-            "RU5EEAsSHAoYTVhfQ09NTUFORF9LSU5EX0FDVElWQVRFEAwSGQoVTVhfQ09N",
-            "TUFORF9LSU5EX1dSSVRFEA0SGgoWTVhfQ09NTUFORF9LSU5EX1dSSVRFMhAO",
-            "EiEKHU1YX0NPTU1BTkRfS0lORF9XUklURV9TRUNVUkVEEA8SIgoeTVhfQ09N",
-            "TUFORF9LSU5EX1dSSVRFX1NFQ1VSRUQyEBASJQohTVhfQ09NTUFORF9LSU5E",
-            "X0FVVEhFTlRJQ0FURV9VU0VSEBESKAokTVhfQ09NTUFORF9LSU5EX0FSQ0hF",
-            "U1RSQV9VU0VSX1RPX0lEEBISIQodTVhfQ09NTUFORF9LSU5EX0FERF9JVEVN",
-            "X0JVTEsQExIkCiBNWF9DT01NQU5EX0tJTkRfQURWSVNFX0lURU1fQlVMSxAU",
-            "EiQKIE1YX0NPTU1BTkRfS0lORF9SRU1PVkVfSVRFTV9CVUxLEBUSJwojTVhf",
-            "Q09NTUFORF9LSU5EX1VOX0FEVklTRV9JVEVNX0JVTEsQFhIiCh5NWF9DT01N",
-            "QU5EX0tJTkRfU1VCU0NSSUJFX0JVTEsQFxIkCiBNWF9DT01NQU5EX0tJTkRf",
-            "VU5TVUJTQ1JJQkVfQlVMSxAYEiQKIE1YX0NPTU1BTkRfS0lORF9TVUJTQ1JJ",
-            "QkVfQUxBUk1TEBkSJgoiTVhfQ09NTUFORF9LSU5EX1VOU1VCU0NSSUJFX0FM",
-            "QVJNUxAaEiUKIU1YX0NPTU1BTkRfS0lORF9BQ0tOT1dMRURHRV9BTEFSTRAb",
-            "EicKI01YX0NPTU1BTkRfS0lORF9RVUVSWV9BQ1RJVkVfQUxBUk1TEBwSLQop",
-            "TVhfQ09NTUFORF9LSU5EX0FDS05PV0xFREdFX0FMQVJNX0JZX05BTUUQHRIe",
-            "ChpNWF9DT01NQU5EX0tJTkRfV1JJVEVfQlVMSxAeEh8KG01YX0NPTU1BTkRf",
-            "S0lORF9XUklURTJfQlVMSxAfEiYKIk1YX0NPTU1BTkRfS0lORF9XUklURV9T",
-            "RUNVUkVEX0JVTEsQIBInCiNNWF9DT01NQU5EX0tJTkRfV1JJVEVfU0VDVVJF",
-            "RDJfQlVMSxAhEh0KGU1YX0NPTU1BTkRfS0lORF9SRUFEX0JVTEsQIhIYChRN",
-            "WF9DT01NQU5EX0tJTkRfUElORxBkEiUKIU1YX0NPTU1BTkRfS0lORF9HRVRf",
-            "U0VTU0lPTl9TVEFURRBlEiMKH01YX0NPTU1BTkRfS0lORF9HRVRfV09SS0VS",
-            "X0lORk8QZhIgChxNWF9DT01NQU5EX0tJTkRfRFJBSU5fRVZFTlRTEGcSIwof",
-            "TVhfQ09NTUFORF9LSU5EX1NIVVRET1dOX1dPUktFUhBoKnoKEUFsYXJtUHJv",
-            "dmlkZXJNb2RlEiMKH0FMQVJNX1BST1ZJREVSX01PREVfVU5TUEVDSUZJRUQQ",
-            "ABIgChxBTEFSTV9QUk9WSURFUl9NT0RFX0FMQVJNTUdSEAESHgoaQUxBUk1f",
-            "UFJPVklERVJfTU9ERV9TVUJUQUcQAiqtAgoNTXhFdmVudEZhbWlseRIfChtN",
-            "WF9FVkVOVF9GQU1JTFlfVU5TUEVDSUZJRUQQABIiCh5NWF9FVkVOVF9GQU1J",
-            "TFlfT05fREFUQV9DSEFOR0UQARIlCiFNWF9FVkVOVF9GQU1JTFlfT05fV1JJ",
-            "VEVfQ09NUExFVEUQAhImCiJNWF9FVkVOVF9GQU1JTFlfT1BFUkFUSU9OX0NP",
-            "TVBMRVRFEAMSKwonTVhfRVZFTlRfRkFNSUxZX09OX0JVRkZFUkVEX0RBVEFf",
-            "Q0hBTkdFEAQSJwojTVhfRVZFTlRfRkFNSUxZX09OX0FMQVJNX1RSQU5TSVRJ",
-            "T04QBRIyCi5NWF9FVkVOVF9GQU1JTFlfT05fQUxBUk1fUFJPVklERVJfTU9E",
-            "RV9DSEFOR0VEEAYqygEKE0FsYXJtVHJhbnNpdGlvbktpbmQSJQohQUxBUk1f",
-            "VFJBTlNJVElPTl9LSU5EX1VOU1BFQ0lGSUVEEAASHwobQUxBUk1fVFJBTlNJ",
-            "VElPTl9LSU5EX1JBSVNFEAESJQohQUxBUk1fVFJBTlNJVElPTl9LSU5EX0FD",
-            "S05PV0xFREdFEAISHwobQUxBUk1fVFJBTlNJVElPTl9LSU5EX0NMRUFSEAMS",
-            "IwofQUxBUk1fVFJBTlNJVElPTl9LSU5EX1JFVFJJR0dFUhAEKqoBChNBbGFy",
-            "bUNvbmRpdGlvblN0YXRlEiUKIUFMQVJNX0NPTkRJVElPTl9TVEFURV9VTlNQ",
-            "RUNJRklFRBAAEiAKHEFMQVJNX0NPTkRJVElPTl9TVEFURV9BQ1RJVkUQARIm",
-            "CiJBTEFSTV9DT05ESVRJT05fU1RBVEVfQUNUSVZFX0FDS0VEEAISIgoeQUxB",
-            "Uk1fQ09ORElUSU9OX1NUQVRFX0lOQUNUSVZFEAMqpQMKEE14U3RhdHVzQ2F0",
-            "ZWdvcnkSIgoeTVhfU1RBVFVTX0NBVEVHT1JZX1VOU1BFQ0lGSUVEEAASHgoa",
-            "TVhfU1RBVFVTX0NBVEVHT1JZX1VOS05PV04QARIZChVNWF9TVEFUVVNfQ0FU",
-            "RUdPUllfT0sQAhIeChpNWF9TVEFUVVNfQ0FURUdPUllfUEVORElORxADEh4K",
-            "Gk1YX1NUQVRVU19DQVRFR09SWV9XQVJOSU5HEAQSKgomTVhfU1RBVFVTX0NB",
-            "VEVHT1JZX0NPTU1VTklDQVRJT05fRVJST1IQBRIqCiZNWF9TVEFUVVNfQ0FU",
-            "RUdPUllfQ09ORklHVVJBVElPTl9FUlJPUhAGEigKJE1YX1NUQVRVU19DQVRF",
-            "R09SWV9PUEVSQVRJT05BTF9FUlJPUhAHEiUKIU1YX1NUQVRVU19DQVRFR09S",
-            "WV9TRUNVUklUWV9FUlJPUhAIEiUKIU1YX1NUQVRVU19DQVRFR09SWV9TT0ZU",
-            "V0FSRV9FUlJPUhAJEiIKHk1YX1NUQVRVU19DQVRFR09SWV9PVEhFUl9FUlJP",
-            "UhAKKsoCCg5NeFN0YXR1c1NvdXJjZRIgChxNWF9TVEFUVVNfU09VUkNFX1VO",
-            "U1BFQ0lGSUVEEAASHAoYTVhfU1RBVFVTX1NPVVJDRV9VTktOT1dOEAESIwof",
-            "TVhfU1RBVFVTX1NPVVJDRV9SRVFVRVNUSU5HX0xNWBACEiMKH01YX1NUQVRV",
-            "U19TT1VSQ0VfUkVTUE9ORElOR19MTVgQAxIjCh9NWF9TVEFUVVNfU09VUkNF",
-            "X1JFUVVFU1RJTkdfTk1YEAQSIwofTVhfU1RBVFVTX1NPVVJDRV9SRVNQT05E",
-            "SU5HX05NWBAFEjEKLU1YX1NUQVRVU19TT1VSQ0VfUkVRVUVTVElOR19BVVRP",
-            "TUFUSU9OX09CSkVDVBAGEjEKLU1YX1NUQVRVU19TT1VSQ0VfUkVTUE9ORElO",
-            "R19BVVRPTUFUSU9OX09CSkVDVBAHKt0ECgpNeERhdGFUeXBlEhwKGE1YX0RB",
-            "VEFfVFlQRV9VTlNQRUNJRklFRBAAEhgKFE1YX0RBVEFfVFlQRV9VTktOT1dO",
-            "EAESGAoUTVhfREFUQV9UWVBFX05PX0RBVEEQAhIYChRNWF9EQVRBX1RZUEVf",
-            "Qk9PTEVBThADEhgKFE1YX0RBVEFfVFlQRV9JTlRFR0VSEAQSFgoSTVhfREFU",
-            "QV9UWVBFX0ZMT0FUEAUSFwoTTVhfREFUQV9UWVBFX0RPVUJMRRAGEhcKE01Y",
-            "X0RBVEFfVFlQRV9TVFJJTkcQBxIVChFNWF9EQVRBX1RZUEVfVElNRRAIEh0K",
-            "GU1YX0RBVEFfVFlQRV9FTEFQU0VEX1RJTUUQCRIfChtNWF9EQVRBX1RZUEVf",
-            "UkVGRVJFTkNFX1RZUEUQChIcChhNWF9EQVRBX1RZUEVfU1RBVFVTX1RZUEUQ",
-            "CxIVChFNWF9EQVRBX1RZUEVfRU5VTRAMEi0KKU1YX0RBVEFfVFlQRV9TRUNV",
-            "UklUWV9DTEFTU0lGSUNBVElPTl9FTlVNEA0SIgoeTVhfREFUQV9UWVBFX0RB",
-            "VEFfUVVBTElUWV9UWVBFEA4SHwobTVhfREFUQV9UWVBFX1FVQUxJRklFRF9F",
-            "TlVNEA8SIQodTVhfREFUQV9UWVBFX1FVQUxJRklFRF9TVFJVQ1QQEBIpCiVN",
-            "WF9EQVRBX1RZUEVfSU5URVJOQVRJT05BTElaRURfU1RSSU5HEBESGwoXTVhf",
-            "REFUQV9UWVBFX0JJR19TVFJJTkcQEhIUChBNWF9EQVRBX1RZUEVfRU5EEBMq",
-            "owMKElByb3RvY29sU3RhdHVzQ29kZRIkCiBQUk9UT0NPTF9TVEFUVVNfQ09E",
-            "RV9VTlNQRUNJRklFRBAAEhsKF1BST1RPQ09MX1NUQVRVU19DT0RFX09LEAES",
-            "KAokUFJPVE9DT0xfU1RBVFVTX0NPREVfSU5WQUxJRF9SRVFVRVNUEAISKgom",
-            "UFJPVE9DT0xfU1RBVFVTX0NPREVfU0VTU0lPTl9OT1RfRk9VTkQQAxIqCiZQ",
-            "Uk9UT0NPTF9TVEFUVVNfQ09ERV9TRVNTSU9OX05PVF9SRUFEWRAEEisKJ1BS",
-            "T1RPQ09MX1NUQVRVU19DT0RFX1dPUktFUl9VTkFWQUlMQUJMRRAFEiAKHFBS",
-            "T1RPQ09MX1NUQVRVU19DT0RFX1RJTUVPVVQQBhIhCh1QUk9UT0NPTF9TVEFU",
-            "VVNfQ09ERV9DQU5DRUxFRBAHEisKJ1BST1RPQ09MX1NUQVRVU19DT0RFX1BS",
-            "T1RPQ09MX1ZJT0xBVElPThAIEikKJVBST1RPQ09MX1NUQVRVU19DT0RFX01Y",
-            "QUNDRVNTX0ZBSUxVUkUQCSq/AgoMU2Vzc2lvblN0YXRlEh0KGVNFU1NJT05f",
-            "U1RBVEVfVU5TUEVDSUZJRUQQABIaChZTRVNTSU9OX1NUQVRFX0NSRUFUSU5H",
-            "EAESIQodU0VTU0lPTl9TVEFURV9TVEFSVElOR19XT1JLRVIQAhIiCh5TRVNT",
-            "SU9OX1NUQVRFX1dBSVRJTkdfRk9SX1BJUEUQAxIdChlTRVNTSU9OX1NUQVRF",
-            "X0hBTkRTSEFLSU5HEAQSJQohU0VTU0lPTl9TVEFURV9JTklUSUFMSVpJTkdf",
-            "V09SS0VSEAUSFwoTU0VTU0lPTl9TVEFURV9SRUFEWRAGEhkKFVNFU1NJT05f",
-            "U1RBVEVfQ0xPU0lORxAHEhgKFFNFU1NJT05fU1RBVEVfQ0xPU0VEEAgSGQoV",
-            "U0VTU0lPTl9TVEFURV9GQVVMVEVEEAkywwUKD014QWNjZXNzR2F0ZXdheRJd",
-            "CgtPcGVuU2Vzc2lvbhInLm14YWNjZXNzX2dhdGV3YXkudjEuT3BlblNlc3Np",
-            "b25SZXF1ZXN0GiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5PcGVuU2Vzc2lvblJl",
-            "cGx5EmAKDENsb3NlU2Vzc2lvbhIoLm14YWNjZXNzX2dhdGV3YXkudjEuQ2xv",
-            "c2VTZXNzaW9uUmVxdWVzdBomLm14YWNjZXNzX2dhdGV3YXkudjEuQ2xvc2VT",
-            "ZXNzaW9uUmVwbHkSVAoGSW52b2tlEiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5N",
-            "eENvbW1hbmRSZXF1ZXN0GiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1h",
-            "bmRSZXBseRJYCgxTdHJlYW1FdmVudHMSKC5teGFjY2Vzc19nYXRld2F5LnYx",
-            "LlN0cmVhbUV2ZW50c1JlcXVlc3QaHC5teGFjY2Vzc19nYXRld2F5LnYxLk14",
-            "RXZlbnQwARJsChBBY2tub3dsZWRnZUFsYXJtEiwubXhhY2Nlc3NfZ2F0ZXdh",
-            "eS52MS5BY2tub3dsZWRnZUFsYXJtUmVxdWVzdBoqLm14YWNjZXNzX2dhdGV3",
-            "YXkudjEuQWNrbm93bGVkZ2VBbGFybVJlcGx5EmEKDFN0cmVhbUFsYXJtcxIo",
-            "Lm14YWNjZXNzX2dhdGV3YXkudjEuU3RyZWFtQWxhcm1zUmVxdWVzdBolLm14",
-            "YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1GZWVkTWVzc2FnZTABEm4KEVF1ZXJ5",
-            "QWN0aXZlQWxhcm1zEi0ubXhhY2Nlc3NfZ2F0ZXdheS52MS5RdWVyeUFjdGl2",
-            "ZUFsYXJtc1JlcXVlc3QaKC5teGFjY2Vzc19nYXRld2F5LnYxLkFjdGl2ZUFs",
-            "YXJtU25hcHNob3QwAUImqgIjWkIuTU9NLldXLk14R2F0ZXdheS5Db250cmFj",
-            "dHMuUHJvdG9iBnByb3RvMw=="));
+            "GAIgASgFEhcKD2N1cnJlbnRfdXNlcl9pZBgDIAEoBRIYChB2ZXJpZmllcl91",
+            "c2VyX2lkGAQgASgFEisKBXZhbHVlGAUgASgLMhwubXhhY2Nlc3NfZ2F0ZXdh",
+            "eS52MS5NeFZhbHVlItkBChRXcml0ZVNlY3VyZWQyQ29tbWFuZBIVCg1zZXJ2",
+            "ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFEhcKD2N1cnJl",
+            "bnRfdXNlcl9pZBgDIAEoBRIYChB2ZXJpZmllcl91c2VyX2lkGAQgASgFEisK",
+            "BXZhbHVlGAUgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEjUK",
+            "D3RpbWVzdGFtcF92YWx1ZRgGIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "TXhWYWx1ZSJjChdBdXRoZW50aWNhdGVVc2VyQ29tbWFuZBIVCg1zZXJ2ZXJf",
+            "aGFuZGxlGAEgASgFEhMKC3ZlcmlmeV91c2VyGAIgASgJEhwKFHZlcmlmeV91",
+            "c2VyX3Bhc3N3b3JkGAMgASgJIkcKGEFyY2hlc3RyQVVzZXJUb0lkQ29tbWFu",
+            "ZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhQKDHVzZXJfaWRfZ3VpZBgCIAEo",
+            "CSJCChJBZGRJdGVtQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEo",
+            "BRIVCg10YWdfYWRkcmVzc2VzGAIgAygJIkQKFUFkdmlzZUl0ZW1CdWxrQ29t",
+            "bWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhQKDGl0ZW1faGFuZGxlcxgC",
+            "IAMoBSJEChVSZW1vdmVJdGVtQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRs",
+            "ZRgBIAEoBRIUCgxpdGVtX2hhbmRsZXMYAiADKAUiRgoXVW5BZHZpc2VJdGVt",
+            "QnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIUCgxpdGVtX2hh",
+            "bmRsZXMYAiADKAUiRAoUU3Vic2NyaWJlQnVsa0NvbW1hbmQSFQoNc2VydmVy",
+            "X2hhbmRsZRgBIAEoBRIVCg10YWdfYWRkcmVzc2VzGAIgAygJIogCChZTdWJz",
+            "Y3JpYmVBbGFybXNDb21tYW5kEh8KF3N1YnNjcmlwdGlvbl9leHByZXNzaW9u",
+            "GAEgASgJEjsKC2ZvcmNlZF9tb2RlGAIgASgOMiYubXhhY2Nlc3NfZ2F0ZXdh",
+            "eS52MS5BbGFybVByb3ZpZGVyTW9kZRI6Cgp3YXRjaF9saXN0GAMgAygLMiYu",
+            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVN1YnRhZ1RhcmdldBI6CghmYWls",
+            "b3ZlchgEIAEoCzIoLm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1GYWlsb3Zl",
+            "ckNvbmZpZxIYChBmYWxsYmFja19lbmFibGVkGAUgASgIIlkKG1VwZGF0ZUFs",
+            "YXJtV2F0Y2hMaXN0Q29tbWFuZBI6Cgp3YXRjaF9saXN0GAEgAygLMiYubXhh",
+            "Y2Nlc3NfZ2F0ZXdheS52MS5BbGFybVN1YnRhZ1RhcmdldCIaChhVbnN1YnNj",
+            "cmliZUFsYXJtc0NvbW1hbmQitAEKEUFsYXJtU3VidGFnVGFyZ2V0EhwKFGFs",
+            "YXJtX2Z1bGxfcmVmZXJlbmNlGAEgASgJEh8KF3NvdXJjZV9vYmplY3RfcmVm",
+            "ZXJlbmNlGAIgASgJEhUKDWFjdGl2ZV9zdWJ0YWcYAyABKAkSFAoMYWNrZWRf",
+            "c3VidGFnGAQgASgJEhoKEmFja19jb21tZW50X3N1YnRhZxgFIAEoCRIXCg9w",
+            "cmlvcml0eV9zdWJ0YWcYBiABKAkihQEKE0FsYXJtRmFpbG92ZXJDb25maWcS",
+            "JQodY29uc2VjdXRpdmVfZmFpbHVyZV90aHJlc2hvbGQYASABKAUSJwofZmFp",
+            "bGJhY2tfcHJvYmVfaW50ZXJ2YWxfc2Vjb25kcxgCIAEoBRIeChZmYWlsYmFj",
+            "a19zdGFibGVfcHJvYmVzGAMgASgFIqEBChdBY2tub3dsZWRnZUFsYXJtQ29t",
+            "bWFuZBISCgphbGFybV9ndWlkGAEgASgJEg8KB2NvbW1lbnQYAiABKAkSFQoN",
+            "b3BlcmF0b3JfdXNlchgDIAEoCRIVCg1vcGVyYXRvcl9ub2RlGAQgASgJEhcK",
+            "D29wZXJhdG9yX2RvbWFpbhgFIAEoCRIaChJvcGVyYXRvcl9mdWxsX25hbWUY",
+            "BiABKAkiNwoYUXVlcnlBY3RpdmVBbGFybXNDb21tYW5kEhsKE2FsYXJtX2Zp",
+            "bHRlcl9wcmVmaXgYASABKAki0gEKHUFja25vd2xlZGdlQWxhcm1CeU5hbWVD",
+            "b21tYW5kEhIKCmFsYXJtX25hbWUYASABKAkSFQoNcHJvdmlkZXJfbmFtZRgC",
+            "IAEoCRISCgpncm91cF9uYW1lGAMgASgJEg8KB2NvbW1lbnQYBCABKAkSFQoN",
+            "b3BlcmF0b3JfdXNlchgFIAEoCRIVCg1vcGVyYXRvcl9ub2RlGAYgASgJEhcK",
+            "D29wZXJhdG9yX2RvbWFpbhgHIAEoCRIaChJvcGVyYXRvcl9mdWxsX25hbWUY",
+            "CCABKAkiRQoWVW5zdWJzY3JpYmVCdWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFu",
+            "ZGxlGAEgASgFEhQKDGl0ZW1faGFuZGxlcxgCIAMoBSJfChBXcml0ZUJ1bGtD",
+            "b21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSNAoHZW50cmllcxgCIAMo",
+            "CzIjLm14YWNjZXNzX2dhdGV3YXkudjEuV3JpdGVCdWxrRW50cnkiYwoOV3Jp",
+            "dGVCdWxrRW50cnkSEwoLaXRlbV9oYW5kbGUYASABKAUSKwoFdmFsdWUYAiAB",
+            "KAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUSDwoHdXNlcl9pZBgD",
+            "IAEoBSJhChFXcml0ZTJCdWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEg",
+            "ASgFEjUKB2VudHJpZXMYAiADKAsyJC5teGFjY2Vzc19nYXRld2F5LnYxLldy",
+            "aXRlMkJ1bGtFbnRyeSKbAQoPV3JpdGUyQnVsa0VudHJ5EhMKC2l0ZW1faGFu",
+            "ZGxlGAEgASgFEisKBXZhbHVlGAIgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52",
+            "MS5NeFZhbHVlEjUKD3RpbWVzdGFtcF92YWx1ZRgDIAEoCzIcLm14YWNjZXNz",
+            "X2dhdGV3YXkudjEuTXhWYWx1ZRIPCgd1c2VyX2lkGAQgASgFIm0KF1dyaXRl",
+            "U2VjdXJlZEJ1bGtDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSOwoH",
+            "ZW50cmllcxgCIAMoCzIqLm14YWNjZXNzX2dhdGV3YXkudjEuV3JpdGVTZWN1",
+            "cmVkQnVsa0VudHJ5IowBChVXcml0ZVNlY3VyZWRCdWxrRW50cnkSEwoLaXRl",
+            "bV9oYW5kbGUYASABKAUSFwoPY3VycmVudF91c2VyX2lkGAIgASgFEhgKEHZl",
+            "cmlmaWVyX3VzZXJfaWQYAyABKAUSKwoFdmFsdWUYBCABKAsyHC5teGFjY2Vz",
+            "c19nYXRld2F5LnYxLk14VmFsdWUibwoYV3JpdGVTZWN1cmVkMkJ1bGtDb21t",
+            "YW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSPAoHZW50cmllcxgCIAMoCzIr",
+            "Lm14YWNjZXNzX2dhdGV3YXkudjEuV3JpdGVTZWN1cmVkMkJ1bGtFbnRyeSLE",
+            "AQoWV3JpdGVTZWN1cmVkMkJ1bGtFbnRyeRITCgtpdGVtX2hhbmRsZRgBIAEo",
+            "BRIXCg9jdXJyZW50X3VzZXJfaWQYAiABKAUSGAoQdmVyaWZpZXJfdXNlcl9p",
+            "ZBgDIAEoBRIrCgV2YWx1ZRgEIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "TXhWYWx1ZRI1Cg90aW1lc3RhbXBfdmFsdWUYBSABKAsyHC5teGFjY2Vzc19n",
+            "YXRld2F5LnYxLk14VmFsdWUiUwoPUmVhZEJ1bGtDb21tYW5kEhUKDXNlcnZl",
+            "cl9oYW5kbGUYASABKAUSFQoNdGFnX2FkZHJlc3NlcxgCIAMoCRISCgp0aW1l",
+            "b3V0X21zGAMgASgNIh4KC1BpbmdDb21tYW5kEg8KB21lc3NhZ2UYASABKAki",
+            "GAoWR2V0U2Vzc2lvblN0YXRlQ29tbWFuZCIWChRHZXRXb3JrZXJJbmZvQ29t",
+            "bWFuZCIoChJEcmFpbkV2ZW50c0NvbW1hbmQSEgoKbWF4X2V2ZW50cxgBIAEo",
+            "DSJIChVTaHV0ZG93bldvcmtlckNvbW1hbmQSLwoMZ3JhY2VfcGVyaW9kGAEg",
+            "ASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIoYPCg5NeENvbW1hbmRS",
+            "ZXBseRISCgpzZXNzaW9uX2lkGAEgASgJEhYKDmNvcnJlbGF0aW9uX2lkGAIg",
+            "ASgJEjAKBGtpbmQYAyABKA4yIi5teGFjY2Vzc19nYXRld2F5LnYxLk14Q29t",
+            "bWFuZEtpbmQSPAoPcHJvdG9jb2xfc3RhdHVzGAQgASgLMiMubXhhY2Nlc3Nf",
+            "Z2F0ZXdheS52MS5Qcm90b2NvbFN0YXR1cxIUCgdocmVzdWx0GAUgASgFSAGI",
+            "AQESMgoMcmV0dXJuX3ZhbHVlGAYgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52",
+            "MS5NeFZhbHVlEjQKCHN0YXR1c2VzGAcgAygLMiIubXhhY2Nlc3NfZ2F0ZXdh",
+            "eS52MS5NeFN0YXR1c1Byb3h5EhoKEmRpYWdub3N0aWNfbWVzc2FnZRgIIAEo",
+            "CRI2CghyZWdpc3RlchgUIAEoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEuUmVn",
+            "aXN0ZXJSZXBseUgAEjUKCGFkZF9pdGVtGBUgASgLMiEubXhhY2Nlc3NfZ2F0",
+            "ZXdheS52MS5BZGRJdGVtUmVwbHlIABI3CglhZGRfaXRlbTIYFiABKAsyIi5t",
+            "eGFjY2Vzc19nYXRld2F5LnYxLkFkZEl0ZW0yUmVwbHlIABJGChFhZGRfYnVm",
+            "ZmVyZWRfaXRlbRgXIAEoCzIpLm14YWNjZXNzX2dhdGV3YXkudjEuQWRkQnVm",
+            "ZmVyZWRJdGVtUmVwbHlIABI0CgdzdXNwZW5kGBggASgLMiEubXhhY2Nlc3Nf",
+            "Z2F0ZXdheS52MS5TdXNwZW5kUmVwbHlIABI2CghhY3RpdmF0ZRgZIAEoCzIi",
+            "Lm14YWNjZXNzX2dhdGV3YXkudjEuQWN0aXZhdGVSZXBseUgAEkcKEWF1dGhl",
+            "bnRpY2F0ZV91c2VyGBogASgLMioubXhhY2Nlc3NfZ2F0ZXdheS52MS5BdXRo",
+            "ZW50aWNhdGVVc2VyUmVwbHlIABJLChRhcmNoZXN0cmFfdXNlcl90b19pZBgb",
+            "IAEoCzIrLm14YWNjZXNzX2dhdGV3YXkudjEuQXJjaGVzdHJBVXNlclRvSWRS",
+            "ZXBseUgAEkAKDWFkZF9pdGVtX2J1bGsYHCABKAsyJy5teGFjY2Vzc19nYXRl",
+            "d2F5LnYxLkJ1bGtTdWJzY3JpYmVSZXBseUgAEkMKEGFkdmlzZV9pdGVtX2J1",
+            "bGsYHSABKAsyJy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtTdWJzY3JpYmVS",
+            "ZXBseUgAEkMKEHJlbW92ZV9pdGVtX2J1bGsYHiABKAsyJy5teGFjY2Vzc19n",
+            "YXRld2F5LnYxLkJ1bGtTdWJzY3JpYmVSZXBseUgAEkYKE3VuX2FkdmlzZV9p",
+            "dGVtX2J1bGsYHyABKAsyJy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtTdWJz",
+            "Y3JpYmVSZXBseUgAEkEKDnN1YnNjcmliZV9idWxrGCAgASgLMicubXhhY2Nl",
+            "c3NfZ2F0ZXdheS52MS5CdWxrU3Vic2NyaWJlUmVwbHlIABJDChB1bnN1YnNj",
+            "cmliZV9idWxrGCEgASgLMicubXhhY2Nlc3NfZ2F0ZXdheS52MS5CdWxrU3Vi",
+            "c2NyaWJlUmVwbHlIABJOChFhY2tub3dsZWRnZV9hbGFybRgiIAEoCzIxLm14",
+            "YWNjZXNzX2dhdGV3YXkudjEuQWNrbm93bGVkZ2VBbGFybVJlcGx5UGF5bG9h",
+            "ZEgAElEKE3F1ZXJ5X2FjdGl2ZV9hbGFybXMYIyABKAsyMi5teGFjY2Vzc19n",
+            "YXRld2F5LnYxLlF1ZXJ5QWN0aXZlQWxhcm1zUmVwbHlQYXlsb2FkSAASOQoK",
+            "d3JpdGVfYnVsaxgkIAEoCzIjLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1dy",
+            "aXRlUmVwbHlIABI6Cgt3cml0ZTJfYnVsaxglIAEoCzIjLm14YWNjZXNzX2dh",
+            "dGV3YXkudjEuQnVsa1dyaXRlUmVwbHlIABJBChJ3cml0ZV9zZWN1cmVkX2J1",
+            "bGsYJiABKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtXcml0ZVJlcGx5",
+            "SAASQgoTd3JpdGVfc2VjdXJlZDJfYnVsaxgnIAEoCzIjLm14YWNjZXNzX2dh",
+            "dGV3YXkudjEuQnVsa1dyaXRlUmVwbHlIABI3CglyZWFkX2J1bGsYKCABKAsy",
+            "Ii5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtSZWFkUmVwbHlIABI/Cg1zZXNz",
+            "aW9uX3N0YXRlGGQgASgLMiYubXhhY2Nlc3NfZ2F0ZXdheS52MS5TZXNzaW9u",
+            "U3RhdGVSZXBseUgAEjsKC3dvcmtlcl9pbmZvGGUgASgLMiQubXhhY2Nlc3Nf",
+            "Z2F0ZXdheS52MS5Xb3JrZXJJbmZvUmVwbHlIABI9CgxkcmFpbl9ldmVudHMY",
+            "ZiABKAsyJS5teGFjY2Vzc19nYXRld2F5LnYxLkRyYWluRXZlbnRzUmVwbHlI",
+            "AEIJCgdwYXlsb2FkQgoKCF9ocmVzdWx0IiYKDVJlZ2lzdGVyUmVwbHkSFQoN",
+            "c2VydmVyX2hhbmRsZRgBIAEoBSIjCgxBZGRJdGVtUmVwbHkSEwoLaXRlbV9o",
+            "YW5kbGUYASABKAUiJAoNQWRkSXRlbTJSZXBseRITCgtpdGVtX2hhbmRsZRgB",
+            "IAEoBSIrChRBZGRCdWZmZXJlZEl0ZW1SZXBseRITCgtpdGVtX2hhbmRsZRgB",
+            "IAEoBSJCCgxTdXNwZW5kUmVwbHkSMgoGc3RhdHVzGAEgASgLMiIubXhhY2Nl",
+            "c3NfZ2F0ZXdheS52MS5NeFN0YXR1c1Byb3h5IkMKDUFjdGl2YXRlUmVwbHkS",
+            "MgoGc3RhdHVzGAEgASgLMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFN0YXR1",
+            "c1Byb3h5IigKFUF1dGhlbnRpY2F0ZVVzZXJSZXBseRIPCgd1c2VyX2lkGAEg",
+            "ASgFIikKFkFyY2hlc3RyQVVzZXJUb0lkUmVwbHkSDwoHdXNlcl9pZBgBIAEo",
+            "BSKBAQoPU3Vic2NyaWJlUmVzdWx0EhUKDXNlcnZlcl9oYW5kbGUYASABKAUS",
+            "EwoLdGFnX2FkZHJlc3MYAiABKAkSEwoLaXRlbV9oYW5kbGUYAyABKAUSFgoO",
+            "d2FzX3N1Y2Nlc3NmdWwYBCABKAgSFQoNZXJyb3JfbWVzc2FnZRgFIAEoCSJL",
+            "ChJCdWxrU3Vic2NyaWJlUmVwbHkSNQoHcmVzdWx0cxgBIAMoCzIkLm14YWNj",
+            "ZXNzX2dhdGV3YXkudjEuU3Vic2NyaWJlUmVzdWx0IsQBCg9CdWxrV3JpdGVS",
+            "ZXN1bHQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgtpdGVtX2hhbmRsZRgC",
+            "IAEoBRIWCg53YXNfc3VjY2Vzc2Z1bBgDIAEoCBIUCgdocmVzdWx0GAQgASgF",
+            "SACIAQESNAoIc3RhdHVzZXMYBSADKAsyIi5teGFjY2Vzc19nYXRld2F5LnYx",
+            "Lk14U3RhdHVzUHJveHkSFQoNZXJyb3JfbWVzc2FnZRgGIAEoCUIKCghfaHJl",
+            "c3VsdCJHCg5CdWxrV3JpdGVSZXBseRI1CgdyZXN1bHRzGAEgAygLMiQubXhh",
+            "Y2Nlc3NfZ2F0ZXdheS52MS5CdWxrV3JpdGVSZXN1bHQivgIKDkJ1bGtSZWFk",
+            "UmVzdWx0EhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLdGFnX2FkZHJlc3MY",
+            "AiABKAkSEwoLaXRlbV9oYW5kbGUYAyABKAUSFgoOd2FzX3N1Y2Nlc3NmdWwY",
+            "BCABKAgSEgoKd2FzX2NhY2hlZBgFIAEoCBIrCgV2YWx1ZRgGIAEoCzIcLm14",
+            "YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIPCgdxdWFsaXR5GAcgASgFEjQK",
+            "EHNvdXJjZV90aW1lc3RhbXAYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGlt",
+            "ZXN0YW1wEjQKCHN0YXR1c2VzGAkgAygLMiIubXhhY2Nlc3NfZ2F0ZXdheS52",
+            "MS5NeFN0YXR1c1Byb3h5EhUKDWVycm9yX21lc3NhZ2UYCiABKAkiRQoNQnVs",
+            "a1JlYWRSZXBseRI0CgdyZXN1bHRzGAEgAygLMiMubXhhY2Nlc3NfZ2F0ZXdh",
+            "eS52MS5CdWxrUmVhZFJlc3VsdCJFChFTZXNzaW9uU3RhdGVSZXBseRIwCgVz",
+            "dGF0ZRgBIAEoDjIhLm14YWNjZXNzX2dhdGV3YXkudjEuU2Vzc2lvblN0YXRl",
+            "InUKD1dvcmtlckluZm9SZXBseRIZChF3b3JrZXJfcHJvY2Vzc19pZBgBIAEo",
+            "BRIWCg53b3JrZXJfdmVyc2lvbhgCIAEoCRIXCg9teGFjY2Vzc19wcm9naWQY",
+            "AyABKAkSFgoObXhhY2Nlc3NfY2xzaWQYBCABKAkiQAoQRHJhaW5FdmVudHNS",
+            "ZXBseRIsCgZldmVudHMYASADKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14",
+            "RXZlbnQiNQocQWNrbm93bGVkZ2VBbGFybVJlcGx5UGF5bG9hZBIVCg1uYXRp",
+            "dmVfc3RhdHVzGAEgASgFIngKHVF1ZXJ5QWN0aXZlQWxhcm1zUmVwbHlQYXls",
+            "b2FkEjsKCXNuYXBzaG90cxgBIAMoCzIoLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "QWN0aXZlQWxhcm1TbmFwc2hvdBIaChJzbmFwc2hvdF90cnVuY2F0ZWQYAiAB",
+            "KAgijwgKB014RXZlbnQSMgoGZmFtaWx5GAEgASgOMiIubXhhY2Nlc3NfZ2F0",
+            "ZXdheS52MS5NeEV2ZW50RmFtaWx5EhIKCnNlc3Npb25faWQYAiABKAkSFQoN",
+            "c2VydmVyX2hhbmRsZRgDIAEoBRITCgtpdGVtX2hhbmRsZRgEIAEoBRIrCgV2",
+            "YWx1ZRgFIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIPCgdx",
+            "dWFsaXR5GAYgASgFEjQKEHNvdXJjZV90aW1lc3RhbXAYByABKAsyGi5nb29n",
+            "bGUucHJvdG9idWYuVGltZXN0YW1wEjQKCHN0YXR1c2VzGAggAygLMiIubXhh",
+            "Y2Nlc3NfZ2F0ZXdheS52MS5NeFN0YXR1c1Byb3h5EhcKD3dvcmtlcl9zZXF1",
+            "ZW5jZRgJIAEoBBI0ChB3b3JrZXJfdGltZXN0YW1wGAogASgLMhouZ29vZ2xl",
+            "LnByb3RvYnVmLlRpbWVzdGFtcBI9ChlnYXRld2F5X3JlY2VpdmVfdGltZXN0",
+            "YW1wGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgdocmVz",
+            "dWx0GAwgASgFSAGIAQESEgoKcmF3X3N0YXR1cxgNIAEoCRI3CgpyZXBsYXlf",
+            "Z2FwGA4gASgLMh4ubXhhY2Nlc3NfZ2F0ZXdheS52MS5SZXBsYXlHYXBIAogB",
+            "ARJACg5vbl9kYXRhX2NoYW5nZRgUIAEoCzImLm14YWNjZXNzX2dhdGV3YXku",
+            "djEuT25EYXRhQ2hhbmdlRXZlbnRIABJGChFvbl93cml0ZV9jb21wbGV0ZRgV",
+            "IAEoCzIpLm14YWNjZXNzX2dhdGV3YXkudjEuT25Xcml0ZUNvbXBsZXRlRXZl",
+            "bnRIABJJChJvcGVyYXRpb25fY29tcGxldGUYFiABKAsyKy5teGFjY2Vzc19n",
+            "YXRld2F5LnYxLk9wZXJhdGlvbkNvbXBsZXRlRXZlbnRIABJRChdvbl9idWZm",
+            "ZXJlZF9kYXRhX2NoYW5nZRgXIAEoCzIuLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "T25CdWZmZXJlZERhdGFDaGFuZ2VFdmVudEgAEkoKE29uX2FsYXJtX3RyYW5z",
+            "aXRpb24YGCABKAsyKy5teGFjY2Vzc19nYXRld2F5LnYxLk9uQWxhcm1UcmFu",
+            "c2l0aW9uRXZlbnRIABJeCh5vbl9hbGFybV9wcm92aWRlcl9tb2RlX2NoYW5n",
+            "ZWQYGSABKAsyNC5teGFjY2Vzc19nYXRld2F5LnYxLk9uQWxhcm1Qcm92aWRl",
+            "ck1vZGVDaGFuZ2VkRXZlbnRIAEIGCgRib2R5QgoKCF9ocmVzdWx0Qg0KC19y",
+            "ZXBsYXlfZ2FwIlAKCVJlcGxheUdhcBIgChhyZXF1ZXN0ZWRfYWZ0ZXJfc2Vx",
+            "dWVuY2UYASABKAQSIQoZb2xkZXN0X2F2YWlsYWJsZV9zZXF1ZW5jZRgCIAEo",
+            "BCITChFPbkRhdGFDaGFuZ2VFdmVudCIWChRPbldyaXRlQ29tcGxldGVFdmVu",
+            "dCIYChZPcGVyYXRpb25Db21wbGV0ZUV2ZW50ItQBChlPbkJ1ZmZlcmVkRGF0",
+            "YUNoYW5nZUV2ZW50EjIKCWRhdGFfdHlwZRgBIAEoDjIfLm14YWNjZXNzX2dh",
+            "dGV3YXkudjEuTXhEYXRhVHlwZRI0Cg5xdWFsaXR5X3ZhbHVlcxgCIAEoCzIc",
+            "Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhBcnJheRI2ChB0aW1lc3RhbXBfdmFs",
+            "dWVzGAMgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeEFycmF5EhUKDXJh",
+            "d19kYXRhX3R5cGUYBCABKAUi0AQKFk9uQWxhcm1UcmFuc2l0aW9uRXZlbnQS",
+            "HAoUYWxhcm1fZnVsbF9yZWZlcmVuY2UYASABKAkSHwoXc291cmNlX29iamVj",
+            "dF9yZWZlcmVuY2UYAiABKAkSFwoPYWxhcm1fdHlwZV9uYW1lGAMgASgJEkEK",
+            "D3RyYW5zaXRpb25fa2luZBgEIAEoDjIoLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "QWxhcm1UcmFuc2l0aW9uS2luZBIQCghzZXZlcml0eRgFIAEoBRI8Chhvcmln",
+            "aW5hbF9yYWlzZV90aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYu",
+            "VGltZXN0YW1wEjgKFHRyYW5zaXRpb25fdGltZXN0YW1wGAcgASgLMhouZ29v",
+            "Z2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1vcGVyYXRvcl91c2VyGAggASgJ",
+            "EhgKEG9wZXJhdG9yX2NvbW1lbnQYCSABKAkSEAoIY2F0ZWdvcnkYCiABKAkS",
+            "EwoLZGVzY3JpcHRpb24YCyABKAkSMwoNY3VycmVudF92YWx1ZRgMIAEoCzIc",
+            "Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIxCgtsaW1pdF92YWx1ZRgN",
+            "IAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIQCghkZWdyYWRl",
+            "ZBgOIAEoCBI/Cg9zb3VyY2VfcHJvdmlkZXIYDyABKA4yJi5teGFjY2Vzc19n",
+            "YXRld2F5LnYxLkFsYXJtUHJvdmlkZXJNb2RlIqABCh9PbkFsYXJtUHJvdmlk",
+            "ZXJNb2RlQ2hhbmdlZEV2ZW50EjQKBG1vZGUYASABKA4yJi5teGFjY2Vzc19n",
+            "YXRld2F5LnYxLkFsYXJtUHJvdmlkZXJNb2RlEg4KBnJlYXNvbhgCIAEoCRIP",
+            "CgdocmVzdWx0GAMgASgFEiYKAmF0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVm",
+            "LlRpbWVzdGFtcCLxBAoTQWN0aXZlQWxhcm1TbmFwc2hvdBIcChRhbGFybV9m",
+            "dWxsX3JlZmVyZW5jZRgBIAEoCRIfChdzb3VyY2Vfb2JqZWN0X3JlZmVyZW5j",
+            "ZRgCIAEoCRIXCg9hbGFybV90eXBlX25hbWUYAyABKAkSEAoIc2V2ZXJpdHkY",
+            "BCABKAUSPAoYb3JpZ2luYWxfcmFpc2VfdGltZXN0YW1wGAUgASgLMhouZ29v",
+            "Z2xlLnByb3RvYnVmLlRpbWVzdGFtcBI/Cg1jdXJyZW50X3N0YXRlGAYgASgO",
+            "MigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybUNvbmRpdGlvblN0YXRlEhAK",
+            "CGNhdGVnb3J5GAcgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEj0KGWxhc3Rf",
+            "dHJhbnNpdGlvbl90aW1lc3RhbXAYCSABKAsyGi5nb29nbGUucHJvdG9idWYu",
+            "VGltZXN0YW1wEhUKDW9wZXJhdG9yX3VzZXIYCiABKAkSGAoQb3BlcmF0b3Jf",
+            "Y29tbWVudBgLIAEoCRIzCg1jdXJyZW50X3ZhbHVlGAwgASgLMhwubXhhY2Nl",
+            "c3NfZ2F0ZXdheS52MS5NeFZhbHVlEjEKC2xpbWl0X3ZhbHVlGA0gASgLMhwu",
+            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEhAKCGRlZ3JhZGVkGA4gASgI",
+            "Ej8KD3NvdXJjZV9wcm92aWRlchgPIAEoDjImLm14YWNjZXNzX2dhdGV3YXku",
+            "djEuQWxhcm1Qcm92aWRlck1vZGUSHwoXZnJvbV90cnVuY2F0ZWRfc25hcHNo",
+            "b3QYECABKAgikAEKF0Fja25vd2xlZGdlQWxhcm1SZXF1ZXN0Eh0KFWNsaWVu",
+            "dF9jb3JyZWxhdGlvbl9pZBgCIAEoCRIcChRhbGFybV9mdWxsX3JlZmVyZW5j",
+            "ZRgDIAEoCRIPCgdjb21tZW50GAQgASgJEhUKDW9wZXJhdG9yX3VzZXIYBSAB",
+            "KAlKBAgBEAJSCnNlc3Npb25faWQi8QEKFUFja25vd2xlZGdlQWxhcm1SZXBs",
+            "eRIWCg5jb3JyZWxhdGlvbl9pZBgCIAEoCRI8Cg9wcm90b2NvbF9zdGF0dXMY",
+            "AyABKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLlByb3RvY29sU3RhdHVzEhQK",
+            "B2hyZXN1bHQYBCABKAVIAIgBARIyCgZzdGF0dXMYBSABKAsyIi5teGFjY2Vz",
+            "c19nYXRld2F5LnYxLk14U3RhdHVzUHJveHkSGgoSZGlhZ25vc3RpY19tZXNz",
+            "YWdlGAYgASgJQgoKCF9ocmVzdWx0SgQIARACUgpzZXNzaW9uX2lkIlEKE1N0",
+            "cmVhbUFsYXJtc1JlcXVlc3QSHQoVY2xpZW50X2NvcnJlbGF0aW9uX2lkGAEg",
+            "ASgJEhsKE2FsYXJtX2ZpbHRlcl9wcmVmaXgYAiABKAkiyQIKEEFsYXJtRmVl",
+            "ZE1lc3NhZ2USQAoMYWN0aXZlX2FsYXJtGAEgASgLMigubXhhY2Nlc3NfZ2F0",
+            "ZXdheS52MS5BY3RpdmVBbGFybVNuYXBzaG90SAASGwoRc25hcHNob3RfY29t",
+            "cGxldGUYAiABKAhIABJBCgp0cmFuc2l0aW9uGAMgASgLMisubXhhY2Nlc3Nf",
+            "Z2F0ZXdheS52MS5PbkFsYXJtVHJhbnNpdGlvbkV2ZW50SAASQwoPcHJvdmlk",
+            "ZXJfc3RhdHVzGAQgASgLMigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVBy",
+            "b3ZpZGVyU3RhdHVzSAASQwoPc25hcHNob3Rfc3RhdHVzGAUgASgLMigubXhh",
+            "Y2Nlc3NfZ2F0ZXdheS52MS5BbGFybVNuYXBzaG90U3RhdHVzSABCCQoHcGF5",
+            "bG9hZCKYAQoTQWxhcm1Qcm92aWRlclN0YXR1cxI0CgRtb2RlGAEgASgOMiYu",
+            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVByb3ZpZGVyTW9kZRIQCghkZWdy",
+            "YWRlZBgCIAEoCBIOCgZyZWFzb24YAyABKAkSKQoFc2luY2UYBCABKAsyGi5n",
+            "b29nbGUucHJvdG9idWYuVGltZXN0YW1wIigKE0FsYXJtU25hcHNob3RTdGF0",
+            "dXMSEQoJdHJ1bmNhdGVkGAEgASgIIusBCg1NeFN0YXR1c1Byb3h5Eg8KB3N1",
+            "Y2Nlc3MYASABKAUSNwoIY2F0ZWdvcnkYAiABKA4yJS5teGFjY2Vzc19nYXRl",
+            "d2F5LnYxLk14U3RhdHVzQ2F0ZWdvcnkSOAoLZGV0ZWN0ZWRfYnkYAyABKA4y",
+            "Iy5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVzU291cmNlEg4KBmRldGFp",
+            "bBgEIAEoBRIUCgxyYXdfY2F0ZWdvcnkYBSABKAUSFwoPcmF3X2RldGVjdGVk",
+            "X2J5GAYgASgFEhcKD2RpYWdub3N0aWNfdGV4dBgHIAEoCSLpAwoHTXhWYWx1",
+            "ZRIyCglkYXRhX3R5cGUYASABKA4yHy5teGFjY2Vzc19nYXRld2F5LnYxLk14",
+            "RGF0YVR5cGUSFAoMdmFyaWFudF90eXBlGAIgASgJEg8KB2lzX251bGwYAyAB",
+            "KAgSFgoOcmF3X2RpYWdub3N0aWMYBCABKAkSFQoNcmF3X2RhdGFfdHlwZRgF",
+            "IAEoBRIUCgpib29sX3ZhbHVlGAogASgISAASFQoLaW50MzJfdmFsdWUYCyAB",
+            "KAVIABIVCgtpbnQ2NF92YWx1ZRgMIAEoA0gAEhUKC2Zsb2F0X3ZhbHVlGA0g",
+            "ASgCSAASFgoMZG91YmxlX3ZhbHVlGA4gASgBSAASFgoMc3RyaW5nX3ZhbHVl",
+            "GA8gASgJSAASNQoPdGltZXN0YW1wX3ZhbHVlGBAgASgLMhouZ29vZ2xlLnBy",
+            "b3RvYnVmLlRpbWVzdGFtcEgAEjMKC2FycmF5X3ZhbHVlGBEgASgLMhwubXhh",
+            "Y2Nlc3NfZ2F0ZXdheS52MS5NeEFycmF5SAASEwoJcmF3X3ZhbHVlGBIgASgM",
+            "SAASQAoSc3BhcnNlX2FycmF5X3ZhbHVlGBMgASgLMiIubXhhY2Nlc3NfZ2F0",
+            "ZXdheS52MS5NeFNwYXJzZUFycmF5SABCBgoEa2luZCL+BAoHTXhBcnJheRI6",
+            "ChFlbGVtZW50X2RhdGFfdHlwZRgBIAEoDjIfLm14YWNjZXNzX2dhdGV3YXku",
+            "djEuTXhEYXRhVHlwZRIUCgx2YXJpYW50X3R5cGUYAiABKAkSEgoKZGltZW5z",
+            "aW9ucxgDIAMoDRIWCg5yYXdfZGlhZ25vc3RpYxgEIAEoCRIdChVyYXdfZWxl",
+            "bWVudF9kYXRhX3R5cGUYBSABKAUSNQoLYm9vbF92YWx1ZXMYCiABKAsyHi5t",
+            "eGFjY2Vzc19nYXRld2F5LnYxLkJvb2xBcnJheUgAEjcKDGludDMyX3ZhbHVl",
+            "cxgLIAEoCzIfLm14YWNjZXNzX2dhdGV3YXkudjEuSW50MzJBcnJheUgAEjcK",
+            "DGludDY0X3ZhbHVlcxgMIAEoCzIfLm14YWNjZXNzX2dhdGV3YXkudjEuSW50",
+            "NjRBcnJheUgAEjcKDGZsb2F0X3ZhbHVlcxgNIAEoCzIfLm14YWNjZXNzX2dh",
+            "dGV3YXkudjEuRmxvYXRBcnJheUgAEjkKDWRvdWJsZV92YWx1ZXMYDiABKAsy",
+            "IC5teGFjY2Vzc19nYXRld2F5LnYxLkRvdWJsZUFycmF5SAASOQoNc3RyaW5n",
+            "X3ZhbHVlcxgPIAEoCzIgLm14YWNjZXNzX2dhdGV3YXkudjEuU3RyaW5nQXJy",
+            "YXlIABI/ChB0aW1lc3RhbXBfdmFsdWVzGBAgASgLMiMubXhhY2Nlc3NfZ2F0",
+            "ZXdheS52MS5UaW1lc3RhbXBBcnJheUgAEjMKCnJhd192YWx1ZXMYESABKAsy",
+            "HS5teGFjY2Vzc19nYXRld2F5LnYxLlJhd0FycmF5SABCCAoGdmFsdWVzIpkB",
+            "Cg1NeFNwYXJzZUFycmF5EjoKEWVsZW1lbnRfZGF0YV90eXBlGAEgASgOMh8u",
+            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5NeERhdGFUeXBlEhQKDHRvdGFsX2xlbmd0",
+            "aBgCIAEoDRI2CghlbGVtZW50cxgDIAMoCzIkLm14YWNjZXNzX2dhdGV3YXku",
+            "djEuTXhTcGFyc2VFbGVtZW50Ik0KD014U3BhcnNlRWxlbWVudBINCgVpbmRl",
+            "eBgBIAEoDRIrCgV2YWx1ZRgCIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEu",
+            "TXhWYWx1ZSIbCglCb29sQXJyYXkSDgoGdmFsdWVzGAEgAygIIhwKCkludDMy",
+            "QXJyYXkSDgoGdmFsdWVzGAEgAygFIhwKCkludDY0QXJyYXkSDgoGdmFsdWVz",
+            "GAEgAygDIhwKCkZsb2F0QXJyYXkSDgoGdmFsdWVzGAEgAygCIh0KC0RvdWJs",
+            "ZUFycmF5Eg4KBnZhbHVlcxgBIAMoASIdCgtTdHJpbmdBcnJheRIOCgZ2YWx1",
+            "ZXMYASADKAkiPAoOVGltZXN0YW1wQXJyYXkSKgoGdmFsdWVzGAEgAygLMhou",
+            "Z29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIaCghSYXdBcnJheRIOCgZ2YWx1",
+            "ZXMYASADKAwiWAoOUHJvdG9jb2xTdGF0dXMSNQoEY29kZRgBIAEoDjInLm14",
+            "YWNjZXNzX2dhdGV3YXkudjEuUHJvdG9jb2xTdGF0dXNDb2RlEg8KB21lc3Nh",
+            "Z2UYAiABKAkqzAsKDU14Q29tbWFuZEtpbmQSHwobTVhfQ09NTUFORF9LSU5E",
+            "X1VOU1BFQ0lGSUVEEAASHAoYTVhfQ09NTUFORF9LSU5EX1JFR0lTVEVSEAES",
+            "HgoaTVhfQ09NTUFORF9LSU5EX1VOUkVHSVNURVIQAhIcChhNWF9DT01NQU5E",
+            "X0tJTkRfQUREX0lURU0QAxIdChlNWF9DT01NQU5EX0tJTkRfQUREX0lURU0y",
+            "EAQSHwobTVhfQ09NTUFORF9LSU5EX1JFTU9WRV9JVEVNEAUSGgoWTVhfQ09N",
+            "TUFORF9LSU5EX0FEVklTRRAGEh0KGU1YX0NPTU1BTkRfS0lORF9VTl9BRFZJ",
+            "U0UQBxImCiJNWF9DT01NQU5EX0tJTkRfQURWSVNFX1NVUEVSVklTT1JZEAgS",
+            "JQohTVhfQ09NTUFORF9LSU5EX0FERF9CVUZGRVJFRF9JVEVNEAkSMAosTVhf",
+            "Q09NTUFORF9LSU5EX1NFVF9CVUZGRVJFRF9VUERBVEVfSU5URVJWQUwQChIb",
+            "ChdNWF9DT01NQU5EX0tJTkRfU1VTUEVORBALEhwKGE1YX0NPTU1BTkRfS0lO",
+            "RF9BQ1RJVkFURRAMEhkKFU1YX0NPTU1BTkRfS0lORF9XUklURRANEhoKFk1Y",
+            "X0NPTU1BTkRfS0lORF9XUklURTIQDhIhCh1NWF9DT01NQU5EX0tJTkRfV1JJ",
+            "VEVfU0VDVVJFRBAPEiIKHk1YX0NPTU1BTkRfS0lORF9XUklURV9TRUNVUkVE",
+            "MhAQEiUKIU1YX0NPTU1BTkRfS0lORF9BVVRIRU5USUNBVEVfVVNFUhAREigK",
+            "JE1YX0NPTU1BTkRfS0lORF9BUkNIRVNUUkFfVVNFUl9UT19JRBASEiEKHU1Y",
+            "X0NPTU1BTkRfS0lORF9BRERfSVRFTV9CVUxLEBMSJAogTVhfQ09NTUFORF9L",
+            "SU5EX0FEVklTRV9JVEVNX0JVTEsQFBIkCiBNWF9DT01NQU5EX0tJTkRfUkVN",
+            "T1ZFX0lURU1fQlVMSxAVEicKI01YX0NPTU1BTkRfS0lORF9VTl9BRFZJU0Vf",
+            "SVRFTV9CVUxLEBYSIgoeTVhfQ09NTUFORF9LSU5EX1NVQlNDUklCRV9CVUxL",
+            "EBcSJAogTVhfQ09NTUFORF9LSU5EX1VOU1VCU0NSSUJFX0JVTEsQGBIkCiBN",
+            "WF9DT01NQU5EX0tJTkRfU1VCU0NSSUJFX0FMQVJNUxAZEiYKIk1YX0NPTU1B",
+            "TkRfS0lORF9VTlNVQlNDUklCRV9BTEFSTVMQGhIlCiFNWF9DT01NQU5EX0tJ",
+            "TkRfQUNLTk9XTEVER0VfQUxBUk0QGxInCiNNWF9DT01NQU5EX0tJTkRfUVVF",
+            "UllfQUNUSVZFX0FMQVJNUxAcEi0KKU1YX0NPTU1BTkRfS0lORF9BQ0tOT1dM",
+            "RURHRV9BTEFSTV9CWV9OQU1FEB0SHgoaTVhfQ09NTUFORF9LSU5EX1dSSVRF",
+            "X0JVTEsQHhIfChtNWF9DT01NQU5EX0tJTkRfV1JJVEUyX0JVTEsQHxImCiJN",
+            "WF9DT01NQU5EX0tJTkRfV1JJVEVfU0VDVVJFRF9CVUxLECASJwojTVhfQ09N",
+            "TUFORF9LSU5EX1dSSVRFX1NFQ1VSRUQyX0JVTEsQIRIdChlNWF9DT01NQU5E",
+            "X0tJTkRfUkVBRF9CVUxLECISKwonTVhfQ09NTUFORF9LSU5EX1VQREFURV9B",
+            "TEFSTV9XQVRDSF9MSVNUECMSGAoUTVhfQ09NTUFORF9LSU5EX1BJTkcQZBIl",
+            "CiFNWF9DT01NQU5EX0tJTkRfR0VUX1NFU1NJT05fU1RBVEUQZRIjCh9NWF9D",
+            "T01NQU5EX0tJTkRfR0VUX1dPUktFUl9JTkZPEGYSIAocTVhfQ09NTUFORF9L",
+            "SU5EX0RSQUlOX0VWRU5UUxBnEiMKH01YX0NPTU1BTkRfS0lORF9TSFVURE9X",
+            "Tl9XT1JLRVIQaCp6ChFBbGFybVByb3ZpZGVyTW9kZRIjCh9BTEFSTV9QUk9W",
+            "SURFUl9NT0RFX1VOU1BFQ0lGSUVEEAASIAocQUxBUk1fUFJPVklERVJfTU9E",
+            "RV9BTEFSTU1HUhABEh4KGkFMQVJNX1BST1ZJREVSX01PREVfU1VCVEFHEAIq",
+            "rQIKDU14RXZlbnRGYW1pbHkSHwobTVhfRVZFTlRfRkFNSUxZX1VOU1BFQ0lG",
+            "SUVEEAASIgoeTVhfRVZFTlRfRkFNSUxZX09OX0RBVEFfQ0hBTkdFEAESJQoh",
+            "TVhfRVZFTlRfRkFNSUxZX09OX1dSSVRFX0NPTVBMRVRFEAISJgoiTVhfRVZF",
+            "TlRfRkFNSUxZX09QRVJBVElPTl9DT01QTEVURRADEisKJ01YX0VWRU5UX0ZB",
+            "TUlMWV9PTl9CVUZGRVJFRF9EQVRBX0NIQU5HRRAEEicKI01YX0VWRU5UX0ZB",
+            "TUlMWV9PTl9BTEFSTV9UUkFOU0lUSU9OEAUSMgouTVhfRVZFTlRfRkFNSUxZ",
+            "X09OX0FMQVJNX1BST1ZJREVSX01PREVfQ0hBTkdFRBAGKsoBChNBbGFybVRy",
+            "YW5zaXRpb25LaW5kEiUKIUFMQVJNX1RSQU5TSVRJT05fS0lORF9VTlNQRUNJ",
+            "RklFRBAAEh8KG0FMQVJNX1RSQU5TSVRJT05fS0lORF9SQUlTRRABEiUKIUFM",
+            "QVJNX1RSQU5TSVRJT05fS0lORF9BQ0tOT1dMRURHRRACEh8KG0FMQVJNX1RS",
+            "QU5TSVRJT05fS0lORF9DTEVBUhADEiMKH0FMQVJNX1RSQU5TSVRJT05fS0lO",
+            "RF9SRVRSSUdHRVIQBCqqAQoTQWxhcm1Db25kaXRpb25TdGF0ZRIlCiFBTEFS",
+            "TV9DT05ESVRJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIgChxBTEFSTV9DT05E",
+            "SVRJT05fU1RBVEVfQUNUSVZFEAESJgoiQUxBUk1fQ09ORElUSU9OX1NUQVRF",
+            "X0FDVElWRV9BQ0tFRBACEiIKHkFMQVJNX0NPTkRJVElPTl9TVEFURV9JTkFD",
+            "VElWRRADKqUDChBNeFN0YXR1c0NhdGVnb3J5EiIKHk1YX1NUQVRVU19DQVRF",
+            "R09SWV9VTlNQRUNJRklFRBAAEh4KGk1YX1NUQVRVU19DQVRFR09SWV9VTktO",
+            "T1dOEAESGQoVTVhfU1RBVFVTX0NBVEVHT1JZX09LEAISHgoaTVhfU1RBVFVT",
+            "X0NBVEVHT1JZX1BFTkRJTkcQAxIeChpNWF9TVEFUVVNfQ0FURUdPUllfV0FS",
+            "TklORxAEEioKJk1YX1NUQVRVU19DQVRFR09SWV9DT01NVU5JQ0FUSU9OX0VS",
+            "Uk9SEAUSKgomTVhfU1RBVFVTX0NBVEVHT1JZX0NPTkZJR1VSQVRJT05fRVJS",
+            "T1IQBhIoCiRNWF9TVEFUVVNfQ0FURUdPUllfT1BFUkFUSU9OQUxfRVJST1IQ",
+            "BxIlCiFNWF9TVEFUVVNfQ0FURUdPUllfU0VDVVJJVFlfRVJST1IQCBIlCiFN",
+            "WF9TVEFUVVNfQ0FURUdPUllfU09GVFdBUkVfRVJST1IQCRIiCh5NWF9TVEFU",
+            "VVNfQ0FURUdPUllfT1RIRVJfRVJST1IQCirKAgoOTXhTdGF0dXNTb3VyY2US",
+            "IAocTVhfU1RBVFVTX1NPVVJDRV9VTlNQRUNJRklFRBAAEhwKGE1YX1NUQVRV",
+            "U19TT1VSQ0VfVU5LTk9XThABEiMKH01YX1NUQVRVU19TT1VSQ0VfUkVRVUVT",
+            "VElOR19MTVgQAhIjCh9NWF9TVEFUVVNfU09VUkNFX1JFU1BPTkRJTkdfTE1Y",
+            "EAMSIwofTVhfU1RBVFVTX1NPVVJDRV9SRVFVRVNUSU5HX05NWBAEEiMKH01Y",
+            "X1NUQVRVU19TT1VSQ0VfUkVTUE9ORElOR19OTVgQBRIxCi1NWF9TVEFUVVNf",
+            "U09VUkNFX1JFUVVFU1RJTkdfQVVUT01BVElPTl9PQkpFQ1QQBhIxCi1NWF9T",
+            "VEFUVVNfU09VUkNFX1JFU1BPTkRJTkdfQVVUT01BVElPTl9PQkpFQ1QQByrd",
+            "BAoKTXhEYXRhVHlwZRIcChhNWF9EQVRBX1RZUEVfVU5TUEVDSUZJRUQQABIY",
+            "ChRNWF9EQVRBX1RZUEVfVU5LTk9XThABEhgKFE1YX0RBVEFfVFlQRV9OT19E",
+            "QVRBEAISGAoUTVhfREFUQV9UWVBFX0JPT0xFQU4QAxIYChRNWF9EQVRBX1RZ",
+            "UEVfSU5URUdFUhAEEhYKEk1YX0RBVEFfVFlQRV9GTE9BVBAFEhcKE01YX0RB",
+            "VEFfVFlQRV9ET1VCTEUQBhIXChNNWF9EQVRBX1RZUEVfU1RSSU5HEAcSFQoR",
+            "TVhfREFUQV9UWVBFX1RJTUUQCBIdChlNWF9EQVRBX1RZUEVfRUxBUFNFRF9U",
+            "SU1FEAkSHwobTVhfREFUQV9UWVBFX1JFRkVSRU5DRV9UWVBFEAoSHAoYTVhf",
+            "REFUQV9UWVBFX1NUQVRVU19UWVBFEAsSFQoRTVhfREFUQV9UWVBFX0VOVU0Q",
+            "DBItCilNWF9EQVRBX1RZUEVfU0VDVVJJVFlfQ0xBU1NJRklDQVRJT05fRU5V",
+            "TRANEiIKHk1YX0RBVEFfVFlQRV9EQVRBX1FVQUxJVFlfVFlQRRAOEh8KG01Y",
+            "X0RBVEFfVFlQRV9RVUFMSUZJRURfRU5VTRAPEiEKHU1YX0RBVEFfVFlQRV9R",
+            "VUFMSUZJRURfU1RSVUNUEBASKQolTVhfREFUQV9UWVBFX0lOVEVSTkFUSU9O",
+            "QUxJWkVEX1NUUklORxAREhsKF01YX0RBVEFfVFlQRV9CSUdfU1RSSU5HEBIS",
+            "FAoQTVhfREFUQV9UWVBFX0VORBATKqMDChJQcm90b2NvbFN0YXR1c0NvZGUS",
+            "JAogUFJPVE9DT0xfU1RBVFVTX0NPREVfVU5TUEVDSUZJRUQQABIbChdQUk9U",
+            "T0NPTF9TVEFUVVNfQ09ERV9PSxABEigKJFBST1RPQ09MX1NUQVRVU19DT0RF",
+            "X0lOVkFMSURfUkVRVUVTVBACEioKJlBST1RPQ09MX1NUQVRVU19DT0RFX1NF",
+            "U1NJT05fTk9UX0ZPVU5EEAMSKgomUFJPVE9DT0xfU1RBVFVTX0NPREVfU0VT",
+            "U0lPTl9OT1RfUkVBRFkQBBIrCidQUk9UT0NPTF9TVEFUVVNfQ09ERV9XT1JL",
+            "RVJfVU5BVkFJTEFCTEUQBRIgChxQUk9UT0NPTF9TVEFUVVNfQ09ERV9USU1F",
+            "T1VUEAYSIQodUFJPVE9DT0xfU1RBVFVTX0NPREVfQ0FOQ0VMRUQQBxIrCidQ",
+            "Uk9UT0NPTF9TVEFUVVNfQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04QCBIpCiVQ",
+            "Uk9UT0NPTF9TVEFUVVNfQ09ERV9NWEFDQ0VTU19GQUlMVVJFEAkqvwIKDFNl",
+            "c3Npb25TdGF0ZRIdChlTRVNTSU9OX1NUQVRFX1VOU1BFQ0lGSUVEEAASGgoW",
+            "U0VTU0lPTl9TVEFURV9DUkVBVElORxABEiEKHVNFU1NJT05fU1RBVEVfU1RB",
+            "UlRJTkdfV09SS0VSEAISIgoeU0VTU0lPTl9TVEFURV9XQUlUSU5HX0ZPUl9Q",
+            "SVBFEAMSHQoZU0VTU0lPTl9TVEFURV9IQU5EU0hBS0lORxAEEiUKIVNFU1NJ",
+            "T05fU1RBVEVfSU5JVElBTElaSU5HX1dPUktFUhAFEhcKE1NFU1NJT05fU1RB",
+            "VEVfUkVBRFkQBhIZChVTRVNTSU9OX1NUQVRFX0NMT1NJTkcQBxIYChRTRVNT",
+            "SU9OX1NUQVRFX0NMT1NFRBAIEhkKFVNFU1NJT05fU1RBVEVfRkFVTFRFRBAJ",
+            "MsMFCg9NeEFjY2Vzc0dhdGV3YXkSXQoLT3BlblNlc3Npb24SJy5teGFjY2Vz",
+            "c19nYXRld2F5LnYxLk9wZW5TZXNzaW9uUmVxdWVzdBolLm14YWNjZXNzX2dh",
+            "dGV3YXkudjEuT3BlblNlc3Npb25SZXBseRJgCgxDbG9zZVNlc3Npb24SKC5t",
+            "eGFjY2Vzc19nYXRld2F5LnYxLkNsb3NlU2Vzc2lvblJlcXVlc3QaJi5teGFj",
+            "Y2Vzc19nYXRld2F5LnYxLkNsb3NlU2Vzc2lvblJlcGx5ElQKBkludm9rZRIl",
+            "Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhDb21tYW5kUmVxdWVzdBojLm14YWNj",
+            "ZXNzX2dhdGV3YXkudjEuTXhDb21tYW5kUmVwbHkSWAoMU3RyZWFtRXZlbnRz",
+            "EigubXhhY2Nlc3NfZ2F0ZXdheS52MS5TdHJlYW1FdmVudHNSZXF1ZXN0Ghwu",
+            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5NeEV2ZW50MAESbAoQQWNrbm93bGVkZ2VB",
+            "bGFybRIsLm14YWNjZXNzX2dhdGV3YXkudjEuQWNrbm93bGVkZ2VBbGFybVJl",
+            "cXVlc3QaKi5teGFjY2Vzc19nYXRld2F5LnYxLkFja25vd2xlZGdlQWxhcm1S",
+            "ZXBseRJhCgxTdHJlYW1BbGFybXMSKC5teGFjY2Vzc19nYXRld2F5LnYxLlN0",
+            "cmVhbUFsYXJtc1JlcXVlc3QaJS5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJt",
+            "RmVlZE1lc3NhZ2UwARJuChFRdWVyeUFjdGl2ZUFsYXJtcxItLm14YWNjZXNz",
+            "X2dhdGV3YXkudjEuUXVlcnlBY3RpdmVBbGFybXNSZXF1ZXN0GigubXhhY2Nl",
+            "c3NfZ2F0ZXdheS52MS5BY3RpdmVBbGFybVNuYXBzaG90MAFCJqoCI1pCLk1P",
+            "TS5XVy5NeEdhdGV3YXkuQ29udHJhY3RzLlByb3RvYgZwcm90bzM="));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, },
           new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState), }, null, new pbr::GeneratedClrTypeInfo[] {
@@ -541,7 +546,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.CloseSessionReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.CloseSessionReply.Parser, new[]{ "SessionId", "FinalState", "ProtocolStatus" }, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.StreamEventsRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.StreamEventsRequest.Parser, new[]{ "SessionId", "AfterWorkerSequence" }, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandRequest.Parser, new[]{ "SessionId", "ClientCorrelationId", "Command" }, null, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand.Parser, new[]{ "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker" }, new[]{ "Payload" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand.Parser, new[]{ "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "UpdateAlarmWatchList", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker" }, new[]{ "Payload" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand.Parser, new[]{ "ClientName" }, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand.Parser, new[]{ "ServerHandle" }, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand.Parser, new[]{ "ServerHandle", "ItemDefinition" }, null, null, null, null),
@@ -565,7 +570,8 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand.Parser, new[]{ "ServerHandle", "ItemHandles" }, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand.Parser, new[]{ "ServerHandle", "ItemHandles" }, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand.Parser, new[]{ "ServerHandle", "TagAddresses" }, null, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand.Parser, new[]{ "SubscriptionExpression", "ForcedMode", "WatchList", "Failover" }, null, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand.Parser, new[]{ "SubscriptionExpression", "ForcedMode", "WatchList", "Failover", "FallbackEnabled" }, null, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand.Parser, new[]{ "WatchList" }, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand.Parser, null, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget.Parser, new[]{ "AlarmFullReference", "SourceObjectReference", "ActiveSubtag", "AckedSubtag", "AckCommentSubtag", "PrioritySubtag" }, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig.Parser, new[]{ "ConsecutiveFailureThreshold", "FailbackProbeIntervalSeconds", "FailbackStableProbes" }, null, null, null, null),
@@ -678,6 +684,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [pbr::OriginalName("MX_COMMAND_KIND_WRITE_SECURED_BULK")] WriteSecuredBulk = 32,
     [pbr::OriginalName("MX_COMMAND_KIND_WRITE_SECURED2_BULK")] WriteSecured2Bulk = 33,
     [pbr::OriginalName("MX_COMMAND_KIND_READ_BULK")] ReadBulk = 34,
+    [pbr::OriginalName("MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST")] UpdateAlarmWatchList = 35,
     [pbr::OriginalName("MX_COMMAND_KIND_PING")] Ping = 100,
     [pbr::OriginalName("MX_COMMAND_KIND_GET_SESSION_STATE")] GetSessionState = 101,
     [pbr::OriginalName("MX_COMMAND_KIND_GET_WORKER_INFO")] GetWorkerInfo = 102,
@@ -3044,6 +3051,9 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
         case PayloadOneofCase.ReadBulk:
           ReadBulk = other.ReadBulk.Clone();
           break;
+        case PayloadOneofCase.UpdateAlarmWatchList:
+          UpdateAlarmWatchList = other.UpdateAlarmWatchList.Clone();
+          break;
         case PayloadOneofCase.Ping:
           Ping = other.Ping.Clone();
           break;
@@ -3490,6 +3500,18 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       }
     }
 
+    /// Field number for the "update_alarm_watch_list" field.
+    public const int UpdateAlarmWatchListFieldNumber = 44;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand UpdateAlarmWatchList {
+      get { return payloadCase_ == PayloadOneofCase.UpdateAlarmWatchList ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand) payload_ : null; }
+      set {
+        payload_ = value;
+        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.UpdateAlarmWatchList;
+      }
+    }
+
     /// Field number for the "ping" field.
     public const int PingFieldNumber = 100;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -3588,6 +3610,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       WriteSecuredBulk = 41,
       WriteSecured2Bulk = 42,
       ReadBulk = 43,
+      UpdateAlarmWatchList = 44,
       Ping = 100,
       GetSessionState = 101,
       GetWorkerInfo = 102,
@@ -3658,6 +3681,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       if (!object.Equals(WriteSecuredBulk, other.WriteSecuredBulk)) return false;
       if (!object.Equals(WriteSecured2Bulk, other.WriteSecured2Bulk)) return false;
       if (!object.Equals(ReadBulk, other.ReadBulk)) return false;
+      if (!object.Equals(UpdateAlarmWatchList, other.UpdateAlarmWatchList)) return false;
       if (!object.Equals(Ping, other.Ping)) return false;
       if (!object.Equals(GetSessionState, other.GetSessionState)) return false;
       if (!object.Equals(GetWorkerInfo, other.GetWorkerInfo)) return false;
@@ -3706,6 +3730,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) hash ^= WriteSecuredBulk.GetHashCode();
       if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) hash ^= WriteSecured2Bulk.GetHashCode();
       if (payloadCase_ == PayloadOneofCase.ReadBulk) hash ^= ReadBulk.GetHashCode();
+      if (payloadCase_ == PayloadOneofCase.UpdateAlarmWatchList) hash ^= UpdateAlarmWatchList.GetHashCode();
       if (payloadCase_ == PayloadOneofCase.Ping) hash ^= Ping.GetHashCode();
       if (payloadCase_ == PayloadOneofCase.GetSessionState) hash ^= GetSessionState.GetHashCode();
       if (payloadCase_ == PayloadOneofCase.GetWorkerInfo) hash ^= GetWorkerInfo.GetHashCode();
@@ -3870,6 +3895,10 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
         output.WriteRawTag(218, 2);
         output.WriteMessage(ReadBulk);
       }
+      if (payloadCase_ == PayloadOneofCase.UpdateAlarmWatchList) {
+        output.WriteRawTag(226, 2);
+        output.WriteMessage(UpdateAlarmWatchList);
+      }
       if (payloadCase_ == PayloadOneofCase.Ping) {
         output.WriteRawTag(162, 6);
         output.WriteMessage(Ping);
@@ -4040,6 +4069,10 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
         output.WriteRawTag(218, 2);
         output.WriteMessage(ReadBulk);
       }
+      if (payloadCase_ == PayloadOneofCase.UpdateAlarmWatchList) {
+        output.WriteRawTag(226, 2);
+        output.WriteMessage(UpdateAlarmWatchList);
+      }
       if (payloadCase_ == PayloadOneofCase.Ping) {
         output.WriteRawTag(162, 6);
         output.WriteMessage(Ping);
@@ -4175,6 +4208,9 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       if (payloadCase_ == PayloadOneofCase.ReadBulk) {
         size += 2 + pb::CodedOutputStream.ComputeMessageSize(ReadBulk);
       }
+      if (payloadCase_ == PayloadOneofCase.UpdateAlarmWatchList) {
+        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UpdateAlarmWatchList);
+      }
       if (payloadCase_ == PayloadOneofCase.Ping) {
         size += 2 + pb::CodedOutputStream.ComputeMessageSize(Ping);
       }
@@ -4410,6 +4446,12 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
           }
           ReadBulk.MergeFrom(other.ReadBulk);
           break;
+        case PayloadOneofCase.UpdateAlarmWatchList:
+          if (UpdateAlarmWatchList == null) {
+            UpdateAlarmWatchList = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand();
+          }
+          UpdateAlarmWatchList.MergeFrom(other.UpdateAlarmWatchList);
+          break;
         case PayloadOneofCase.Ping:
           if (Ping == null) {
             Ping = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand();
@@ -4771,6 +4813,15 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
             ReadBulk = subBuilder;
             break;
           }
+          case 354: {
+            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand();
+            if (payloadCase_ == PayloadOneofCase.UpdateAlarmWatchList) {
+              subBuilder.MergeFrom(UpdateAlarmWatchList);
+            }
+            input.ReadMessage(subBuilder);
+            UpdateAlarmWatchList = subBuilder;
+            break;
+          }
           case 802: {
             global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand();
             if (payloadCase_ == PayloadOneofCase.Ping) {
@@ -5145,6 +5196,15 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
             ReadBulk = subBuilder;
             break;
           }
+          case 354: {
+            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UpdateAlarmWatchListCommand();
+            if (payloadCase_ == PayloadOneofCase.UpdateAlarmWatchList) {
+              subBuilder.MergeFrom(UpdateAlarmWatchList);
+            }
+            input.ReadMessage(subBuilder);
+            UpdateAlarmWatchList = subBuilder;
+            break;
+          }
           case 802: {
             global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand();
             if (payloadCase_ == PayloadOneofCase.Ping) {
@@ -11123,8 +11183,8 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
   /// Subscription expression follows the canonical
   /// `\\<machine>\Galaxy!<area>` format (literal "Galaxy" provider). The
   /// worker spins up a wnwrapConsumer-backed subscription on its STA on
-  /// first call; subsequent calls are an error (use UnsubscribeAlarms then
-  /// SubscribeAlarms to reconfigure).
+  /// first call; subsequent calls are an error. Use UpdateAlarmWatchList to
+  /// replace the standby targets without restarting the primary subscription.
   /// 
   [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
   public sealed partial class SubscribeAlarmsCommand : pb::IMessage
@@ -11165,6 +11225,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       forcedMode_ = other.forcedMode_;
       watchList_ = other.watchList_.Clone();
       failover_ = other.failover_ != null ? other.failover_.Clone() : null;
+      fallbackEnabled_ = other.fallbackEnabled_;
       _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
     }
 
@@ -11228,6 +11289,23 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       }
     }
 
+    /// Field number for the "fallback_enabled" field.
+    public const int FallbackEnabledFieldNumber = 5;
+    private bool fallbackEnabled_;
+    /// 
+    /// True when auto mode should retain subtag-fallback capability even if the
+    /// gateway's initial discovery produced an empty watch list. False leaves an
+    /// empty list as an intentional alarm-manager-only subscription.
+    /// 
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public bool FallbackEnabled {
+      get { return fallbackEnabled_; }
+      set {
+        fallbackEnabled_ = value;
+      }
+    }
+
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public override bool Equals(object other) {
@@ -11247,6 +11325,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       if (ForcedMode != other.ForcedMode) return false;
       if(!watchList_.Equals(other.watchList_)) return false;
       if (!object.Equals(Failover, other.Failover)) return false;
+      if (FallbackEnabled != other.FallbackEnabled) return false;
       return Equals(_unknownFields, other._unknownFields);
     }
 
@@ -11258,6 +11337,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       if (ForcedMode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) hash ^= ForcedMode.GetHashCode();
       hash ^= watchList_.GetHashCode();
       if (failover_ != null) hash ^= Failover.GetHashCode();
+      if (FallbackEnabled != false) hash ^= FallbackEnabled.GetHashCode();
       if (_unknownFields != null) {
         hash ^= _unknownFields.GetHashCode();
       }
@@ -11289,6 +11369,10 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
         output.WriteRawTag(34);
         output.WriteMessage(Failover);
       }
+      if (FallbackEnabled != false) {
+        output.WriteRawTag(40);
+        output.WriteBool(FallbackEnabled);
+      }
       if (_unknownFields != null) {
         _unknownFields.WriteTo(output);
       }
@@ -11312,6 +11396,10 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
         output.WriteRawTag(34);
         output.WriteMessage(Failover);
       }
+      if (FallbackEnabled != false) {
+        output.WriteRawTag(40);
+        output.WriteBool(FallbackEnabled);
+      }
       if (_unknownFields != null) {
         _unknownFields.WriteTo(ref output);
       }
@@ -11332,6 +11420,9 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
       if (failover_ != null) {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Failover);
       }
+      if (FallbackEnabled != false) {
+        size += 1 + 1;
+      }
       if (_unknownFields != null) {
         size += _unknownFields.CalculateSize();
       }
@@ -11357,6 +11448,9 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
         }
         Failover.MergeFrom(other.Failover);
       }
+      if (other.FallbackEnabled != false) {
+        FallbackEnabled = other.FallbackEnabled;
+      }
       _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
     }
 
@@ -11395,6 +11489,10 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
             input.ReadMessage(Failover);
             break;
           }
+          case 40: {
+            FallbackEnabled = input.ReadBool();
+            break;
+          }
         }
       }
     #endif
@@ -11433,6 +11531,202 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
             input.ReadMessage(Failover);
             break;
           }
+          case 40: {
+            FallbackEnabled = input.ReadBool();
+            break;
+          }
+        }
+      }
+    }
+    #endif
+
+  }
+
+  /// 
+  /// Replace the live alarm subscription's subtag standby targets. The worker
+  /// constructs and attaches the replacement before swapping it into service, so
+  /// a setup failure leaves the existing standby and active provider unchanged.
+  /// 
+  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+  public sealed partial class UpdateAlarmWatchListCommand : pb::IMessage
+  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+      , pb::IBufferMessage
+  #endif
+  {
+    private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UpdateAlarmWatchListCommand());
+    private pb::UnknownFieldSet _unknownFields;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public static pb::MessageParser Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[32]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public UpdateAlarmWatchListCommand() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public UpdateAlarmWatchListCommand(UpdateAlarmWatchListCommand other) : this() {
+      watchList_ = other.watchList_.Clone();
+      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public UpdateAlarmWatchListCommand Clone() {
+      return new UpdateAlarmWatchListCommand(this);
+    }
+
+    /// Field number for the "watch_list" field.
+    public const int WatchListFieldNumber = 1;
+    private static readonly pb::FieldCodec _repeated_watchList_codec
+        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget.Parser);
+    private readonly pbc::RepeatedField watchList_ = new pbc::RepeatedField();
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public pbc::RepeatedField WatchList {
+      get { return watchList_; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public override bool Equals(object other) {
+      return Equals(other as UpdateAlarmWatchListCommand);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public bool Equals(UpdateAlarmWatchListCommand other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!watchList_.Equals(other.watchList_)) return false;
+      return Equals(_unknownFields, other._unknownFields);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= watchList_.GetHashCode();
+      if (_unknownFields != null) {
+        hash ^= _unknownFields.GetHashCode();
+      }
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public void WriteTo(pb::CodedOutputStream output) {
+    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+      output.WriteRawMessage(this);
+    #else
+      watchList_.WriteTo(output, _repeated_watchList_codec);
+      if (_unknownFields != null) {
+        _unknownFields.WriteTo(output);
+      }
+    #endif
+    }
+
+    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+      watchList_.WriteTo(ref output, _repeated_watchList_codec);
+      if (_unknownFields != null) {
+        _unknownFields.WriteTo(ref output);
+      }
+    }
+    #endif
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public int CalculateSize() {
+      int size = 0;
+      size += watchList_.CalculateSize(_repeated_watchList_codec);
+      if (_unknownFields != null) {
+        size += _unknownFields.CalculateSize();
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public void MergeFrom(UpdateAlarmWatchListCommand other) {
+      if (other == null) {
+        return;
+      }
+      watchList_.Add(other.watchList_);
+      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    public void MergeFrom(pb::CodedInputStream input) {
+    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+      input.ReadRawMessage(this);
+    #else
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+      if ((tag & 7) == 4) {
+        // Abort on any end group tag.
+        return;
+      }
+      switch(tag) {
+          default:
+            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+            break;
+          case 10: {
+            watchList_.AddEntriesFrom(input, _repeated_watchList_codec);
+            break;
+          }
+        }
+      }
+    #endif
+    }
+
+    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+      if ((tag & 7) == 4) {
+        // Abort on any end group tag.
+        return;
+      }
+      switch(tag) {
+          default:
+            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+            break;
+          case 10: {
+            watchList_.AddEntriesFrom(ref input, _repeated_watchList_codec);
+            break;
+          }
         }
       }
     }
@@ -11459,7 +11753,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[32]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[33]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -11624,7 +11918,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[33]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[34]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -12025,7 +12319,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[34]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[35]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -12312,7 +12606,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[35]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[36]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -12703,7 +12997,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[36]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[37]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -12908,7 +13202,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[37]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[38]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -13376,7 +13670,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[38]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[39]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -13608,7 +13902,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[39]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[40]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -13832,7 +14126,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[40]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[41]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -14116,7 +14410,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[41]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[42]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -14340,7 +14634,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[42]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[43]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -14673,7 +14967,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[43]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[44]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -14897,7 +15191,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[44]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[45]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -15223,7 +15517,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[45]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[46]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -15447,7 +15741,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[46]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[47]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -15830,7 +16124,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[47]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[48]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -16091,7 +16385,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[48]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[49]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -16289,7 +16583,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[49]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[50]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -16450,7 +16744,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[50]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[51]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -16611,7 +16905,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[51]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[52]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -16809,7 +17103,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[52]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[53]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -17017,7 +17311,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[53]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[54]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -17230,11 +17524,14 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     /// 
     /// Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
     /// WRITE_SECURED2 replies the worker holds the reply for a bounded window
-    /// (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+    /// (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
     /// the matching MXAccess OnWriteComplete callback and copies its status rows
     /// here, so statuses[0] carries the real MXAccess commit outcome (success OR
     /// failure) while protocol_status/hresult still describe command acceptance
-    /// only. Empty statuses on a write reply means the completion did not arrive
+    /// only. Callback correlation is recency-based per item handle: after the
+    /// bounded wait, a sequential write's callback supersedes a timed-out
+    /// predecessor, and a later stale callback for that predecessor is ignored.
+    /// Empty statuses on a write reply means the completion did not arrive
     /// within the window — the write is unconfirmed, not failed. Correlation is
     /// best-effort per (server_handle, item_handle): MXAccess's callback carries
     /// no transaction id, so concurrent writes to the same item within the
@@ -18827,7 +19124,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[54]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[55]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -19025,7 +19322,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[55]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[56]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -19223,7 +19520,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[56]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[57]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -19421,7 +19718,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[57]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[58]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -19619,7 +19916,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[58]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[59]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -19826,7 +20123,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[59]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[60]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -20033,7 +20330,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[60]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[61]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -20231,7 +20528,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[61]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[62]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -20429,7 +20726,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[62]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[63]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -20775,7 +21072,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[63]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[64]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -20972,7 +21269,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[64]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[65]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -21360,7 +21657,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[65]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[66]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -21567,7 +21864,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[66]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[67]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -22105,7 +22402,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[67]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[68]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -22292,7 +22589,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[68]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[69]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -22490,7 +22787,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[69]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[70]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -22799,7 +23096,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[70]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[71]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -23004,7 +23301,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[71]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[72]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -23208,7 +23505,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[72]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[73]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -23441,7 +23738,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[73]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[74]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -24540,7 +24837,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[74]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[75]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -24794,7 +25091,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[75]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[76]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -24955,7 +25252,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[76]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[77]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -25116,7 +25413,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[77]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[78]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -25277,7 +25574,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[78]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[79]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -25610,7 +25907,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[79]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[80]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -26422,7 +26719,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[80]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[81]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -26747,7 +27044,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[81]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[82]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -27570,7 +27867,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[82]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[83]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -27890,7 +28187,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[83]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[84]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -28288,7 +28585,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[84]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[85]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -28536,7 +28833,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[85]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[86]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -29009,7 +29306,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[86]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[87]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -29344,7 +29641,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[87]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[88]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -29548,7 +29845,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[88]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[89]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -29979,7 +30276,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[89]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[90]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -30889,7 +31186,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[90]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[91]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -31683,7 +31980,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[91]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[92]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -31944,7 +32241,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[92]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[93]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -32191,7 +32488,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[93]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[94]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -32380,7 +32677,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[94]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[95]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -32569,7 +32866,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[95]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[96]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -32758,7 +33055,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[96]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[97]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -32947,7 +33244,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[97]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[98]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -33136,7 +33433,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[98]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[99]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -33323,7 +33620,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[99]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[100]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -33510,7 +33807,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[100]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[101]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -33697,7 +33994,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[101]; }
+      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[102]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
diff --git a/src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto b/src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto
index daa3e8d..6b00da9 100644
--- a/src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto
+++ b/src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto
@@ -130,6 +130,7 @@ message MxCommand {
     WriteSecuredBulkCommand write_secured_bulk = 41;
     WriteSecured2BulkCommand write_secured2_bulk = 42;
     ReadBulkCommand read_bulk = 43;
+    UpdateAlarmWatchListCommand update_alarm_watch_list = 44;
     PingCommand ping = 100;
     GetSessionStateCommand get_session_state = 101;
     GetWorkerInfoCommand get_worker_info = 102;
@@ -174,6 +175,7 @@ enum MxCommandKind {
   MX_COMMAND_KIND_WRITE_SECURED_BULK = 32;
   MX_COMMAND_KIND_WRITE_SECURED2_BULK = 33;
   MX_COMMAND_KIND_READ_BULK = 34;
+  MX_COMMAND_KIND_UPDATE_ALARM_WATCH_LIST = 35;
   MX_COMMAND_KIND_PING = 100;
   MX_COMMAND_KIND_GET_SESSION_STATE = 101;
   MX_COMMAND_KIND_GET_WORKER_INFO = 102;
@@ -344,8 +346,8 @@ enum AlarmProviderMode {
 // Subscription expression follows the canonical
 // `\\\Galaxy!` format (literal "Galaxy" provider). The
 // worker spins up a wnwrapConsumer-backed subscription on its STA on
-// first call; subsequent calls are an error (use UnsubscribeAlarms then
-// SubscribeAlarms to reconfigure).
+// first call; subsequent calls are an error. Use UpdateAlarmWatchList to
+// replace the standby targets without restarting the primary subscription.
 message SubscribeAlarmsCommand {
   string subscription_expression = 1;
   // UNSPECIFIED = auto-failover/failback. ALARMMGR/SUBTAG force one provider.
@@ -354,6 +356,17 @@ message SubscribeAlarmsCommand {
   // alarmmgr mode; in subtag mode it bounds what the consumer can observe.
   repeated AlarmSubtagTarget watch_list = 3;
   AlarmFailoverConfig failover = 4;
+  // True when auto mode should retain subtag-fallback capability even if the
+  // gateway's initial discovery produced an empty watch list. False leaves an
+  // empty list as an intentional alarm-manager-only subscription.
+  bool fallback_enabled = 5;
+}
+
+// Replace the live alarm subscription's subtag standby targets. The worker
+// constructs and attaches the replacement before swapping it into service, so
+// a setup failure leaves the existing standby and active provider unchanged.
+message UpdateAlarmWatchListCommand {
+  repeated AlarmSubtagTarget watch_list = 1;
 }
 
 // Tear down the worker's alarm consumer. No-op if no subscription is
@@ -537,11 +550,14 @@ message MxCommandReply {
   MxValue return_value = 6;
   // Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
   // WRITE_SECURED2 replies the worker holds the reply for a bounded window
-  // (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
+  // (default 1.5 s, MxGateway:Worker:WriteCompletionWaitMilliseconds) waiting for
   // the matching MXAccess OnWriteComplete callback and copies its status rows
   // here, so statuses[0] carries the real MXAccess commit outcome (success OR
   // failure) while protocol_status/hresult still describe command acceptance
-  // only. Empty statuses on a write reply means the completion did not arrive
+  // only. Callback correlation is recency-based per item handle: after the
+  // bounded wait, a sequential write's callback supersedes a timed-out
+  // predecessor, and a later stale callback for that predecessor is ignored.
+  // Empty statuses on a write reply means the completion did not arrive
   // within the window — the write is unconfirmed, not failed. Correlation is
   // best-effort per (server_handle, item_handle): MXAccess's callback carries
   // no transaction id, so concurrent writes to the same item within the
diff --git a/src/ZB.MOM.WW.MxGateway.Server/Alarms/GatewayAlarmMonitor.cs b/src/ZB.MOM.WW.MxGateway.Server/Alarms/GatewayAlarmMonitor.cs
index 5b238c3..55ee66b 100644
--- a/src/ZB.MOM.WW.MxGateway.Server/Alarms/GatewayAlarmMonitor.cs
+++ b/src/ZB.MOM.WW.MxGateway.Server/Alarms/GatewayAlarmMonitor.cs
@@ -66,9 +66,10 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
     private bool _subtagCoverageMissing;
     private string _subtagCoverageReason = string.Empty;
 
-    // The watch-list references actually sent to the worker in SubscribeAlarms, guarded by _sync.
-    // The worker holds that list for the life of the subscription, so a later re-resolution is
-    // compared against this to report drift rather than silently diverging.
+    // The full canonical watch-list fingerprint acknowledged by the worker and its alarm
+    // references, guarded by _sync. The fingerprint advances only after an OK subscribe/update
+    // reply, so a rejected replacement remains material and is retried on the next refresh edge.
+    private string _acknowledgedWatchListFingerprint = string.Empty;
     private IReadOnlyCollection _sentWatchListReferences = [];
 
     // Whether the worker's most recent reconcile fetch was capped, guarded by _sync.
@@ -356,9 +357,6 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
         // feed subscribers outlive the monitor's worker session and may already be attached.
         lock (_sync)
         {
-            _sentWatchListReferences = watchList
-                .Select(target => target.AlarmFullReference)
-                .ToHashSet(StringComparer.OrdinalIgnoreCase);
             SetSubtagCoverage(GradeSubtagCoverage(forcedMode, resolution, staleAgainstSent: false), broadcast: true);
         }
 
@@ -374,6 +372,7 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
         {
             SubscriptionExpression = subscription,
             ForcedMode = forcedMode,
+            FallbackEnabled = CanUseSubtagFallback(forcedMode),
             Failover = new AlarmFailoverConfig
             {
                 ConsecutiveFailureThreshold = _options.Fallback.ConsecutiveFailureThreshold,
@@ -404,6 +403,11 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
                 ?? $"status {code}";
             throw new InvalidOperationException($"Worker rejected SubscribeAlarms: {diagnostic}");
         }
+
+        lock (_sync)
+        {
+            AcknowledgeWatchList(watchList);
+        }
     }
 
     private async Task ReconcileLoopAsync(string sessionId, CancellationToken cancellationToken)
@@ -416,6 +420,8 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
             {
                 try
                 {
+                    await RefreshAlarmWatchListAsync(sessionId, broadcast: true, cancellationToken)
+                        .ConfigureAwait(false);
                     await ReconcileAsync(sessionId, cancellationToken).ConfigureAwait(false);
                 }
                 catch (OperationCanceledException)
@@ -545,18 +551,14 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
         AlarmProviderMode toMode = change.Mode;
         string reason = change.Reason ?? string.Empty;
 
-        // GWC-37: this is the moment the subtag watch-list stops being theoretical — the provider
-        // that is about to serve is the one built from it. Re-resolve BEFORE the status is
-        // published so the frame the operator sees on the failover carries the coverage verdict
-        // rather than a second frame later, and so a watch-list that has drifted since
-        // SubscribeAlarms is reported instead of silently diverging. The re-resolution is NOT
-        // re-sent: the worker rejects a second SubscribeAlarms while subscribed, and the only way
-        // to replace the list — Unsubscribe then Subscribe — rebuilds the FailoverAlarmConsumer,
-        // which restarts on the primary that just failed and discards the warm standby state, so
-        // it would flap the feed rather than repair it. A monitor restart re-resolves and re-sends.
+        // The failover edge is the moment the subtag watch-list stops being theoretical. Refresh
+        // it before publishing the status frame so recovered discovery is applied to the already
+        // active standby and the operator sees the acknowledged coverage verdict atomically with
+        // the provider switch.
         if (toMode == AlarmProviderMode.Subtag)
         {
-            await RefreshSubtagCoverageAsync(cancellationToken).ConfigureAwait(false);
+            await RefreshAlarmWatchListAsync(sessionId, broadcast: false, cancellationToken)
+                .ConfigureAwait(false);
         }
 
         AlarmProviderStatus status;
@@ -606,14 +608,17 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
         }
     }
 
-    // GWC-37: re-resolves the subtag watch-list and re-grades the coverage verdict without
-    // touching the worker's subscription. Best-effort: a resolver that throws (only cancellation
-    // and programming errors do — discovery failure is reported in the resolution) leaves the
-    // verdict from the last subscribe in place, because a stale verdict is better than none.
-    // Does not broadcast: the callers publish a status frame of their own immediately after.
-    private async Task RefreshSubtagCoverageAsync(CancellationToken cancellationToken)
+    private async Task RefreshAlarmWatchListAsync(
+        string sessionId,
+        bool broadcast,
+        CancellationToken cancellationToken)
     {
         AlarmProviderMode forcedMode = MapForcedMode(_options.Fallback.Mode);
+        if (!CanUseSubtagFallback(forcedMode))
+        {
+            return;
+        }
+
         AlarmWatchListResolution resolution;
         try
         {
@@ -627,18 +632,96 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
         {
             _logger.LogWarning(
                 exception,
-                "Re-resolving the alarm subtag watch-list failed; keeping the coverage verdict from the last subscribe.");
+                "Re-resolving the alarm subtag watch-list failed; keeping the last acknowledged watch list.");
             return;
         }
 
+        string resolvedFingerprint = CanonicalWatchListFingerprint(resolution.Targets);
+        string acknowledgedFingerprint;
         lock (_sync)
         {
-            bool stale = !resolution.Targets
-                .Select(target => target.AlarmFullReference)
-                .ToHashSet(StringComparer.OrdinalIgnoreCase)
-                .SetEquals(_sentWatchListReferences);
-            SetSubtagCoverage(GradeSubtagCoverage(forcedMode, resolution, stale), broadcast: false);
+            acknowledgedFingerprint = _acknowledgedWatchListFingerprint;
         }
+
+        if (string.Equals(resolvedFingerprint, acknowledgedFingerprint, StringComparison.Ordinal))
+        {
+            lock (_sync)
+            {
+                SetSubtagCoverage(
+                    GradeSubtagCoverage(forcedMode, resolution, staleAgainstSent: false),
+                    broadcast);
+            }
+            return;
+        }
+
+        UpdateAlarmWatchListCommand update = new();
+        update.WatchList.AddRange(resolution.Targets);
+        WorkerCommandReply reply = await _sessionManager.InvokeAsync(
+                sessionId,
+                new WorkerCommand
+                {
+                    Command = new MxCommand
+                    {
+                        Kind = MxCommandKind.UpdateAlarmWatchList,
+                        UpdateAlarmWatchList = update,
+                    },
+                },
+                cancellationToken)
+            .ConfigureAwait(false);
+
+        ProtocolStatusCode? code = reply.Reply?.ProtocolStatus?.Code;
+        lock (_sync)
+        {
+            if (code == ProtocolStatusCode.Ok)
+            {
+                AcknowledgeWatchList(resolution.Targets);
+                SetSubtagCoverage(
+                    GradeSubtagCoverage(forcedMode, resolution, staleAgainstSent: false),
+                    broadcast);
+                return;
+            }
+
+            string diagnostic = reply.Reply?.DiagnosticMessage
+                ?? reply.Reply?.ProtocolStatus?.Message
+                ?? $"status {code}";
+            string reason = GradeSubtagCoverage(forcedMode, resolution, staleAgainstSent: true);
+            SetSubtagCoverage($"{reason}; worker rejected watch-list update ({diagnostic})", broadcast);
+        }
+    }
+
+    private bool CanUseSubtagFallback(AlarmProviderMode forcedMode) =>
+        forcedMode != AlarmProviderMode.Alarmmgr
+        && (forcedMode == AlarmProviderMode.Subtag
+            || _options.Fallback.Discovery.UseGalaxyRepository
+            || _options.Fallback.Discovery.IncludeAttributes.Length > 0);
+
+    // Caller holds _sync.
+    private void AcknowledgeWatchList(IReadOnlyList watchList)
+    {
+        _acknowledgedWatchListFingerprint = CanonicalWatchListFingerprint(watchList);
+        _sentWatchListReferences = watchList
+            .Select(target => target.AlarmFullReference)
+            .ToHashSet(StringComparer.OrdinalIgnoreCase);
+    }
+
+    private static string CanonicalWatchListFingerprint(IEnumerable watchList) =>
+        string.Join(
+            "\n",
+            watchList
+                .Select(target => string.Join(
+                    "|",
+                    FingerprintPart(target.AlarmFullReference),
+                    FingerprintPart(target.SourceObjectReference),
+                    FingerprintPart(target.ActiveSubtag),
+                    FingerprintPart(target.AckedSubtag),
+                    FingerprintPart(target.AckCommentSubtag),
+                    FingerprintPart(target.PrioritySubtag)))
+                .Order(StringComparer.Ordinal));
+
+    private static string FingerprintPart(string? value)
+    {
+        string normalized = value ?? string.Empty;
+        return $"{normalized.Length}:{normalized}";
     }
 
     // Grades one resolution against the effective mode. Returns the reason the subtag coverage is
@@ -684,8 +767,7 @@ public sealed class GatewayAlarmMonitor : BackgroundService, IGatewayAlarmServic
         {
             reasons.Add(
                 $"{AlarmProviderReasons.SubtagWatchListStale} ({resolution.Targets.Count} target(s) now "
-                + $"resolve against {_sentWatchListReferences.Count} sent at subscribe); restart the alarm "
-                + "monitor to re-send it");
+                + $"resolve against {_sentWatchListReferences.Count} acknowledged by the worker)");
         }
 
         return string.Join("; ", reasons);
diff --git a/src/ZB.MOM.WW.MxGateway.Tests/Alarms/GatewayAlarmMonitorProviderModeTests.cs b/src/ZB.MOM.WW.MxGateway.Tests/Alarms/GatewayAlarmMonitorProviderModeTests.cs
index 06336ac..6e054e0 100644
--- a/src/ZB.MOM.WW.MxGateway.Tests/Alarms/GatewayAlarmMonitorProviderModeTests.cs
+++ b/src/ZB.MOM.WW.MxGateway.Tests/Alarms/GatewayAlarmMonitorProviderModeTests.cs
@@ -646,6 +646,7 @@ public sealed class GatewayAlarmMonitorProviderModeTests
 
         // The empty list still went to the worker — the verdict is a report, not a behaviour change.
         Assert.Empty(sessions.LastSubscribeCommand!.WatchList);
+        Assert.True(sessions.LastSubscribeCommand.FallbackEnabled);
 
         AlarmProviderStatus status = await ReadFirstProviderStatusAsync(monitor);
 
@@ -661,16 +662,14 @@ public sealed class GatewayAlarmMonitorProviderModeTests
 
     /// 
     ///     GWC-37: the failover edge is the moment the watch-list stops being theoretical, so the
-    ///     monitor re-resolves it there and publishes the fresh verdict on the same status frame
-    ///     the failover produces. Discovery that has recovered since SubscribeAlarms is
-    ///     reported as drift rather than applied — the worker rejects a second SubscribeAlarms
-    ///     while subscribed, and the only way to replace the list rebuilds the failover consumer on
-    ///     the primary that just failed. The status names both the fresh count and the sent count so
-    ///     an operator knows a monitor restart will pick the new list up.
+    ///     monitor re-resolves it there, hot-swaps the recovered list through
+    ///     UpdateAlarmWatchList, and publishes the acknowledged verdict on the same status
+    ///     frame the failover produces. The update must precede the status frame so the frame never
+    ///     claims recovered coverage before the worker has accepted it.
     /// 
     /// A task that represents the asynchronous operation.
     [Fact]
-    public async Task SubtagCoverage_WhenDiscoveryRecoversByFailover_ReResolvesAndReportsDrift()
+    public async Task SubtagCoverage_WhenDiscoveryRecoversByFailover_UpdatesWorkerBeforePublishingStatus()
     {
         using GatewayMetrics metrics = new();
         FakeSessionManager sessions = new();
@@ -734,13 +733,11 @@ public sealed class GatewayAlarmMonitorProviderModeTests
         // The re-resolve happened on the failover edge, before the status was published.
         Assert.Equal(2, resolver.Calls);
 
+        Assert.Single(sessions.UpdateCommands);
+        Assert.Equal(2, sessions.UpdateCommands[0].WatchList.Count);
         string reason = degraded.ProviderStatus.Reason;
         Assert.Contains("alarmmgr failed", reason, StringComparison.Ordinal);
-        Assert.Contains(AlarmProviderReasons.SubtagWatchListStale, reason, StringComparison.Ordinal);
-        Assert.Contains("2 target(s) now resolve against 0 sent", reason, StringComparison.Ordinal);
-
-        // The stale-list warning replaced the empty/failed pair: discovery works again, so the only
-        // remaining problem is that the worker is still using the list it was handed.
+        Assert.DoesNotContain(AlarmProviderReasons.SubtagWatchListStale, reason, StringComparison.Ordinal);
         Assert.DoesNotContain(AlarmProviderReasons.SubtagWatchListEmpty, reason, StringComparison.Ordinal);
         Assert.DoesNotContain(AlarmProviderReasons.SubtagDiscoveryFailed, reason, StringComparison.Ordinal);
 
@@ -750,6 +747,69 @@ public sealed class GatewayAlarmMonitorProviderModeTests
         await monitor.StopAsync(CancellationToken.None);
     }
 
+    /// Periodic reconciliation applies a recovered watch list once and suppresses an unchanged resolution on the next cadence.
+    [Fact]
+    public async Task WatchListRefresh_PeriodicRecovery_SendsExactlyOneMaterialUpdate()
+    {
+        using GatewayMetrics metrics = new();
+        FakeSessionManager sessions = new();
+        AlarmWatchListResolution recovered = new(
+            [Target("Galaxy!Area.Tank01.Level.HiHi")],
+            DiscoveryAttempted: true,
+            DiscoveryFailed: false,
+            DiscoveryFailureMessage: null);
+        ScriptedWatchListResolver resolver = new(DiscoveryFailedResolution(), recovered, recovered);
+        using GatewayAlarmMonitor monitor = CreateMonitor(sessions, metrics, resolver, reconcileIntervalSeconds: 5);
+
+        using CancellationTokenSource cts = new();
+        await monitor.StartAsync(cts.Token);
+        await sessions.WaitForUpdateCountAsync(1, WaitTimeout);
+        await WaitUntilAsync(() => resolver.Calls >= 3, WaitTimeout);
+
+        Assert.Single(sessions.UpdateCommands);
+        Assert.Single(sessions.UpdateCommands[0].WatchList);
+
+        await cts.CancelAsync();
+        await monitor.StopAsync(CancellationToken.None);
+    }
+
+    /// A rejected refresh keeps the old fingerprint and degraded verdict so the same material change is retried.
+    [Fact]
+    public async Task WatchListRefresh_WorkerRejects_RetainsFingerprintAndRetriesSameTargets()
+    {
+        using GatewayMetrics metrics = new();
+        FakeSessionManager sessions = new();
+        sessions.UpdateReplyCodes.Enqueue(ProtocolStatusCode.MxaccessFailure);
+        sessions.UpdateReplyCodes.Enqueue(ProtocolStatusCode.Ok);
+        AlarmWatchListResolution recovered = new(
+            [Target("Galaxy!Area.Tank01.Level.HiHi")],
+            DiscoveryAttempted: true,
+            DiscoveryFailed: false,
+            DiscoveryFailureMessage: null);
+        ScriptedWatchListResolver resolver = new(DiscoveryFailedResolution(), recovered, recovered);
+        using GatewayAlarmMonitor monitor = CreateMonitor(sessions, metrics, resolver);
+
+        using CancellationTokenSource cts = new();
+        await monitor.StartAsync(cts.Token);
+        await sessions.WaitForSubscribeAsync(WaitTimeout);
+
+        sessions.EmitModeChange(AlarmProviderMode.Subtag, "alarmmgr failed");
+        await sessions.WaitForUpdateCountAsync(1, WaitTimeout);
+        AlarmProviderStatus rejected = await ReadFirstProviderStatusAsync(monitor);
+        Assert.True(rejected.Degraded);
+        Assert.Contains(AlarmProviderReasons.SubtagWatchListStale, rejected.Reason, StringComparison.Ordinal);
+
+        sessions.EmitModeChange(AlarmProviderMode.Subtag, "alarmmgr still failed");
+        await sessions.WaitForUpdateCountAsync(2, WaitTimeout);
+
+        Assert.Equal(
+            sessions.UpdateCommands[0].WatchList[0].AlarmFullReference,
+            sessions.UpdateCommands[1].WatchList[0].AlarmFullReference);
+
+        await cts.CancelAsync();
+        await monitor.StopAsync(CancellationToken.None);
+    }
+
     /// Reads the provider-status frame every stream opens with, then closes the stream.
     /// The monitor to read from.
     /// The provider status carried by the first frame.
@@ -786,12 +846,14 @@ public sealed class GatewayAlarmMonitorProviderModeTests
     private static GatewayAlarmMonitor CreateMonitor(
         FakeSessionManager sessions,
         GatewayMetrics metrics,
-        IAlarmWatchListResolver resolver)
+        IAlarmWatchListResolver resolver,
+        int reconcileIntervalSeconds = 30)
     {
         AlarmsOptions options = new()
         {
             Enabled = true,
             SubscriptionExpression = @"\\NODE\Galaxy!Area",
+            ReconcileIntervalSeconds = reconcileIntervalSeconds,
         };
         return new GatewayAlarmMonitor(
             sessions,
@@ -923,11 +985,34 @@ public sealed class GatewayAlarmMonitorProviderModeTests
         /// The most recent SubscribeAlarms command the monitor sent.
         public SubscribeAlarmsCommand? LastSubscribeCommand { get; private set; }
 
+        /// Gets each live replacement command in invocation order.
+        public List UpdateCommands { get; } = [];
+
+        /// Scripted protocol statuses for replacement commands.
+        public Queue UpdateReplyCodes { get; } = new();
+
         /// Pushes a worker event onto the monitor's event stream.
         /// The worker event to push.
         public void EmitEvent(MxEvent mxEvent) =>
             _events.Writer.TryWrite(new WorkerEvent { Event = mxEvent });
 
+        /// Pushes a provider-mode change onto the worker event stream.
+        public void EmitModeChange(AlarmProviderMode mode, string reason) => EmitEvent(new MxEvent
+        {
+            OnAlarmProviderModeChanged = new OnAlarmProviderModeChangedEvent
+            {
+                Mode = mode,
+                Reason = reason,
+                At = Timestamp.FromDateTimeOffset(DateTimeOffset.UtcNow),
+            },
+        });
+
+        /// Waits until at least the requested number of update commands have arrived.
+        public async Task WaitForUpdateCountAsync(int count, TimeSpan timeout)
+        {
+            await WaitUntilAsync(() => UpdateCommands.Count >= count, timeout);
+        }
+
         /// Completes once the monitor has issued its SubscribeAlarms command.
         /// The maximum time to wait.
         /// A task that represents the asynchronous operation.
@@ -972,9 +1057,20 @@ public sealed class GatewayAlarmMonitorProviderModeTests
                 _subscribed.TrySetResult();
             }
 
+            if (command.Command?.Kind == MxCommandKind.UpdateAlarmWatchList)
+            {
+                UpdateCommands.Add(command.Command.UpdateAlarmWatchList.Clone());
+            }
+
             MxCommandReply reply = new()
             {
-                ProtocolStatus = new ProtocolStatus { Code = ProtocolStatusCode.Ok },
+                ProtocolStatus = new ProtocolStatus
+                {
+                    Code = command.Command?.Kind == MxCommandKind.UpdateAlarmWatchList
+                        && UpdateReplyCodes.TryDequeue(out ProtocolStatusCode updateCode)
+                            ? updateCode
+                            : ProtocolStatusCode.Ok,
+                },
             };
             if (command.Command?.Kind == MxCommandKind.QueryActiveAlarms)
             {
diff --git a/src/ZB.MOM.WW.MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs b/src/ZB.MOM.WW.MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs
index 3cc8db8..238ca35 100644
--- a/src/ZB.MOM.WW.MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs
+++ b/src/ZB.MOM.WW.MxGateway.Tests/Contracts/ProtobufContractRoundTripTests.cs
@@ -1507,6 +1507,52 @@ public sealed class ProtobufContractRoundTripTests
         Assert.Equal(5, parsed.Failover.FailbackStableProbes);
     }
 
+    /// 
+    ///     Verifies the live alarm watch-list replacement command and the
+    ///     subscription's explicit empty-list fallback intent retain their
+    ///     command kind, oneof arm, and payload across protobuf serialization.
+    /// 
+    [Fact]
+    public void AlarmWatchListCommands_RoundTripFallbackIntentAndReplacementPayload()
+    {
+        var subscribe = new SubscribeAlarmsCommand
+        {
+            SubscriptionExpression = @"\\node\Galaxy!Area",
+            FallbackEnabled = true,
+        };
+        var parsedSubscribe = SubscribeAlarmsCommand.Parser.ParseFrom(subscribe.ToByteArray());
+
+        Assert.True(parsedSubscribe.FallbackEnabled);
+        Assert.Empty(parsedSubscribe.WatchList);
+
+        var original = new MxCommand
+        {
+            Kind = MxCommandKind.UpdateAlarmWatchList,
+            UpdateAlarmWatchList = new UpdateAlarmWatchListCommand
+            {
+                WatchList =
+                {
+                    new AlarmSubtagTarget
+                    {
+                        AlarmFullReference = "Galaxy!Area.Tank01.Level.HiHi",
+                        SourceObjectReference = "Tank01",
+                        ActiveSubtag = "Tank01.Level.HiHi.InAlarm",
+                        AckedSubtag = "Tank01.Level.HiHi.Acked",
+                        AckCommentSubtag = "Tank01.Level.HiHi.AckMsg",
+                        PrioritySubtag = "Tank01.Level.HiHi.Priority",
+                    },
+                },
+            },
+        };
+
+        var parsed = MxCommand.Parser.ParseFrom(original.ToByteArray());
+
+        Assert.Equal(original, parsed);
+        Assert.Equal(MxCommandKind.UpdateAlarmWatchList, parsed.Kind);
+        Assert.Equal(MxCommand.PayloadOneofCase.UpdateAlarmWatchList, parsed.PayloadCase);
+        Assert.Single(parsed.UpdateAlarmWatchList.WatchList);
+    }
+
     /// 
     ///     Verifies that an  carrying an
     ///      body (the
diff --git a/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs b/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs
index c1556a7..4b82047 100644
--- a/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs
+++ b/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs
@@ -91,6 +91,27 @@ public sealed class AlarmCommandExecutorTests
         Assert.Equal(ProtocolStatusCode.InvalidRequest, reply.ProtocolStatus.Code);
     }
 
+    /// Verifies that a live watch-list replacement routes to the alarm handler on the executor thread.
+    [Fact]
+    public void UpdateAlarmWatchList_WithHandler_RoutesToHandlerAndReturnsOk()
+    {
+        FakeAlarmHandler handler = new FakeAlarmHandler();
+        MxAccessCommandExecutor executor = NewExecutor(handler);
+        var target = new AlarmSubtagTarget { AlarmFullReference = "Galaxy!Area.Tank01.Alarm" };
+
+        MxCommandReply reply = executor.Execute(new StaCommand(
+            SessionId,
+            CorrelationId,
+            new MxCommand
+            {
+                Kind = MxCommandKind.UpdateAlarmWatchList,
+                UpdateAlarmWatchList = new UpdateAlarmWatchListCommand { WatchList = { target } },
+            }));
+
+        Assert.Equal(ProtocolStatusCode.Ok, reply.ProtocolStatus.Code);
+        Assert.Equal(target, Assert.Single(handler.LastWatchList!));
+    }
+
     /// Verifies that acknowledge routes native status into hresult and payload.
     [Fact]
     public void AcknowledgeAlarm_WithHandler_RoutesNativeStatusIntoHresultAndPayload()
@@ -447,6 +468,15 @@ public sealed class AlarmCommandExecutorTests
             LastSessionId = sessionId;
         }
 
+        /// Gets the most recent replacement watch list.
+        public IReadOnlyList? LastWatchList { get; private set; }
+
+        /// 
+        public void UpdateWatchList(IReadOnlyList watchList)
+        {
+            LastWatchList = watchList;
+        }
+
         /// 
         public void Unsubscribe()
         {
diff --git a/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/AlarmCommandHandlerTests.cs b/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/AlarmCommandHandlerTests.cs
index 2b9e35e..c41807a 100644
--- a/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/AlarmCommandHandlerTests.cs
+++ b/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/AlarmCommandHandlerTests.cs
@@ -287,8 +287,12 @@ public sealed class AlarmCommandHandlerTests
         handler.PollOnce();
         Assert.Equal(5, guardInvocations);
 
-        handler.Unsubscribe();
+        Assert.Throws(
+            () => handler.UpdateWatchList(Array.Empty()));
         Assert.Equal(6, guardInvocations);
+
+        handler.Unsubscribe();
+        Assert.Equal(7, guardInvocations);
     }
 
     /// 
@@ -324,6 +328,8 @@ public sealed class AlarmCommandHandlerTests
             () => handler.AcknowledgeByName("", "", "", "", "", "", "", ""));
         Assert.Throws(() => handler.QueryActive(null, out _));
         Assert.Throws(() => handler.PollOnce());
+        Assert.Throws(
+            () => handler.UpdateWatchList(Array.Empty()));
         Assert.Throws(() => handler.Unsubscribe());
     }
 
@@ -412,6 +418,114 @@ public sealed class AlarmCommandHandlerTests
         Assert.Equal(AlarmProviderMode.Subtag, evt.OnAlarmProviderModeChanged.Mode);
     }
 
+    /// An explicitly fallback-capable auto subscription builds a replaceable standby even when discovery is initially empty.
+    [Fact]
+    public void Subscribe_AutoModeWithEmptyWatchListAndFallbackEnabled_BuildsReplaceableStandby()
+    {
+        FakeConsumer primary = new FakeConsumer { AcknowledgeReturn = 11 };
+        FakeConsumer initialStandby = new FakeConsumer { AcknowledgeReturn = 22 };
+        FakeConsumer replacement = new FakeConsumer { AcknowledgeReturn = 33 };
+        int buildCount = 0;
+        AlarmCommandHandler handler = new AlarmCommandHandler(
+            new MxAccessEventQueue(),
+            () => primary,
+            threadAffinityCheck: null,
+            comFactory: null,
+            standbyFactory: _ => ++buildCount == 1 ? initialStandby : replacement);
+
+        handler.Subscribe(new SubscribeAlarmsCommand
+        {
+            SubscriptionExpression = @"\\HOST\Galaxy!Area",
+            FallbackEnabled = true,
+        }, "s1");
+        handler.UpdateWatchList(new[] { NewTarget("Galaxy!Area.Tank01.Alarm") });
+
+        Assert.Equal(2, buildCount);
+        Assert.Equal(@"\\HOST\Galaxy!Area", replacement.LastSubscription);
+        Assert.True(initialStandby.Disposed);
+        Assert.Equal(11, handler.Acknowledge(Guid.Empty, "", "", "", "", ""));
+    }
+
+    /// A replacement is rejected when no fallback-capable subscription is active.
+    [Fact]
+    public void UpdateWatchList_WithoutFallbackCapableSubscription_Throws()
+    {
+        AlarmCommandHandler handler = new AlarmCommandHandler(
+            new MxAccessEventQueue(),
+            () => new FakeConsumer());
+
+        Assert.Throws(
+            () => handler.UpdateWatchList(new[] { NewTarget("Galaxy!Area.Tank01.Alarm") }));
+
+        handler.Subscribe(new SubscribeAlarmsCommand
+        {
+            SubscriptionExpression = @"\\HOST\Galaxy!Area",
+            ForcedMode = AlarmProviderMode.Alarmmgr,
+        }, "s1");
+
+        Assert.Throws(
+            () => handler.UpdateWatchList(new[] { NewTarget("Galaxy!Area.Tank02.Alarm") }));
+    }
+
+    /// A replacement setup failure leaves the old standby and primary mode intact.
+    [Fact]
+    public void UpdateWatchList_WhenReplacementSubscribeFails_PreservesOldStandbyAndPrimaryMode()
+    {
+        FakeConsumer primary = new FakeConsumer { AcknowledgeReturn = 11 };
+        FakeConsumer oldStandby = new FakeConsumer { AcknowledgeReturn = 22 };
+        FakeConsumer failedReplacement = new FakeConsumer { ThrowOnSubscribe = true, AcknowledgeReturn = 33 };
+        int buildCount = 0;
+        AlarmCommandHandler handler = new AlarmCommandHandler(
+            new MxAccessEventQueue(),
+            () => primary,
+            null,
+            null,
+            _ => ++buildCount == 1 ? oldStandby : failedReplacement);
+        SubscribeAlarmsCommand subscribe = new SubscribeAlarmsCommand
+        {
+            SubscriptionExpression = @"\\HOST\Galaxy!Area",
+            FallbackEnabled = true,
+        };
+        subscribe.WatchList.Add(NewTarget("Galaxy!Area.Tank01.Alarm"));
+        handler.Subscribe(subscribe, "s1");
+
+        Assert.Throws(
+            () => handler.UpdateWatchList(new[] { NewTarget("Galaxy!Area.Tank02.Alarm") }));
+
+        Assert.False(oldStandby.Disposed);
+        Assert.True(failedReplacement.Disposed);
+        Assert.Equal(11, handler.Acknowledge(Guid.Empty, "", "", "", "", ""));
+    }
+
+    /// A successful replacement while failed over keeps subtag mode active and delegates to the new standby.
+    [Fact]
+    public void UpdateWatchList_WhileSubtagActive_PreservesModeAndUsesReplacement()
+    {
+        FakeConsumer primary = new FakeConsumer { ThrowOnSubscribe = true, AcknowledgeReturn = 11 };
+        FakeConsumer oldStandby = new FakeConsumer { AcknowledgeReturn = 22 };
+        FakeConsumer replacement = new FakeConsumer { AcknowledgeReturn = 33 };
+        int buildCount = 0;
+        AlarmCommandHandler handler = new AlarmCommandHandler(
+            new MxAccessEventQueue(),
+            () => primary,
+            null,
+            null,
+            _ => ++buildCount == 1 ? oldStandby : replacement);
+        SubscribeAlarmsCommand subscribe = new SubscribeAlarmsCommand
+        {
+            SubscriptionExpression = @"\\HOST\Galaxy!Area",
+            FallbackEnabled = true,
+            Failover = new AlarmFailoverConfig { ConsecutiveFailureThreshold = 1 },
+        };
+        subscribe.WatchList.Add(NewTarget("Galaxy!Area.Tank01.Alarm"));
+        handler.Subscribe(subscribe, "s1");
+
+        handler.UpdateWatchList(new[] { NewTarget("Galaxy!Area.Tank02.Alarm") });
+
+        Assert.True(oldStandby.Disposed);
+        Assert.Equal(33, handler.Acknowledge(Guid.Empty, "", "", "", "", ""));
+    }
+
     /// 
     ///     A non-failover subscribe (alarmmgr-only) never enqueues a
     ///     provider-mode-changed event, and a subsequent Unsubscribe detaches
@@ -467,6 +581,14 @@ public sealed class AlarmCommandHandlerTests
         };
     }
 
+    private static AlarmSubtagTarget NewTarget(string alarmFullReference) => new AlarmSubtagTarget
+    {
+        AlarmFullReference = alarmFullReference,
+        ActiveSubtag = alarmFullReference + ".InAlarm",
+        AckedSubtag = alarmFullReference + ".Acked",
+        AckCommentSubtag = alarmFullReference + ".AckMsg",
+    };
+
     private sealed class FakeConsumer : IMxAccessAlarmConsumer
     {
 #pragma warning disable CS0067 // Event never invoked — fake; AlarmCommandHandler tests don't drive transitions.
diff --git a/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/MxAccessStaSessionTests.cs b/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/MxAccessStaSessionTests.cs
index c4358a9..3ff55fe 100644
--- a/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/MxAccessStaSessionTests.cs
+++ b/src/ZB.MOM.WW.MxGateway.Worker.Tests/MxAccess/MxAccessStaSessionTests.cs
@@ -651,6 +651,11 @@ public sealed class MxAccessStaSessionTests
             LastSubscription = command.SubscriptionExpression;
         }
 
+        /// 
+        public void UpdateWatchList(IReadOnlyList watchList)
+        {
+        }
+
         /// 
         public void Unsubscribe()
         {
diff --git a/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/AlarmCommandHandler.cs b/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/AlarmCommandHandler.cs
index f2b5381..f1d5b1b 100644
--- a/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/AlarmCommandHandler.cs
+++ b/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/AlarmCommandHandler.cs
@@ -45,6 +45,7 @@ public sealed class AlarmCommandHandler : IAlarmCommandHandler
     private FailoverAlarmConsumer? failoverConsumer;
     private EventHandler? providerModeChangedHandler;
     private string subscribeSessionId = string.Empty;
+    private string subscriptionExpression = string.Empty;
     private bool disposed;
 
     /// Initializes a new alarm command handler with the given event queue.
@@ -153,6 +154,7 @@ public sealed class AlarmCommandHandler : IAlarmCommandHandler
             }
 
             subscribeSessionId = sessionId ?? string.Empty;
+            subscriptionExpression = command.SubscriptionExpression ?? string.Empty;
             IMxAccessAlarmConsumer consumer = BuildConsumer(command)
                 ?? throw new InvalidOperationException("Alarm consumer factory returned null.");
 
@@ -171,7 +173,7 @@ public sealed class AlarmCommandHandler : IAlarmCommandHandler
             dispatcher = new AlarmDispatcher(consumer, sink, subscribeSessionId);
             try
             {
-                dispatcher.Subscribe(command.SubscriptionExpression ?? string.Empty);
+                dispatcher.Subscribe(subscriptionExpression);
             }
             catch
             {
@@ -212,7 +214,8 @@ public sealed class AlarmCommandHandler : IAlarmCommandHandler
             return BuildStandby(watchList);
         }
 
-        if (command.ForcedMode == AlarmProviderMode.Unspecified && watchList.Count > 0)
+        if (command.ForcedMode == AlarmProviderMode.Unspecified
+            && (command.FallbackEnabled || watchList.Count > 0))
         {
             IMxAccessAlarmConsumer primary = consumerFactory()
                 ?? throw new InvalidOperationException("Alarm consumer factory returned null.");
@@ -230,6 +233,26 @@ public sealed class AlarmCommandHandler : IAlarmCommandHandler
             ?? throw new InvalidOperationException("Alarm consumer factory returned null.");
     }
 
+    /// 
+    public void UpdateWatchList(IReadOnlyList watchList)
+    {
+        if (disposed) throw new ObjectDisposedException(nameof(AlarmCommandHandler));
+        if (watchList is null) throw new ArgumentNullException(nameof(watchList));
+        threadAffinityCheck?.Invoke();
+
+        lock (syncRoot)
+        {
+            if (dispatcher is null || failoverConsumer is null)
+            {
+                throw new InvalidOperationException(
+                    "UpdateAlarmWatchList requires an active fallback-capable alarm subscription.");
+            }
+
+            IMxAccessAlarmConsumer replacement = BuildStandby(watchList);
+            failoverConsumer.ReplaceStandby(replacement, subscriptionExpression);
+        }
+    }
+
     private IMxAccessAlarmConsumer BuildStandby(IReadOnlyList watchList)
     {
         if (standbyFactory is not null)
@@ -276,6 +299,7 @@ public sealed class AlarmCommandHandler : IAlarmCommandHandler
             DetachProviderModeChanged();
             toDispose = dispatcher;
             dispatcher = null;
+            subscriptionExpression = string.Empty;
         }
         toDispose?.Dispose();
     }
diff --git a/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/FailoverAlarmConsumer.cs b/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/FailoverAlarmConsumer.cs
index 967cac3..1c870d1 100644
--- a/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/FailoverAlarmConsumer.cs
+++ b/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/FailoverAlarmConsumer.cs
@@ -55,7 +55,7 @@ public sealed class FailoverAlarmConsumer : IMxAccessAlarmConsumer
     }
 
     private readonly IMxAccessAlarmConsumer primary;
-    private readonly IMxAccessAlarmConsumer standby;
+    private IMxAccessAlarmConsumer standby;
     private readonly FailoverSettings settings;
 
     private Active active = Active.Primary;
@@ -103,6 +103,36 @@ public sealed class FailoverAlarmConsumer : IMxAccessAlarmConsumer
     /// 
     public AlarmProviderMode Mode => mode;
 
+    /// 
+    ///     Arms and attaches a replacement standby before atomically swapping
+    ///     it into the current provider mode. Setup failure disposes only the
+    ///     replacement and leaves the existing standby untouched.
+    /// 
+    /// The newly built standby consumer.
+    /// The retained subscription expression.
+    public void ReplaceStandby(IMxAccessAlarmConsumer replacement, string subscription)
+    {
+        if (disposed) throw new ObjectDisposedException(nameof(FailoverAlarmConsumer));
+        if (replacement is null) throw new ArgumentNullException(nameof(replacement));
+
+        try
+        {
+            replacement.Subscribe(subscription ?? string.Empty);
+            replacement.AlarmTransitionEmitted += OnChildTransition;
+        }
+        catch
+        {
+            try { replacement.Dispose(); } catch { /* preserve setup failure */ }
+            throw;
+        }
+
+        IMxAccessAlarmConsumer previous = standby;
+        standby = replacement;
+
+        try { previous.AlarmTransitionEmitted -= OnChildTransition; } catch { /* best effort */ }
+        try { previous.Dispose(); } catch { /* replacement is already active */ }
+    }
+
     /// 
     public void Subscribe(string subscription)
     {
diff --git a/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/IAlarmCommandHandler.cs b/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/IAlarmCommandHandler.cs
index eb98010..52ecfe0 100644
--- a/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/IAlarmCommandHandler.cs
+++ b/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/IAlarmCommandHandler.cs
@@ -7,7 +7,8 @@ namespace ZB.MOM.WW.MxGateway.Worker.MxAccess;
 /// 
 ///     Per-session interface routing the worker's alarm IPC commands —
 ///     SubscribeAlarmsCommand, AcknowledgeAlarmCommand,
-///     QueryActiveAlarmsCommand, UnsubscribeAlarmsCommand —
+///     UpdateAlarmWatchListCommand, QueryActiveAlarmsCommand,
+///     UnsubscribeAlarmsCommand —
 ///     to the underlying . Production binding
 ///     is ; tests substitute a fake.
 /// 
@@ -24,6 +25,13 @@ public interface IAlarmCommandHandler : IDisposable
     /// The session identifier.
     void Subscribe(SubscribeAlarmsCommand command, string sessionId);
 
+    /// 
+    ///     Replace the active auto-failover subscription's subtag standby
+    ///     targets without restarting its primary provider.
+    /// 
+    /// The complete replacement watch list.
+    void UpdateWatchList(IReadOnlyList watchList);
+
     /// Tear down the active subscription. No-op if not subscribed.
     void Unsubscribe();
 
diff --git a/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs b/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs
index 46cbc7e..ee6005b 100644
--- a/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs
+++ b/src/ZB.MOM.WW.MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs
@@ -158,6 +158,7 @@ public sealed class MxAccessCommandExecutor : IStaCommandExecutor
             MxCommandKind.WriteSecured2Bulk => ExecuteWriteSecured2Bulk(command),
             MxCommandKind.ReadBulk => ExecuteReadBulk(command),
             MxCommandKind.SubscribeAlarms => ExecuteSubscribeAlarms(command),
+            MxCommandKind.UpdateAlarmWatchList => ExecuteUpdateAlarmWatchList(command),
             MxCommandKind.UnsubscribeAlarms => ExecuteUnsubscribeAlarms(command),
             MxCommandKind.AcknowledgeAlarm => ExecuteAcknowledgeAlarm(command),
             MxCommandKind.AcknowledgeAlarmByName => ExecuteAcknowledgeAlarmByName(command),
@@ -866,6 +867,30 @@ public sealed class MxAccessCommandExecutor : IStaCommandExecutor
         }
     }
 
+    private MxCommandReply ExecuteUpdateAlarmWatchList(StaCommand command)
+    {
+        if (command.Command.PayloadCase != MxCommand.PayloadOneofCase.UpdateAlarmWatchList)
+        {
+            return CreateInvalidRequestReply(command, "UpdateAlarmWatchList command payload is required.");
+        }
+        if (alarmCommandHandler is null)
+        {
+            return CreateInvalidRequestReply(
+                command,
+                "UpdateAlarmWatchList requires an alarm command handler; the worker was constructed without one.");
+        }
+
+        try
+        {
+            alarmCommandHandler.UpdateWatchList(command.Command.UpdateAlarmWatchList.WatchList);
+            return CreateOkReply(command);
+        }
+        catch (Exception ex)
+        {
+            return CreateAlarmFailureReply(command, ex);
+        }
+    }
+
     private MxCommandReply ExecuteAcknowledgeAlarm(StaCommand command)
     {
         if (command.Command.PayloadCase != MxCommand.PayloadOneofCase.AcknowledgeAlarmCommand)