# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: dmi/hw_events_mgmt_service.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from dmi import commons_pb2 as dmi_dot_commons__pb2
from dmi import hw_pb2 as dmi_dot_hw__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2


DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dmi/hw_events_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"u\n\tValueType\x12\x11\n\x07int_val\x18\x01 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x02 \x01(\x04H\x00\x12\x13\n\tfloat_val\x18\x03 \x01(\x02H\x00\x12%\n\ttypeOfVal\x18\x04 \x01(\x0e\x32\x12.dmi.DataValueTypeB\x05\n\x03val\"G\n\nWaterMarks\x12\x1c\n\x04high\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12\x1b\n\x03low\x18\x02 \x01(\x0b\x32\x0e.dmi.ValueType\"]\n\nThresholds\x12 \n\x05upper\x18\x01 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x12 \n\x05lower\x18\x02 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x42\x0b\n\tthreshold\"c\n\x14ThresholdInformation\x12&\n\x0eobserved_value\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12#\n\nthresholds\x18\x02 \x01(\x0b\x32\x0f.dmi.Thresholds\"\x8a\x01\n\x08\x45ventCfg\x12\x1f\n\x08\x65vent_id\x18\x01 \x01(\x0e\x32\r.dmi.EventIds\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12#\n\nthresholds\x18\x03 \x01(\x0b\x32\x0f.dmi.Thresholds\x12!\n\x0e\x63omponent_uuid\x18\x04 \x01(\x0b\x32\t.dmi.Uuid\")\n\tEventsCfg\x12\x1c\n\x05items\x18\x01 \x03(\x0b\x32\r.dmi.EventCfg\"\xf8\x01\n\x12ListEventsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12.\n\x06reason\x18\x02 \x01(\x0e\x32\x1e.dmi.ListEventsResponse.Reason\x12\x1e\n\x06\x65vents\x18\x03 \x01(\x0b\x32\x0e.dmi.EventsCfg\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x88\x01\n\x1a\x45ventsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x0e.dmi.EventsCfgH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xfe\x01\n\x1b\x45ventsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.EventsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"r\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x12\n\x0eINVALID_CONFIG\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"j\n\rEventMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\xc8\x01\n\x05\x45vent\x12*\n\x0e\x65vent_metadata\x18\x01 \x01(\x0b\x32\x12.dmi.EventMetaData\x12\x1f\n\x08\x65vent_id\x18\x02 \x01(\x0e\x32\r.dmi.EventIds\x12-\n\traised_ts\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x0ethreshold_info\x18\x04 \x01(\x0b\x32\x19.dmi.ThresholdInformation\x12\x10\n\x08\x61\x64\x64_info\x18\x05 \x01(\t*\xe2\x12\n\x08\x45ventIds\x12\x18\n\x14\x45VENT_NAME_UNDEFINED\x10\x00\x12\x1e\n\x1a\x45VENT_TRANSCEIVER_PLUG_OUT\x10\x64\x12\x1d\n\x19\x45VENT_TRANSCEIVER_PLUG_IN\x10\x65\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD\x10\x66\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD\x10g\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD\x10h\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\x10i\x12-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD\x10j\x12-\n)EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD\x10k\x12.\n*EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\x10l\x12.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD\x10m\x12.\n*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\x10n\x12.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD\x10o\x12\x1d\n\x19\x45VENT_TRANSCEIVER_FAILURE\x10p\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED\x10q\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\x10r\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED\x10s\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\x10t\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED\x10u\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED\x10v\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED\x10w\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\x10x\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\x10y\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED\x10z\x12\'\n#EVENT_TRANSCEIVER_FAILURE_RECOVERED\x10{\x12\x17\n\x12\x45VENT_PSU_PLUG_OUT\x10\xc8\x01\x12\x16\n\x11\x45VENT_PSU_PLUG_IN\x10\xc9\x01\x12\x16\n\x11\x45VENT_PSU_FAILURE\x10\xca\x01\x12 \n\x1b\x45VENT_PSU_FAILURE_RECOVERED\x10\xcb\x01\x12\x16\n\x11\x45VENT_FAN_FAILURE\x10\xac\x02\x12\x17\n\x12\x45VENT_FAN_PLUG_OUT\x10\xad\x02\x12\x16\n\x11\x45VENT_FAN_PLUG_IN\x10\xae\x02\x12 \n\x1b\x45VENT_FAN_FAILURE_RECOVERED\x10\xaf\x02\x12)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\x10\x90\x03\x12&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\x10\x91\x03\x12\x33\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\x92\x03\x12\x30\n+EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\x93\x03\x12$\n\x1f\x45VENT_CPU_USAGE_ABOVE_THRESHOLD\x10\x94\x03\x12.\n)EVENT_CPU_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\x95\x03\x12\x1a\n\x15\x45VENT_HW_DEVICE_RESET\x10\xf4\x03\x12/\n*EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL\x10\xf5\x03\x12,\n\'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\x10\xf6\x03\x12\x39\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\xf7\x03\x12\x36\n1EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\xf8\x03\x12\x1b\n\x16\x45VENT_HW_DEVICE_REBOOT\x10\xf9\x03\x12\'\n\"EVENT_HW_TEMPERATURE_SENSOR_FAILED\x10\xfa\x03\x12,\n\'EVENT_HW_ALL_TEMPERATURE_SENSORS_FAILED\x10\xfb\x03\x12(\n#EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD\x10\xfc\x03\x12\x32\n-EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xfd\x03\x12*\n%EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD\x10\xfe\x03\x12\x34\n/EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xff\x03\x12\x1e\n\x19\x45VENT_HW_NTP_SYNC_FAILURE\x10\x80\x04\x12(\n#EVENT_HW_NTP_SYNC_FAILURE_RECOVERED\x10\x81\x04\x12\x1d\n\x18\x45VENT_LINE_CARD_PLUG_OUT\x10\xd8\x04\x12\x1c\n\x17\x45VENT_LINE_CARD_PLUG_IN\x10\xd9\x04\x32\xed\x01\n\x1dNativeEventsManagementService\x12\x36\n\nListEvents\x12\x0f.dmi.HardwareID\x1a\x17.dmi.ListEventsResponse\x12^\n\x19UpdateEventsConfiguration\x12\x1f.dmi.EventsConfigurationRequest\x1a .dmi.EventsConfigurationResponse\x12\x34\n\x0cStreamEvents\x12\x16.google.protobuf.Empty\x1a\n.dmi.Event0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')

_EVENTIDS = DESCRIPTOR.enum_types_by_name['EventIds']
EventIds = enum_type_wrapper.EnumTypeWrapper(_EVENTIDS)
EVENT_NAME_UNDEFINED = 0
EVENT_TRANSCEIVER_PLUG_OUT = 100
EVENT_TRANSCEIVER_PLUG_IN = 101
EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD = 102
EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD = 103
EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD = 104
EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD = 105
EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD = 106
EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD = 107
EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD = 108
EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD = 109
EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD = 110
EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD = 111
EVENT_TRANSCEIVER_FAILURE = 112
EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED = 113
EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED = 114
EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED = 115
EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED = 116
EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED = 117
EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED = 118
EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED = 119
EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED = 120
EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED = 121
EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED = 122
EVENT_TRANSCEIVER_FAILURE_RECOVERED = 123
EVENT_PSU_PLUG_OUT = 200
EVENT_PSU_PLUG_IN = 201
EVENT_PSU_FAILURE = 202
EVENT_PSU_FAILURE_RECOVERED = 203
EVENT_FAN_FAILURE = 300
EVENT_FAN_PLUG_OUT = 301
EVENT_FAN_PLUG_IN = 302
EVENT_FAN_FAILURE_RECOVERED = 303
EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL = 400
EVENT_CPU_TEMPERATURE_ABOVE_FATAL = 401
EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED = 402
EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED = 403
EVENT_CPU_USAGE_ABOVE_THRESHOLD = 404
EVENT_CPU_USAGE_ABOVE_THRESHOLD_RECOVERED = 405
EVENT_HW_DEVICE_RESET = 500
EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL = 501
EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL = 502
EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED = 503
EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED = 504
EVENT_HW_DEVICE_REBOOT = 505
EVENT_HW_TEMPERATURE_SENSOR_FAILED = 506
EVENT_HW_ALL_TEMPERATURE_SENSORS_FAILED = 507
EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD = 508
EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD_RECOVERED = 509
EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD = 510
EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD_RECOVERED = 511
EVENT_HW_NTP_SYNC_FAILURE = 512
EVENT_HW_NTP_SYNC_FAILURE_RECOVERED = 513
EVENT_LINE_CARD_PLUG_OUT = 600
EVENT_LINE_CARD_PLUG_IN = 601


_VALUETYPE = DESCRIPTOR.message_types_by_name['ValueType']
_WATERMARKS = DESCRIPTOR.message_types_by_name['WaterMarks']
_THRESHOLDS = DESCRIPTOR.message_types_by_name['Thresholds']
_THRESHOLDINFORMATION = DESCRIPTOR.message_types_by_name['ThresholdInformation']
_EVENTCFG = DESCRIPTOR.message_types_by_name['EventCfg']
_EVENTSCFG = DESCRIPTOR.message_types_by_name['EventsCfg']
_LISTEVENTSRESPONSE = DESCRIPTOR.message_types_by_name['ListEventsResponse']
_EVENTSCONFIGURATIONREQUEST = DESCRIPTOR.message_types_by_name['EventsConfigurationRequest']
_EVENTSCONFIGURATIONRESPONSE = DESCRIPTOR.message_types_by_name['EventsConfigurationResponse']
_EVENTMETADATA = DESCRIPTOR.message_types_by_name['EventMetaData']
_EVENT = DESCRIPTOR.message_types_by_name['Event']
_LISTEVENTSRESPONSE_REASON = _LISTEVENTSRESPONSE.enum_types_by_name['Reason']
_EVENTSCONFIGURATIONRESPONSE_REASON = _EVENTSCONFIGURATIONRESPONSE.enum_types_by_name['Reason']
ValueType = _reflection.GeneratedProtocolMessageType('ValueType', (_message.Message,), {
  'DESCRIPTOR' : _VALUETYPE,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.ValueType)
  })
_sym_db.RegisterMessage(ValueType)

WaterMarks = _reflection.GeneratedProtocolMessageType('WaterMarks', (_message.Message,), {
  'DESCRIPTOR' : _WATERMARKS,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.WaterMarks)
  })
_sym_db.RegisterMessage(WaterMarks)

Thresholds = _reflection.GeneratedProtocolMessageType('Thresholds', (_message.Message,), {
  'DESCRIPTOR' : _THRESHOLDS,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.Thresholds)
  })
_sym_db.RegisterMessage(Thresholds)

ThresholdInformation = _reflection.GeneratedProtocolMessageType('ThresholdInformation', (_message.Message,), {
  'DESCRIPTOR' : _THRESHOLDINFORMATION,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.ThresholdInformation)
  })
_sym_db.RegisterMessage(ThresholdInformation)

EventCfg = _reflection.GeneratedProtocolMessageType('EventCfg', (_message.Message,), {
  'DESCRIPTOR' : _EVENTCFG,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventCfg)
  })
_sym_db.RegisterMessage(EventCfg)

EventsCfg = _reflection.GeneratedProtocolMessageType('EventsCfg', (_message.Message,), {
  'DESCRIPTOR' : _EVENTSCFG,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventsCfg)
  })
_sym_db.RegisterMessage(EventsCfg)

ListEventsResponse = _reflection.GeneratedProtocolMessageType('ListEventsResponse', (_message.Message,), {
  'DESCRIPTOR' : _LISTEVENTSRESPONSE,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.ListEventsResponse)
  })
_sym_db.RegisterMessage(ListEventsResponse)

EventsConfigurationRequest = _reflection.GeneratedProtocolMessageType('EventsConfigurationRequest', (_message.Message,), {
  'DESCRIPTOR' : _EVENTSCONFIGURATIONREQUEST,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventsConfigurationRequest)
  })
_sym_db.RegisterMessage(EventsConfigurationRequest)

EventsConfigurationResponse = _reflection.GeneratedProtocolMessageType('EventsConfigurationResponse', (_message.Message,), {
  'DESCRIPTOR' : _EVENTSCONFIGURATIONRESPONSE,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventsConfigurationResponse)
  })
_sym_db.RegisterMessage(EventsConfigurationResponse)

EventMetaData = _reflection.GeneratedProtocolMessageType('EventMetaData', (_message.Message,), {
  'DESCRIPTOR' : _EVENTMETADATA,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventMetaData)
  })
_sym_db.RegisterMessage(EventMetaData)

Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), {
  'DESCRIPTOR' : _EVENT,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.Event)
  })
_sym_db.RegisterMessage(Event)

_NATIVEEVENTSMANAGEMENTSERVICE = DESCRIPTOR.services_by_name['NativeEventsManagementService']
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'Z9github.com/opencord/device-management-interface/v3/go/dmi'
  _EVENTIDS._serialized_start=1667
  _EVENTIDS._serialized_end=4069
  _VALUETYPE._serialized_start=136
  _VALUETYPE._serialized_end=253
  _WATERMARKS._serialized_start=255
  _WATERMARKS._serialized_end=326
  _THRESHOLDS._serialized_start=328
  _THRESHOLDS._serialized_end=421
  _THRESHOLDINFORMATION._serialized_start=423
  _THRESHOLDINFORMATION._serialized_end=522
  _EVENTCFG._serialized_start=525
  _EVENTCFG._serialized_end=663
  _EVENTSCFG._serialized_start=665
  _EVENTSCFG._serialized_end=706
  _LISTEVENTSRESPONSE._serialized_start=709
  _LISTEVENTSRESPONSE._serialized_end=957
  _LISTEVENTSRESPONSE_REASON._serialized_start=863
  _LISTEVENTSRESPONSE_REASON._serialized_end=957
  _EVENTSCONFIGURATIONREQUEST._serialized_start=960
  _EVENTSCONFIGURATIONREQUEST._serialized_end=1096
  _EVENTSCONFIGURATIONRESPONSE._serialized_start=1099
  _EVENTSCONFIGURATIONRESPONSE._serialized_end=1353
  _EVENTSCONFIGURATIONRESPONSE_REASON._serialized_start=1239
  _EVENTSCONFIGURATIONRESPONSE_REASON._serialized_end=1353
  _EVENTMETADATA._serialized_start=1355
  _EVENTMETADATA._serialized_end=1461
  _EVENT._serialized_start=1464
  _EVENT._serialized_end=1664
  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_start=4072
  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_end=4309
# @@protoc_insertion_point(module_scope)
