From bd5af5170e51e8e80219811f85cfdfd4effa20cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AE=D1=80=D0=B8=D0=B9=20=D0=9F=D0=B5=D1=80=D1=88=D0=B8?= =?UTF-8?q?=D0=BD?= Date: Fri, 21 Jan 2022 08:29:48 +0500 Subject: [PATCH] proto++ --- protobuf/login-response.proto | 25 +------ protobuf/login_response_pb2.py | 47 ++----------- protobuf/per-session-info.proto | 22 +++++++ protobuf/per_session_info_pb2.py | 36 +++++++++- protobuf/tcp-node-msgs.proto | 110 +++++++++++++++++++++++++++---- protobuf/tcp_node_msgs_pb2.py | 80 ++++++++++++++++++++-- protobuf/udp-node-msgs.proto | 12 +--- protobuf/udp_node_msgs_pb2.py | 95 +++++++++++--------------- 8 files changed, 273 insertions(+), 154 deletions(-) diff --git a/protobuf/login-response.proto b/protobuf/login-response.proto index eb52ef8..bc86bad 100644 --- a/protobuf/login-response.proto +++ b/protobuf/login-response.proto @@ -1,29 +1,8 @@ syntax = "proto2"; /* XXX: This is a first approximation of login response. Not looked into or verified. */ - -message UDPNode { - required string ip = 1; - required uint32 port = 2; -} - -message UDPNodes { - /* First server here is not a UDP node, it's the TCP telemetry server (34.218.60.145) */ - repeated UDPNode node = 1; -} - -message APIs { - optional string todaysplan_url = 1; - optional string trainingpeaks_url = 2; -} - -message ServerInfo { - required string relay_url = 1; - required APIs apis = 2; - required uint64 time = 3; - optional UDPNodes nodes = 4; -} +import "per-session-info.proto"; message LoginResponse { required string session_state = 1; - required ServerInfo info = 2; + required PerSessionInfo info = 2; } diff --git a/protobuf/login_response_pb2.py b/protobuf/login_response_pb2.py index f4f4ab3..c4dea1e 100644 --- a/protobuf/login_response_pb2.py +++ b/protobuf/login_response_pb2.py @@ -12,45 +12,14 @@ from google.protobuf import symbol_database as _symbol_database _sym_db = _symbol_database.Default() +import per_session_info_pb2 as per__session__info__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14login-response.proto\"#\n\x07UDPNode\x12\n\n\x02ip\x18\x01 \x02(\t\x12\x0c\n\x04port\x18\x02 \x02(\r\"\"\n\x08UDPNodes\x12\x16\n\x04node\x18\x01 \x03(\x0b\x32\x08.UDPNode\"9\n\x04\x41PIs\x12\x16\n\x0etodaysplan_url\x18\x01 \x01(\t\x12\x19\n\x11trainingpeaks_url\x18\x02 \x01(\t\"\\\n\nServerInfo\x12\x11\n\trelay_url\x18\x01 \x02(\t\x12\x13\n\x04\x61pis\x18\x02 \x02(\x0b\x32\x05.APIs\x12\x0c\n\x04time\x18\x03 \x02(\x04\x12\x18\n\x05nodes\x18\x04 \x01(\x0b\x32\t.UDPNodes\"A\n\rLoginResponse\x12\x15\n\rsession_state\x18\x01 \x02(\t\x12\x19\n\x04info\x18\x02 \x02(\x0b\x32\x0b.ServerInfo') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14login-response.proto\x1a\x16per-session-info.proto\"E\n\rLoginResponse\x12\x15\n\rsession_state\x18\x01 \x02(\t\x12\x1d\n\x04info\x18\x02 \x02(\x0b\x32\x0f.PerSessionInfo') -_UDPNODE = DESCRIPTOR.message_types_by_name['UDPNode'] -_UDPNODES = DESCRIPTOR.message_types_by_name['UDPNodes'] -_APIS = DESCRIPTOR.message_types_by_name['APIs'] -_SERVERINFO = DESCRIPTOR.message_types_by_name['ServerInfo'] _LOGINRESPONSE = DESCRIPTOR.message_types_by_name['LoginResponse'] -UDPNode = _reflection.GeneratedProtocolMessageType('UDPNode', (_message.Message,), { - 'DESCRIPTOR' : _UDPNODE, - '__module__' : 'login_response_pb2' - # @@protoc_insertion_point(class_scope:UDPNode) - }) -_sym_db.RegisterMessage(UDPNode) - -UDPNodes = _reflection.GeneratedProtocolMessageType('UDPNodes', (_message.Message,), { - 'DESCRIPTOR' : _UDPNODES, - '__module__' : 'login_response_pb2' - # @@protoc_insertion_point(class_scope:UDPNodes) - }) -_sym_db.RegisterMessage(UDPNodes) - -APIs = _reflection.GeneratedProtocolMessageType('APIs', (_message.Message,), { - 'DESCRIPTOR' : _APIS, - '__module__' : 'login_response_pb2' - # @@protoc_insertion_point(class_scope:APIs) - }) -_sym_db.RegisterMessage(APIs) - -ServerInfo = _reflection.GeneratedProtocolMessageType('ServerInfo', (_message.Message,), { - 'DESCRIPTOR' : _SERVERINFO, - '__module__' : 'login_response_pb2' - # @@protoc_insertion_point(class_scope:ServerInfo) - }) -_sym_db.RegisterMessage(ServerInfo) - LoginResponse = _reflection.GeneratedProtocolMessageType('LoginResponse', (_message.Message,), { 'DESCRIPTOR' : _LOGINRESPONSE, '__module__' : 'login_response_pb2' @@ -61,14 +30,6 @@ _sym_db.RegisterMessage(LoginResponse) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _UDPNODE._serialized_start=24 - _UDPNODE._serialized_end=59 - _UDPNODES._serialized_start=61 - _UDPNODES._serialized_end=95 - _APIS._serialized_start=97 - _APIS._serialized_end=154 - _SERVERINFO._serialized_start=156 - _SERVERINFO._serialized_end=248 - _LOGINRESPONSE._serialized_start=250 - _LOGINRESPONSE._serialized_end=315 + _LOGINRESPONSE._serialized_start=48 + _LOGINRESPONSE._serialized_end=117 # @@protoc_insertion_point(module_scope) diff --git a/protobuf/per-session-info.proto b/protobuf/per-session-info.proto index 950e7ff..2573cc4 100644 --- a/protobuf/per-session-info.proto +++ b/protobuf/per-session-info.proto @@ -1,4 +1,26 @@ syntax = "proto2"; + +message TcpAddress { + optional string ip = 1; + optional int32 port = 2; + optional int32 f3 = 3; + optional int32 f4 = 4; +} + +message TcpConfig { + /* First server: the TCP telemetry server (34.218.60.145) */ + repeated TcpAddress node = 1; +} + +message PartnersUrls { + optional string todaysplan_url = 1; + optional string trainingpeaks_url = 2; +} + message PerSessionInfo { required string relay_url = 1; + optional PartnersUrls apis = 2; + optional uint64 time = 3; + optional TcpConfig nodes = 4; + optional int32 f5 = 5; } diff --git a/protobuf/per_session_info_pb2.py b/protobuf/per_session_info_pb2.py index 203ef68..2477dce 100644 --- a/protobuf/per_session_info_pb2.py +++ b/protobuf/per_session_info_pb2.py @@ -14,11 +14,35 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16per-session-info.proto\"#\n\x0ePerSessionInfo\x12\x11\n\trelay_url\x18\x01 \x02(\t') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16per-session-info.proto\">\n\nTcpAddress\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"&\n\tTcpConfig\x12\x19\n\x04node\x18\x01 \x03(\x0b\x32\x0b.TcpAddress\"A\n\x0cPartnersUrls\x12\x16\n\x0etodaysplan_url\x18\x01 \x01(\t\x12\x19\n\x11trainingpeaks_url\x18\x02 \x01(\t\"u\n\x0ePerSessionInfo\x12\x11\n\trelay_url\x18\x01 \x02(\t\x12\x1b\n\x04\x61pis\x18\x02 \x01(\x0b\x32\r.PartnersUrls\x12\x0c\n\x04time\x18\x03 \x01(\x04\x12\x19\n\x05nodes\x18\x04 \x01(\x0b\x32\n.TcpConfig\x12\n\n\x02\x66\x35\x18\x05 \x01(\x05') +_TCPADDRESS = DESCRIPTOR.message_types_by_name['TcpAddress'] +_TCPCONFIG = DESCRIPTOR.message_types_by_name['TcpConfig'] +_PARTNERSURLS = DESCRIPTOR.message_types_by_name['PartnersUrls'] _PERSESSIONINFO = DESCRIPTOR.message_types_by_name['PerSessionInfo'] +TcpAddress = _reflection.GeneratedProtocolMessageType('TcpAddress', (_message.Message,), { + 'DESCRIPTOR' : _TCPADDRESS, + '__module__' : 'per_session_info_pb2' + # @@protoc_insertion_point(class_scope:TcpAddress) + }) +_sym_db.RegisterMessage(TcpAddress) + +TcpConfig = _reflection.GeneratedProtocolMessageType('TcpConfig', (_message.Message,), { + 'DESCRIPTOR' : _TCPCONFIG, + '__module__' : 'per_session_info_pb2' + # @@protoc_insertion_point(class_scope:TcpConfig) + }) +_sym_db.RegisterMessage(TcpConfig) + +PartnersUrls = _reflection.GeneratedProtocolMessageType('PartnersUrls', (_message.Message,), { + 'DESCRIPTOR' : _PARTNERSURLS, + '__module__' : 'per_session_info_pb2' + # @@protoc_insertion_point(class_scope:PartnersUrls) + }) +_sym_db.RegisterMessage(PartnersUrls) + PerSessionInfo = _reflection.GeneratedProtocolMessageType('PerSessionInfo', (_message.Message,), { 'DESCRIPTOR' : _PERSESSIONINFO, '__module__' : 'per_session_info_pb2' @@ -29,6 +53,12 @@ _sym_db.RegisterMessage(PerSessionInfo) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _PERSESSIONINFO._serialized_start=26 - _PERSESSIONINFO._serialized_end=61 + _TCPADDRESS._serialized_start=26 + _TCPADDRESS._serialized_end=88 + _TCPCONFIG._serialized_start=90 + _TCPCONFIG._serialized_end=128 + _PARTNERSURLS._serialized_start=130 + _PARTNERSURLS._serialized_end=195 + _PERSESSIONINFO._serialized_start=197 + _PERSESSIONINFO._serialized_end=314 # @@protoc_insertion_point(module_scope) diff --git a/protobuf/tcp-node-msgs.proto b/protobuf/tcp-node-msgs.proto index 6512955..a26b5c8 100644 --- a/protobuf/tcp-node-msgs.proto +++ b/protobuf/tcp-node-msgs.proto @@ -3,33 +3,32 @@ syntax = "proto2"; // Initial TCP response below //////////////////////////////////////// -message ServerDetails { +message ServerDetails { //TODO: check if original name = RelayAddress required int32 f1 = 1; required int32 f2 = 2; required string ip = 3; required int32 port = 4; } -message ServersType1 { +message ServersType1 { //TODO: check if original name = UdpConfig repeated ServerDetails details = 1; optional int32 f2 = 2; optional int32 f3 = 3; optional int32 f4 = 4; } -message ServerConnectionDetailsWrapper { +message ServerConnectionDetailsWrapper { //TODO: check if original name = RelayAddressesVOD required int32 f1 = 1; // Value seems to be the same as ConnDetails' f1 required int32 f2 = 2; // Value seems to be the same as ConnDetails' f2 repeated ServerDetails details = 3; } -message ServersType2 { +message ServersType2 { //TODO: check if original name = UdpConfigVOD repeated ServerConnectionDetailsWrapper details_wrapper = 1; required int32 port = 2; } -// login-response.proto already defines ServerInfo and Python 3 doesn't like reusing it -message TCPServerInfo { +message TCPServerInfo { //TODO: check if original name = ServerToClient optional int32 f1 = 1; required int32 player_id = 2; required int32 f3 = 3; @@ -37,14 +36,14 @@ message TCPServerInfo { repeated ServersType2 other_servers = 25; } -message TCPHello { +message TCPHello { //TODO: check if original name = ServerToClient required int32 player_id = 2; optional int32 f3 = 3; // ?? always 0? optional int32 seqno = 4; optional int32 f13 = 13; } -message TCPCompanionConnect { +message TCPCompanionConnect { //TODO: check if original name = ServerToClient required int32 player_id = 2; required int32 dummy = 3; required string zc_local_ip = 12; @@ -56,7 +55,7 @@ message TCPCompanionConnect { // Recurring TCP response below //////////////////////////////////////// -message RecurringTCPResponse { +message RecurringTCPResponse { //TODO: check if original name = ServerToClient optional int32 f1 = 1; optional int32 player_id = 2; optional int32 f3 = 3; @@ -64,14 +63,101 @@ message RecurringTCPResponse { } // Zwift companion protocol +//TODO: enum SocialPlayerActionType 0,1,2,3: SOCIAL_ACTION_UNKNOWN_TYPE=?, SOCIAL_TEXT_MESSAGE=?, SOCIAL_FLAG=?, ?=? +message SocialPlayerAction { + optional int64 f1 = 1; + optional int64 f2 = 2; + optional uint32 f3 = 3; + optional string f4 = 4; + optional string f5 = 5; + optional string f6 = 6; + optional string f7 = 7; + optional uint32 f8 = 8; + optional int32 f9 = 9; + optional int32 f10 = 10; + optional int64 f11 = 11; +} + +message MobileAlertResponse { + optional int64 f1 = 1; + optional int64 f2 = 2; +} + +message BLEPeripheralCharacteristic { + optional string f1 = 1; + optional bytes f2 = 2; +} + +//TODO: PeripheralResponseType UNKNOWN_RESPONSE_TYPE(0), PERIPHERAL_ERROR(1), CHARACTERISTIC_VALUE(2), PERIPHERAL_CONNECTED(3), PERIPHERAL_DISCONNECTED(4), PERIPHERAL_DISCOVERED(5); +// PeripheralErrorType UNKNOWN_ERROR(0), PERMISSION_DENIED(1), BLE_UNSUPPORTED(2), BLE_POWERED_OFF(3); +message BLEPeripheralResponse { + optional uint32 f1 = 1; + optional uint32 f2 = 2; + optional string f3 = 3; + optional BLEPeripheral f4 = 4; + optional BLEPeripheralCharacteristic f5 = 5; +} + +/*TODO: UNKNOWN(0), FLAGS(1), INCOMPLETE_UUIDS_16_BIT(2), COMPLETE_UUIDS_16_BIT(3), INCOMPLETE_UUIDS_32_BIT(4), + COMPLETE_UUIDS_32_BIT(5), INCOMPLETE_UUIDS_128_BIT(6), COMPLETE_UUIDS_128_BIT(7), SHORTENED_LOCAL_NAME(8), + COMPLETE_LOCAL_NAME(9), TX_POWER_LEVEL(10), CLASS_OF_DEVICE(13), SIMPLE_PAIRING_HASH(14), SIMPLE_PAIRING_RANDOMIZER(15), + DEVICE_ID(16), SECURITY_MANAGER_OOB_FLAGS(17), SLAVE_CONNECTION_INTERVAL(18), SOLICITATION_UUIDS_16_BIT(20), + SOLICITATION_UUIDS_128_BIT(21), SERVICE_DATA_16_BIT(22), PUBLIC_TARGET_ADDRESS(23), RANDOM_TARGET_ADDRESS(24), + APPEARANCE(25), ADVERTISING_INTERVAL(26), LE_BLUETOOTH_DEVICE_ADDRESS(27), LE_ROLE(28), SIMPLE_PAIRING_HASH_C256(29), + SIMPLE_PAIRING_RANDOMIZER_R256(30), SOLICITATION_UUIDS_32_BIT(31), SERVICE_DATA_32_BIT(32), SERVICE_DATA_128_BIT(33), + LE_SECURE_CONFIRMATION_VALUE(34), LE_SECURE_RANDOM_VALUE(35), URI(36), INDOOR_POSITIONING(37), TRANSPORT_DISCOVERY_DATA(38), + LE_SUPPORTED_FEATURES(39), CHANNEL_MAP_UPDATE_INDICATION(40), PB_ADV(41), MESH_MESSAGE(42), MESH_BEACON(43), BIG_INFO(44), + BROADCAST_CODE(45), INFORMATION_DATA_3D(61), MANUFACTURER_DATA(255); */ +message BLEAdvertisementDataSection { + optional int32 f1 = 1; + optional bytes f2 = 2; +} + +message BLEPeripheral { + optional string f1 = 1; + optional string f2 = 2; + optional int32 f3 = 3; +} + +/*TODO: CONNECTABLE_UNDIRECTED(0), CONNECTABLE_DIRECTED(1), SCANNABLE_UNDIRECTED(2), NON_CONNECTABLE_UNDIRECTED(3), + SCAN_RESPONSE(4), EXTENDED(5); */ +message BLEAdvertisement { + optional BLEPeripheral f1 = 1; + repeated BLEAdvertisementDataSection f2 = 2; + optional int32 f3 = 3; +} message PhoneToGameCommand { required int32 seqno = 1; - required int32 command = 2; - required int32 command_copy = 10; + required uint32 command = 2; + optional int64 f3 = 3; + optional string f4 = 4; + optional int64 f5 = 5; + optional string f6 = 6; + optional int64 f7 = 7; + optional int32 f8 = 8; + optional uint32 f9 = 9; + required uint32 command_copy = 10; + optional SocialPlayerAction f11 = 11; + /* no 12 */ + optional MobileAlertResponse f13 = 13; + /* no 14-17*/ + optional BLEPeripheralResponse f18 = 18; + optional int64 f19 = 19; + optional string f20 = 20; + optional bytes f21 = 21; + optional BLEAdvertisement f22 = 22; } message PhoneToGame { - required int32 player_id = 1; + required int64 player_id = 1; repeated PhoneToGameCommand command = 2; + optional float f3 = 3; + optional float f4 = 4; + optional float f5 = 5; + optional float f6 = 6; + optional float f7 = 7; + optional float f8 = 8; + optional double f9 = 9; + optional int32 f10 = 10; } \ No newline at end of file diff --git a/protobuf/tcp_node_msgs_pb2.py b/protobuf/tcp_node_msgs_pb2.py index 23254b0..daf1c89 100644 --- a/protobuf/tcp_node_msgs_pb2.py +++ b/protobuf/tcp_node_msgs_pb2.py @@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13tcp-node-msgs.proto\"A\n\rServerDetails\x12\n\n\x02\x66\x31\x18\x01 \x02(\x05\x12\n\n\x02\x66\x32\x18\x02 \x02(\x05\x12\n\n\x02ip\x18\x03 \x02(\t\x12\x0c\n\x04port\x18\x04 \x02(\x05\"S\n\x0cServersType1\x12\x1f\n\x07\x64\x65tails\x18\x01 \x03(\x0b\x32\x0e.ServerDetails\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"Y\n\x1eServerConnectionDetailsWrapper\x12\n\n\x02\x66\x31\x18\x01 \x02(\x05\x12\n\n\x02\x66\x32\x18\x02 \x02(\x05\x12\x1f\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x0e.ServerDetails\"V\n\x0cServersType2\x12\x38\n\x0f\x64\x65tails_wrapper\x18\x01 \x03(\x0b\x32\x1f.ServerConnectionDetailsWrapper\x12\x0c\n\x04port\x18\x02 \x02(\x05\"\x80\x01\n\rTCPServerInfo\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\x11\n\tplayer_id\x18\x02 \x02(\x05\x12\n\n\x02\x66\x33\x18\x03 \x02(\x05\x12\x1e\n\x07servers\x18\x18 \x03(\x0b\x32\r.ServersType1\x12$\n\rother_servers\x18\x19 \x03(\x0b\x32\r.ServersType2\"E\n\x08TCPHello\x12\x11\n\tplayer_id\x18\x02 \x02(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\r\n\x05seqno\x18\x04 \x01(\x05\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x05\"q\n\x13TCPCompanionConnect\x12\x11\n\tplayer_id\x18\x02 \x02(\x05\x12\r\n\x05\x64ummy\x18\x03 \x02(\x05\x12\x13\n\x0bzc_local_ip\x18\x0c \x02(\t\x12\x15\n\rzc_local_port\x18\x0f \x02(\x05\x12\x0c\n\x04kind\x18\x10 \x02(\x05\"N\n\x14RecurringTCPResponse\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\x11\n\tplayer_id\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x05\"J\n\x12PhoneToGameCommand\x12\r\n\x05seqno\x18\x01 \x02(\x05\x12\x0f\n\x07\x63ommand\x18\x02 \x02(\x05\x12\x14\n\x0c\x63ommand_copy\x18\n \x02(\x05\"F\n\x0bPhoneToGame\x12\x11\n\tplayer_id\x18\x01 \x02(\x05\x12$\n\x07\x63ommand\x18\x02 \x03(\x0b\x32\x13.PhoneToGameCommand') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13tcp-node-msgs.proto\"A\n\rServerDetails\x12\n\n\x02\x66\x31\x18\x01 \x02(\x05\x12\n\n\x02\x66\x32\x18\x02 \x02(\x05\x12\n\n\x02ip\x18\x03 \x02(\t\x12\x0c\n\x04port\x18\x04 \x02(\x05\"S\n\x0cServersType1\x12\x1f\n\x07\x64\x65tails\x18\x01 \x03(\x0b\x32\x0e.ServerDetails\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"Y\n\x1eServerConnectionDetailsWrapper\x12\n\n\x02\x66\x31\x18\x01 \x02(\x05\x12\n\n\x02\x66\x32\x18\x02 \x02(\x05\x12\x1f\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x0e.ServerDetails\"V\n\x0cServersType2\x12\x38\n\x0f\x64\x65tails_wrapper\x18\x01 \x03(\x0b\x32\x1f.ServerConnectionDetailsWrapper\x12\x0c\n\x04port\x18\x02 \x02(\x05\"\x80\x01\n\rTCPServerInfo\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\x11\n\tplayer_id\x18\x02 \x02(\x05\x12\n\n\x02\x66\x33\x18\x03 \x02(\x05\x12\x1e\n\x07servers\x18\x18 \x03(\x0b\x32\r.ServersType1\x12$\n\rother_servers\x18\x19 \x03(\x0b\x32\r.ServersType2\"E\n\x08TCPHello\x12\x11\n\tplayer_id\x18\x02 \x02(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\r\n\x05seqno\x18\x04 \x01(\x05\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x05\"q\n\x13TCPCompanionConnect\x12\x11\n\tplayer_id\x18\x02 \x02(\x05\x12\r\n\x05\x64ummy\x18\x03 \x02(\x05\x12\x13\n\x0bzc_local_ip\x18\x0c \x02(\t\x12\x15\n\rzc_local_port\x18\x0f \x02(\x05\x12\x0c\n\x04kind\x18\x10 \x02(\x05\"N\n\x14RecurringTCPResponse\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\x11\n\tplayer_id\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x05\"\x9a\x01\n\x12SocialPlayerAction\x12\n\n\x02\x66\x31\x18\x01 \x01(\x03\x12\n\n\x02\x66\x32\x18\x02 \x01(\x03\x12\n\n\x02\x66\x33\x18\x03 \x01(\r\x12\n\n\x02\x66\x34\x18\x04 \x01(\t\x12\n\n\x02\x66\x35\x18\x05 \x01(\t\x12\n\n\x02\x66\x36\x18\x06 \x01(\t\x12\n\n\x02\x66\x37\x18\x07 \x01(\t\x12\n\n\x02\x66\x38\x18\x08 \x01(\r\x12\n\n\x02\x66\x39\x18\t \x01(\x05\x12\x0b\n\x03\x66\x31\x30\x18\n \x01(\x05\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x03\"-\n\x13MobileAlertResponse\x12\n\n\x02\x66\x31\x18\x01 \x01(\x03\x12\n\n\x02\x66\x32\x18\x02 \x01(\x03\"5\n\x1b\x42LEPeripheralCharacteristic\x12\n\n\x02\x66\x31\x18\x01 \x01(\t\x12\n\n\x02\x66\x32\x18\x02 \x01(\x0c\"\x81\x01\n\x15\x42LEPeripheralResponse\x12\n\n\x02\x66\x31\x18\x01 \x01(\r\x12\n\n\x02\x66\x32\x18\x02 \x01(\r\x12\n\n\x02\x66\x33\x18\x03 \x01(\t\x12\x1a\n\x02\x66\x34\x18\x04 \x01(\x0b\x32\x0e.BLEPeripheral\x12(\n\x02\x66\x35\x18\x05 \x01(\x0b\x32\x1c.BLEPeripheralCharacteristic\"5\n\x1b\x42LEAdvertisementDataSection\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x0c\"3\n\rBLEPeripheral\x12\n\n\x02\x66\x31\x18\x01 \x01(\t\x12\n\n\x02\x66\x32\x18\x02 \x01(\t\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\"d\n\x10\x42LEAdvertisement\x12\x1a\n\x02\x66\x31\x18\x01 \x01(\x0b\x32\x0e.BLEPeripheral\x12(\n\x02\x66\x32\x18\x02 \x03(\x0b\x32\x1c.BLEAdvertisementDataSection\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\"\xcf\x02\n\x12PhoneToGameCommand\x12\r\n\x05seqno\x18\x01 \x02(\x05\x12\x0f\n\x07\x63ommand\x18\x02 \x02(\r\x12\n\n\x02\x66\x33\x18\x03 \x01(\x03\x12\n\n\x02\x66\x34\x18\x04 \x01(\t\x12\n\n\x02\x66\x35\x18\x05 \x01(\x03\x12\n\n\x02\x66\x36\x18\x06 \x01(\t\x12\n\n\x02\x66\x37\x18\x07 \x01(\x03\x12\n\n\x02\x66\x38\x18\x08 \x01(\x05\x12\n\n\x02\x66\x39\x18\t \x01(\r\x12\x14\n\x0c\x63ommand_copy\x18\n \x02(\r\x12 \n\x03\x66\x31\x31\x18\x0b \x01(\x0b\x32\x13.SocialPlayerAction\x12!\n\x03\x66\x31\x33\x18\r \x01(\x0b\x32\x14.MobileAlertResponse\x12#\n\x03\x66\x31\x38\x18\x12 \x01(\x0b\x32\x16.BLEPeripheralResponse\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\x03\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\t\x12\x0b\n\x03\x66\x32\x31\x18\x15 \x01(\x0c\x12\x1e\n\x03\x66\x32\x32\x18\x16 \x01(\x0b\x32\x11.BLEAdvertisement\"\xa7\x01\n\x0bPhoneToGame\x12\x11\n\tplayer_id\x18\x01 \x02(\x03\x12$\n\x07\x63ommand\x18\x02 \x03(\x0b\x32\x13.PhoneToGameCommand\x12\n\n\x02\x66\x33\x18\x03 \x01(\x02\x12\n\n\x02\x66\x34\x18\x04 \x01(\x02\x12\n\n\x02\x66\x35\x18\x05 \x01(\x02\x12\n\n\x02\x66\x36\x18\x06 \x01(\x02\x12\n\n\x02\x66\x37\x18\x07 \x01(\x02\x12\n\n\x02\x66\x38\x18\x08 \x01(\x02\x12\n\n\x02\x66\x39\x18\t \x01(\x01\x12\x0b\n\x03\x66\x31\x30\x18\n \x01(\x05') @@ -26,6 +26,13 @@ _TCPSERVERINFO = DESCRIPTOR.message_types_by_name['TCPServerInfo'] _TCPHELLO = DESCRIPTOR.message_types_by_name['TCPHello'] _TCPCOMPANIONCONNECT = DESCRIPTOR.message_types_by_name['TCPCompanionConnect'] _RECURRINGTCPRESPONSE = DESCRIPTOR.message_types_by_name['RecurringTCPResponse'] +_SOCIALPLAYERACTION = DESCRIPTOR.message_types_by_name['SocialPlayerAction'] +_MOBILEALERTRESPONSE = DESCRIPTOR.message_types_by_name['MobileAlertResponse'] +_BLEPERIPHERALCHARACTERISTIC = DESCRIPTOR.message_types_by_name['BLEPeripheralCharacteristic'] +_BLEPERIPHERALRESPONSE = DESCRIPTOR.message_types_by_name['BLEPeripheralResponse'] +_BLEADVERTISEMENTDATASECTION = DESCRIPTOR.message_types_by_name['BLEAdvertisementDataSection'] +_BLEPERIPHERAL = DESCRIPTOR.message_types_by_name['BLEPeripheral'] +_BLEADVERTISEMENT = DESCRIPTOR.message_types_by_name['BLEAdvertisement'] _PHONETOGAMECOMMAND = DESCRIPTOR.message_types_by_name['PhoneToGameCommand'] _PHONETOGAME = DESCRIPTOR.message_types_by_name['PhoneToGame'] ServerDetails = _reflection.GeneratedProtocolMessageType('ServerDetails', (_message.Message,), { @@ -84,6 +91,55 @@ RecurringTCPResponse = _reflection.GeneratedProtocolMessageType('RecurringTCPRes }) _sym_db.RegisterMessage(RecurringTCPResponse) +SocialPlayerAction = _reflection.GeneratedProtocolMessageType('SocialPlayerAction', (_message.Message,), { + 'DESCRIPTOR' : _SOCIALPLAYERACTION, + '__module__' : 'tcp_node_msgs_pb2' + # @@protoc_insertion_point(class_scope:SocialPlayerAction) + }) +_sym_db.RegisterMessage(SocialPlayerAction) + +MobileAlertResponse = _reflection.GeneratedProtocolMessageType('MobileAlertResponse', (_message.Message,), { + 'DESCRIPTOR' : _MOBILEALERTRESPONSE, + '__module__' : 'tcp_node_msgs_pb2' + # @@protoc_insertion_point(class_scope:MobileAlertResponse) + }) +_sym_db.RegisterMessage(MobileAlertResponse) + +BLEPeripheralCharacteristic = _reflection.GeneratedProtocolMessageType('BLEPeripheralCharacteristic', (_message.Message,), { + 'DESCRIPTOR' : _BLEPERIPHERALCHARACTERISTIC, + '__module__' : 'tcp_node_msgs_pb2' + # @@protoc_insertion_point(class_scope:BLEPeripheralCharacteristic) + }) +_sym_db.RegisterMessage(BLEPeripheralCharacteristic) + +BLEPeripheralResponse = _reflection.GeneratedProtocolMessageType('BLEPeripheralResponse', (_message.Message,), { + 'DESCRIPTOR' : _BLEPERIPHERALRESPONSE, + '__module__' : 'tcp_node_msgs_pb2' + # @@protoc_insertion_point(class_scope:BLEPeripheralResponse) + }) +_sym_db.RegisterMessage(BLEPeripheralResponse) + +BLEAdvertisementDataSection = _reflection.GeneratedProtocolMessageType('BLEAdvertisementDataSection', (_message.Message,), { + 'DESCRIPTOR' : _BLEADVERTISEMENTDATASECTION, + '__module__' : 'tcp_node_msgs_pb2' + # @@protoc_insertion_point(class_scope:BLEAdvertisementDataSection) + }) +_sym_db.RegisterMessage(BLEAdvertisementDataSection) + +BLEPeripheral = _reflection.GeneratedProtocolMessageType('BLEPeripheral', (_message.Message,), { + 'DESCRIPTOR' : _BLEPERIPHERAL, + '__module__' : 'tcp_node_msgs_pb2' + # @@protoc_insertion_point(class_scope:BLEPeripheral) + }) +_sym_db.RegisterMessage(BLEPeripheral) + +BLEAdvertisement = _reflection.GeneratedProtocolMessageType('BLEAdvertisement', (_message.Message,), { + 'DESCRIPTOR' : _BLEADVERTISEMENT, + '__module__' : 'tcp_node_msgs_pb2' + # @@protoc_insertion_point(class_scope:BLEAdvertisement) + }) +_sym_db.RegisterMessage(BLEAdvertisement) + PhoneToGameCommand = _reflection.GeneratedProtocolMessageType('PhoneToGameCommand', (_message.Message,), { 'DESCRIPTOR' : _PHONETOGAMECOMMAND, '__module__' : 'tcp_node_msgs_pb2' @@ -117,8 +173,22 @@ if _descriptor._USE_C_DESCRIPTORS == False: _TCPCOMPANIONCONNECT._serialized_end=669 _RECURRINGTCPRESPONSE._serialized_start=671 _RECURRINGTCPRESPONSE._serialized_end=749 - _PHONETOGAMECOMMAND._serialized_start=751 - _PHONETOGAMECOMMAND._serialized_end=825 - _PHONETOGAME._serialized_start=827 - _PHONETOGAME._serialized_end=897 + _SOCIALPLAYERACTION._serialized_start=752 + _SOCIALPLAYERACTION._serialized_end=906 + _MOBILEALERTRESPONSE._serialized_start=908 + _MOBILEALERTRESPONSE._serialized_end=953 + _BLEPERIPHERALCHARACTERISTIC._serialized_start=955 + _BLEPERIPHERALCHARACTERISTIC._serialized_end=1008 + _BLEPERIPHERALRESPONSE._serialized_start=1011 + _BLEPERIPHERALRESPONSE._serialized_end=1140 + _BLEADVERTISEMENTDATASECTION._serialized_start=1142 + _BLEADVERTISEMENTDATASECTION._serialized_end=1195 + _BLEPERIPHERAL._serialized_start=1197 + _BLEPERIPHERAL._serialized_end=1248 + _BLEADVERTISEMENT._serialized_start=1250 + _BLEADVERTISEMENT._serialized_end=1350 + _PHONETOGAMECOMMAND._serialized_start=1353 + _PHONETOGAMECOMMAND._serialized_end=1688 + _PHONETOGAME._serialized_start=1691 + _PHONETOGAME._serialized_end=1858 # @@protoc_insertion_point(module_scope) diff --git a/protobuf/udp-node-msgs.proto b/protobuf/udp-node-msgs.proto index 95a4fb4..ed340e6 100644 --- a/protobuf/udp-node-msgs.proto +++ b/protobuf/udp-node-msgs.proto @@ -1,6 +1,7 @@ syntax = "proto2"; import "world.proto"; //WorldAttribute import "profile.proto"; //Profile +import "per-session-info.proto"; //TcpConfig message DecompiledPlayer { /* decompiled from libzwiftjni.so, class name "zwift::protobuf::Player" != world.proto::Player */ optional Profile player_profile = 1; @@ -118,17 +119,6 @@ message UdpConfigVOD { // = tcp-node-msgs::ServersType2 ??? optional float f6 = 6; //or fixed } -message TcpAddress { // = login-response::UDPNode??? - optional string ip = 1; - optional int32 port = 2; - optional int32 f3 = 3; - optional int32 f4 = 4; -} - -message TcpConfig { // = login-response::UDPNodes??? - repeated TcpAddress tcp_adresses = 1; -} - message PlayerRouteDistance { optional int32 f1 = 1; optional float f2 = 2; //or fixed diff --git a/protobuf/udp_node_msgs_pb2.py b/protobuf/udp_node_msgs_pb2.py index 63ed485..53fc4fe 100644 --- a/protobuf/udp_node_msgs_pb2.py +++ b/protobuf/udp_node_msgs_pb2.py @@ -14,9 +14,10 @@ _sym_db = _symbol_database.Default() import world_pb2 as world__pb2 import profile_pb2 as profile__pb2 +import per_session_info_pb2 as per__session__info__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13udp-node-msgs.proto\x1a\x0bworld.proto\x1a\rprofile.proto\"X\n\x10\x44\x65\x63ompiledPlayer\x12 \n\x0eplayer_profile\x18\x01 \x01(\x0b\x32\x08.Profile\x12\"\n\x0cplayer_state\x18\x02 \x01(\x0b\x32\x0c.PlayerState\"\xe5\x04\n\x0bPlayerState\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x11\n\tworldTime\x18\x02 \x01(\x03\x12\x10\n\x08\x64istance\x18\x03 \x01(\x05\x12\x10\n\x08roadTime\x18\x04 \x02(\x05\x12\x0c\n\x04laps\x18\x05 \x01(\x05\x12\r\n\x05speed\x18\x06 \x01(\r\x12\n\n\x02\x66\x37\x18\x07 \x01(\r\x12\x14\n\x0croadPosition\x18\x08 \x01(\x05\x12\x12\n\ncadenceUHz\x18\t \x01(\x05\x12\x0b\n\x03\x66\x31\x30\x18\n \x01(\x05\x12\x11\n\theartrate\x18\x0b \x01(\x05\x12\r\n\x05power\x18\x0c \x01(\x05\x12\x0f\n\x07heading\x18\r \x01(\r\x12\x0c\n\x04lean\x18\x0e \x01(\x03\x12\x10\n\x08\x63limbing\x18\x0f \x01(\x05\x12\x0c\n\x04time\x18\x10 \x01(\x05\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\x05\x12\x0b\n\x03\x66\x31\x38\x18\x12 \x01(\r\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\r\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\r\x12\x10\n\x08progress\x18\x15 \x01(\r\x12\x17\n\x0f\x63ustomisationId\x18\x16 \x01(\x03\x12\x14\n\x0cjustWatching\x18\x17 \x01(\x08\x12\x10\n\x08\x63\x61lories\x18\x18 \x01(\x05\x12\t\n\x01x\x18\x19 \x01(\x02\x12\x10\n\x08\x61ltitude\x18\x1a \x01(\x02\x12\t\n\x01y\x18\x1b \x01(\x02\x12\x17\n\x0fwatchingRiderId\x18\x1c \x01(\x03\x12\x0f\n\x07groupId\x18\x1d \x01(\x03\x12\r\n\x05sport\x18\x1f \x01(\x05\x12\x0b\n\x03\x66\x33\x32\x18 \x01(\x02\x12\x0b\n\x03\x66\x33\x33\x18! \x01(\r\x12\x0b\n\x03\x66\x33\x34\x18\" \x01(\x02\x12\r\n\x05world\x18# \x01(\x05\x12\x0b\n\x03\x66\x33\x36\x18$ \x01(\r\x12\x0b\n\x03\x66\x33\x37\x18% \x01(\r\x12\x0b\n\x03\x66\x33\x38\x18& \x01(\x08\x12\r\n\x05route\x18\' \x01(\r\"\x98\x02\n\x0e\x43lientToServer\x12\x11\n\tconnected\x18\x01 \x02(\x03\x12\x11\n\tplayer_id\x18\x02 \x02(\x03\x12\x12\n\nworld_time\x18\x03 \x02(\x03\x12\r\n\x05seqno\x18\x04 \x02(\x03\x12\n\n\x02\x66\x35\x18\x05 \x01(\x03\x12\n\n\x02\x66\x36\x18\x06 \x01(\x03\x12\x1b\n\x05state\x18\x07 \x02(\x0b\x32\x0c.PlayerState\x12\n\n\x02\x66\x38\x18\x08 \x02(\x03\x12\n\n\x02\x66\x39\x18\t \x01(\x03\x12\x13\n\x0blast_update\x18\n \x02(\x03\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x03\x12\x1a\n\x12last_player_update\x18\x0c \x02(\x03\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x03\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\x08\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x03(\x03\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x03(\x03\"?\n\rPlayerSummary\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"\x8f\x01\n\x0fPlayerSummaries\x12\n\n\x02\x66\x31\x18\x01 \x01(\x11\x12\n\n\x02\x66\x32\x18\x02 \x01(\x11\x12\n\n\x02\x66\x33\x18\x03 \x01(\x11\x12\n\n\x02\x66\x34\x18\x04 \x01(\x11\x12\n\n\x02\x66\x35\x18\x05 \x01(\x05\x12\n\n\x02\x66\x36\x18\x06 \x01(\x05\x12\n\n\x02\x66\x37\x18\x07 \x01(\x05\x12(\n\x10player_summaries\x18\x08 \x03(\x0b\x32\x0e.PlayerSummary\"X\n\x0cRelayAddress\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02ip\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\x05\x12\n\n\x02\x66\x35\x18\x05 \x01(\x02\x12\n\n\x02\x66\x36\x18\x06 \x01(\x02\"W\n\tUdpConfig\x12&\n\x0frelay_addresses\x18\x01 \x03(\x0b\x32\r.RelayAddress\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"]\n\x11RelayAddressesVOD\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12$\n\rrelay_address\x18\x03 \x03(\x0b\x32\r.RelayAddress\x12\n\n\x02\x66\x34\x18\x04 \x01(\x08\"w\n\x0cUdpConfigVOD\x12+\n\x0frelay_addresses\x18\x01 \x03(\x0b\x32\x12.RelayAddressesVOD\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x03\x12\n\n\x02\x66\x34\x18\x04 \x01(\x03\x12\n\n\x02\x66\x35\x18\x05 \x01(\x02\x12\n\n\x02\x66\x36\x18\x06 \x01(\x02\">\n\nTcpAddress\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\".\n\tTcpConfig\x12!\n\x0ctcp_adresses\x18\x01 \x03(\x0b\x32\x0b.TcpAddress\"9\n\x13PlayerRouteDistance\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x02\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\"\xfd\x01\n\x17\x45ventSubgroupPlacements\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12(\n\nplayer_rd1\x18\x02 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd2\x18\x03 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd3\x18\x04 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd4\x18\x05 \x03(\x0b\x32\x14.PlayerRouteDistance\x12\n\n\x02\x66\x36\x18\x06 \x01(\x05\x12\n\n\x02\x66\x37\x18\x07 \x01(\x05\x12\n\n\x02\x66\x38\x18\x08 \x01(\x05\x12\n\n\x02\x66\x39\x18\t \x01(\x02\"\xe4\x04\n\x0eServerToClient\x12\n\n\x02\x66\x31\x18\x01 \x02(\x03\x12\x11\n\tplayer_id\x18\x02 \x02(\x03\x12\x12\n\nworld_time\x18\x03 \x02(\x03\x12\r\n\x05seqno\x18\x04 \x01(\x05\x12\n\n\x02\x66\x35\x18\x05 \x01(\x05\x12\x1c\n\x06states\x18\x08 \x03(\x0b\x32\x0c.PlayerState\x12 \n\x07updates\x18\t \x03(\x0b\x32\x0f.WorldAttribute\x12\x0b\n\x03\x66\x31\x30\x18\n \x01(\x03\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x08\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\t\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x03\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\x05\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x01(\x05\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\x05\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\x03\x12\x10\n\x08num_msgs\x18\x12 \x01(\x05\x12\x0e\n\x06msgnum\x18\x13 \x01(\x05\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\x08\x12*\n\x10player_summaries\x18\x15 \x01(\x0b\x32\x10.PlayerSummaries\x12\x30\n\x0e\x65v_subgroup_ps\x18\x17 \x01(\x0b\x32\x18.EventSubgroupPlacements\x12\x1e\n\nudp_config\x18\x18 \x01(\x0b\x32\n.UdpConfig\x12\'\n\x10udp_config_vod_1\x18\x19 \x01(\x0b\x32\r.UdpConfigVOD\x12\x0b\n\x03\x66\x32\x36\x18\x1a \x01(\x05\x12\'\n\x10udp_config_vod_2\x18\x1b \x01(\x0b\x32\r.UdpConfigVOD\x12#\n\rplayer_states\x18\x1c \x03(\x0b\x32\x0c.PlayerState\x12\x1e\n\ntcp_config\x18\x1d \x01(\x0b\x32\n.TcpConfig\x12\x0b\n\x03\x66\x33\x30\x18\x1e \x03(\x12\"8\n\x05Ghost\x12\x11\n\tplayer_id\x18\x01 \x02(\x05\x12\x1c\n\x06states\x18\x02 \x03(\x0b\x32\x0c.PlayerState\" \n\x06Ghosts\x12\x16\n\x06ghosts\x18\x01 \x03(\x0b\x32\x06.Ghost\"\xcb\x01\n\x0cPlayerUpdate\x12\n\n\x02\x66\x31\x18\x01 \x01(\x03\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x02(\x05\x12\x0f\n\x07payload\x18\x04 \x02(\x0c\x12\x13\n\x0bworld_time1\x18\x05 \x01(\x03\x12\t\n\x01x\x18\x06 \x01(\x03\x12\x10\n\x08\x61ltitude\x18\x07 \x01(\x03\x12\t\n\x01y\x18\x08 \x01(\x03\x12\x13\n\x0bworld_time2\x18\t \x01(\x03\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x03\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\x03\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\x03\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x01(\x03\"\xb2\x01\n\x0b\x43hatMessage\x12\x10\n\x08rider_id\x18\x01 \x02(\x05\x12\x13\n\x0bto_rider_id\x18\x02 \x02(\x05\x12\n\n\x02\x66\x33\x18\x03 \x02(\x05\x12\x11\n\tfirstName\x18\x04 \x02(\t\x12\x10\n\x08lastName\x18\x05 \x02(\t\x12\x0f\n\x07message\x18\x06 \x02(\t\x12\x0e\n\x06\x61vatar\x18\x07 \x01(\t\x12\x13\n\x0b\x63ountryCode\x18\x08 \x02(\x05\x12\x15\n\reventSubgroup\x18\x0b \x01(\x05\"i\n\x06RideOn\x12\x10\n\x08rider_id\x18\x01 \x02(\x03\x12\x13\n\x0bto_rider_id\x18\x02 \x02(\x03\x12\x11\n\tfirstName\x18\x03 \x02(\t\x12\x10\n\x08lastName\x18\x04 \x02(\t\x12\x13\n\x0b\x63ountryCode\x18\x05 \x02(\x05\"\xa8\x02\n\x0fSegmentComplete\x12\n\n\x02\x66\x31\x18\x01 \x01(\x03\x12\x10\n\x08rider_id\x18\x02 \x02(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x03\x12\x12\n\nsegment_id\x18\x05 \x01(\x03\x12\n\n\x02\x66\x36\x18\x06 \x01(\x03\x12\x12\n\nfirst_name\x18\x07 \x01(\t\x12\x11\n\tlast_name\x18\x08 \x01(\t\x12\x12\n\nworld_time\x18\t \x01(\x03\x12\x14\n\x0cmilliseconds\x18\x0b \x01(\x03\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\x05\x12\x17\n\x0fweight_in_grams\x18\r \x01(\x05\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\x05\x12\x11\n\tavg_power\x18\x0f \x01(\x05\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\x05\x12\x0e\n\x06\x66\x37\x64\x61te\x18\x11 \x01(\t\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\x05') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13udp-node-msgs.proto\x1a\x0bworld.proto\x1a\rprofile.proto\x1a\x16per-session-info.proto\"X\n\x10\x44\x65\x63ompiledPlayer\x12 \n\x0eplayer_profile\x18\x01 \x01(\x0b\x32\x08.Profile\x12\"\n\x0cplayer_state\x18\x02 \x01(\x0b\x32\x0c.PlayerState\"\xe5\x04\n\x0bPlayerState\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x11\n\tworldTime\x18\x02 \x01(\x03\x12\x10\n\x08\x64istance\x18\x03 \x01(\x05\x12\x10\n\x08roadTime\x18\x04 \x02(\x05\x12\x0c\n\x04laps\x18\x05 \x01(\x05\x12\r\n\x05speed\x18\x06 \x01(\r\x12\n\n\x02\x66\x37\x18\x07 \x01(\r\x12\x14\n\x0croadPosition\x18\x08 \x01(\x05\x12\x12\n\ncadenceUHz\x18\t \x01(\x05\x12\x0b\n\x03\x66\x31\x30\x18\n \x01(\x05\x12\x11\n\theartrate\x18\x0b \x01(\x05\x12\r\n\x05power\x18\x0c \x01(\x05\x12\x0f\n\x07heading\x18\r \x01(\r\x12\x0c\n\x04lean\x18\x0e \x01(\x03\x12\x10\n\x08\x63limbing\x18\x0f \x01(\x05\x12\x0c\n\x04time\x18\x10 \x01(\x05\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\x05\x12\x0b\n\x03\x66\x31\x38\x18\x12 \x01(\r\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\r\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\r\x12\x10\n\x08progress\x18\x15 \x01(\r\x12\x17\n\x0f\x63ustomisationId\x18\x16 \x01(\x03\x12\x14\n\x0cjustWatching\x18\x17 \x01(\x08\x12\x10\n\x08\x63\x61lories\x18\x18 \x01(\x05\x12\t\n\x01x\x18\x19 \x01(\x02\x12\x10\n\x08\x61ltitude\x18\x1a \x01(\x02\x12\t\n\x01y\x18\x1b \x01(\x02\x12\x17\n\x0fwatchingRiderId\x18\x1c \x01(\x03\x12\x0f\n\x07groupId\x18\x1d \x01(\x03\x12\r\n\x05sport\x18\x1f \x01(\x05\x12\x0b\n\x03\x66\x33\x32\x18 \x01(\x02\x12\x0b\n\x03\x66\x33\x33\x18! \x01(\r\x12\x0b\n\x03\x66\x33\x34\x18\" \x01(\x02\x12\r\n\x05world\x18# \x01(\x05\x12\x0b\n\x03\x66\x33\x36\x18$ \x01(\r\x12\x0b\n\x03\x66\x33\x37\x18% \x01(\r\x12\x0b\n\x03\x66\x33\x38\x18& \x01(\x08\x12\r\n\x05route\x18\' \x01(\r\"\x98\x02\n\x0e\x43lientToServer\x12\x11\n\tconnected\x18\x01 \x02(\x03\x12\x11\n\tplayer_id\x18\x02 \x02(\x03\x12\x12\n\nworld_time\x18\x03 \x02(\x03\x12\r\n\x05seqno\x18\x04 \x02(\x03\x12\n\n\x02\x66\x35\x18\x05 \x01(\x03\x12\n\n\x02\x66\x36\x18\x06 \x01(\x03\x12\x1b\n\x05state\x18\x07 \x02(\x0b\x32\x0c.PlayerState\x12\n\n\x02\x66\x38\x18\x08 \x02(\x03\x12\n\n\x02\x66\x39\x18\t \x01(\x03\x12\x13\n\x0blast_update\x18\n \x02(\x03\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x03\x12\x1a\n\x12last_player_update\x18\x0c \x02(\x03\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x03\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\x08\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x03(\x03\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x03(\x03\"?\n\rPlayerSummary\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"\x8f\x01\n\x0fPlayerSummaries\x12\n\n\x02\x66\x31\x18\x01 \x01(\x11\x12\n\n\x02\x66\x32\x18\x02 \x01(\x11\x12\n\n\x02\x66\x33\x18\x03 \x01(\x11\x12\n\n\x02\x66\x34\x18\x04 \x01(\x11\x12\n\n\x02\x66\x35\x18\x05 \x01(\x05\x12\n\n\x02\x66\x36\x18\x06 \x01(\x05\x12\n\n\x02\x66\x37\x18\x07 \x01(\x05\x12(\n\x10player_summaries\x18\x08 \x03(\x0b\x32\x0e.PlayerSummary\"X\n\x0cRelayAddress\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02ip\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\x05\x12\n\n\x02\x66\x35\x18\x05 \x01(\x02\x12\n\n\x02\x66\x36\x18\x06 \x01(\x02\"W\n\tUdpConfig\x12&\n\x0frelay_addresses\x18\x01 \x03(\x0b\x32\r.RelayAddress\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"]\n\x11RelayAddressesVOD\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12$\n\rrelay_address\x18\x03 \x03(\x0b\x32\r.RelayAddress\x12\n\n\x02\x66\x34\x18\x04 \x01(\x08\"w\n\x0cUdpConfigVOD\x12+\n\x0frelay_addresses\x18\x01 \x03(\x0b\x32\x12.RelayAddressesVOD\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x03\x12\n\n\x02\x66\x34\x18\x04 \x01(\x03\x12\n\n\x02\x66\x35\x18\x05 \x01(\x02\x12\n\n\x02\x66\x36\x18\x06 \x01(\x02\"9\n\x13PlayerRouteDistance\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12\n\n\x02\x66\x32\x18\x02 \x01(\x02\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\"\xfd\x01\n\x17\x45ventSubgroupPlacements\x12\n\n\x02\x66\x31\x18\x01 \x01(\x05\x12(\n\nplayer_rd1\x18\x02 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd2\x18\x03 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd3\x18\x04 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd4\x18\x05 \x03(\x0b\x32\x14.PlayerRouteDistance\x12\n\n\x02\x66\x36\x18\x06 \x01(\x05\x12\n\n\x02\x66\x37\x18\x07 \x01(\x05\x12\n\n\x02\x66\x38\x18\x08 \x01(\x05\x12\n\n\x02\x66\x39\x18\t \x01(\x02\"\xe4\x04\n\x0eServerToClient\x12\n\n\x02\x66\x31\x18\x01 \x02(\x03\x12\x11\n\tplayer_id\x18\x02 \x02(\x03\x12\x12\n\nworld_time\x18\x03 \x02(\x03\x12\r\n\x05seqno\x18\x04 \x01(\x05\x12\n\n\x02\x66\x35\x18\x05 \x01(\x05\x12\x1c\n\x06states\x18\x08 \x03(\x0b\x32\x0c.PlayerState\x12 \n\x07updates\x18\t \x03(\x0b\x32\x0f.WorldAttribute\x12\x0b\n\x03\x66\x31\x30\x18\n \x01(\x03\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x08\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\t\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x03\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\x05\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x01(\x05\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\x05\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\x03\x12\x10\n\x08num_msgs\x18\x12 \x01(\x05\x12\x0e\n\x06msgnum\x18\x13 \x01(\x05\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\x08\x12*\n\x10player_summaries\x18\x15 \x01(\x0b\x32\x10.PlayerSummaries\x12\x30\n\x0e\x65v_subgroup_ps\x18\x17 \x01(\x0b\x32\x18.EventSubgroupPlacements\x12\x1e\n\nudp_config\x18\x18 \x01(\x0b\x32\n.UdpConfig\x12\'\n\x10udp_config_vod_1\x18\x19 \x01(\x0b\x32\r.UdpConfigVOD\x12\x0b\n\x03\x66\x32\x36\x18\x1a \x01(\x05\x12\'\n\x10udp_config_vod_2\x18\x1b \x01(\x0b\x32\r.UdpConfigVOD\x12#\n\rplayer_states\x18\x1c \x03(\x0b\x32\x0c.PlayerState\x12\x1e\n\ntcp_config\x18\x1d \x01(\x0b\x32\n.TcpConfig\x12\x0b\n\x03\x66\x33\x30\x18\x1e \x03(\x12\"8\n\x05Ghost\x12\x11\n\tplayer_id\x18\x01 \x02(\x05\x12\x1c\n\x06states\x18\x02 \x03(\x0b\x32\x0c.PlayerState\" \n\x06Ghosts\x12\x16\n\x06ghosts\x18\x01 \x03(\x0b\x32\x06.Ghost\"\xcb\x01\n\x0cPlayerUpdate\x12\n\n\x02\x66\x31\x18\x01 \x01(\x03\x12\n\n\x02\x66\x32\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x02(\x05\x12\x0f\n\x07payload\x18\x04 \x02(\x0c\x12\x13\n\x0bworld_time1\x18\x05 \x01(\x03\x12\t\n\x01x\x18\x06 \x01(\x03\x12\x10\n\x08\x61ltitude\x18\x07 \x01(\x03\x12\t\n\x01y\x18\x08 \x01(\x03\x12\x13\n\x0bworld_time2\x18\t \x01(\x03\x12\x0b\n\x03\x66\x31\x31\x18\x0b \x01(\x03\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\x03\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\x03\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x01(\x03\"\xb2\x01\n\x0b\x43hatMessage\x12\x10\n\x08rider_id\x18\x01 \x02(\x05\x12\x13\n\x0bto_rider_id\x18\x02 \x02(\x05\x12\n\n\x02\x66\x33\x18\x03 \x02(\x05\x12\x11\n\tfirstName\x18\x04 \x02(\t\x12\x10\n\x08lastName\x18\x05 \x02(\t\x12\x0f\n\x07message\x18\x06 \x02(\t\x12\x0e\n\x06\x61vatar\x18\x07 \x01(\t\x12\x13\n\x0b\x63ountryCode\x18\x08 \x02(\x05\x12\x15\n\reventSubgroup\x18\x0b \x01(\x05\"i\n\x06RideOn\x12\x10\n\x08rider_id\x18\x01 \x02(\x03\x12\x13\n\x0bto_rider_id\x18\x02 \x02(\x03\x12\x11\n\tfirstName\x18\x03 \x02(\t\x12\x10\n\x08lastName\x18\x04 \x02(\t\x12\x13\n\x0b\x63ountryCode\x18\x05 \x02(\x05\"\xa8\x02\n\x0fSegmentComplete\x12\n\n\x02\x66\x31\x18\x01 \x01(\x03\x12\x10\n\x08rider_id\x18\x02 \x02(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x03\x12\x12\n\nsegment_id\x18\x05 \x01(\x03\x12\n\n\x02\x66\x36\x18\x06 \x01(\x03\x12\x12\n\nfirst_name\x18\x07 \x01(\t\x12\x11\n\tlast_name\x18\x08 \x01(\t\x12\x12\n\nworld_time\x18\t \x01(\x03\x12\x14\n\x0cmilliseconds\x18\x0b \x01(\x03\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\x05\x12\x17\n\x0fweight_in_grams\x18\r \x01(\x05\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\x05\x12\x11\n\tavg_power\x18\x0f \x01(\x05\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\x05\x12\x0e\n\x06\x66\x37\x64\x61te\x18\x11 \x01(\t\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\x05') @@ -29,8 +30,6 @@ _RELAYADDRESS = DESCRIPTOR.message_types_by_name['RelayAddress'] _UDPCONFIG = DESCRIPTOR.message_types_by_name['UdpConfig'] _RELAYADDRESSESVOD = DESCRIPTOR.message_types_by_name['RelayAddressesVOD'] _UDPCONFIGVOD = DESCRIPTOR.message_types_by_name['UdpConfigVOD'] -_TCPADDRESS = DESCRIPTOR.message_types_by_name['TcpAddress'] -_TCPCONFIG = DESCRIPTOR.message_types_by_name['TcpConfig'] _PLAYERROUTEDISTANCE = DESCRIPTOR.message_types_by_name['PlayerRouteDistance'] _EVENTSUBGROUPPLACEMENTS = DESCRIPTOR.message_types_by_name['EventSubgroupPlacements'] _SERVERTOCLIENT = DESCRIPTOR.message_types_by_name['ServerToClient'] @@ -103,20 +102,6 @@ UdpConfigVOD = _reflection.GeneratedProtocolMessageType('UdpConfigVOD', (_messag }) _sym_db.RegisterMessage(UdpConfigVOD) -TcpAddress = _reflection.GeneratedProtocolMessageType('TcpAddress', (_message.Message,), { - 'DESCRIPTOR' : _TCPADDRESS, - '__module__' : 'udp_node_msgs_pb2' - # @@protoc_insertion_point(class_scope:TcpAddress) - }) -_sym_db.RegisterMessage(TcpAddress) - -TcpConfig = _reflection.GeneratedProtocolMessageType('TcpConfig', (_message.Message,), { - 'DESCRIPTOR' : _TCPCONFIG, - '__module__' : 'udp_node_msgs_pb2' - # @@protoc_insertion_point(class_scope:TcpConfig) - }) -_sym_db.RegisterMessage(TcpConfig) - PlayerRouteDistance = _reflection.GeneratedProtocolMessageType('PlayerRouteDistance', (_message.Message,), { 'DESCRIPTOR' : _PLAYERROUTEDISTANCE, '__module__' : 'udp_node_msgs_pb2' @@ -183,44 +168,40 @@ _sym_db.RegisterMessage(SegmentComplete) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _DECOMPILEDPLAYER._serialized_start=51 - _DECOMPILEDPLAYER._serialized_end=139 - _PLAYERSTATE._serialized_start=142 - _PLAYERSTATE._serialized_end=755 - _CLIENTTOSERVER._serialized_start=758 - _CLIENTTOSERVER._serialized_end=1038 - _PLAYERSUMMARY._serialized_start=1040 - _PLAYERSUMMARY._serialized_end=1103 - _PLAYERSUMMARIES._serialized_start=1106 - _PLAYERSUMMARIES._serialized_end=1249 - _RELAYADDRESS._serialized_start=1251 - _RELAYADDRESS._serialized_end=1339 - _UDPCONFIG._serialized_start=1341 - _UDPCONFIG._serialized_end=1428 - _RELAYADDRESSESVOD._serialized_start=1430 - _RELAYADDRESSESVOD._serialized_end=1523 - _UDPCONFIGVOD._serialized_start=1525 - _UDPCONFIGVOD._serialized_end=1644 - _TCPADDRESS._serialized_start=1646 - _TCPADDRESS._serialized_end=1708 - _TCPCONFIG._serialized_start=1710 - _TCPCONFIG._serialized_end=1756 - _PLAYERROUTEDISTANCE._serialized_start=1758 - _PLAYERROUTEDISTANCE._serialized_end=1815 - _EVENTSUBGROUPPLACEMENTS._serialized_start=1818 - _EVENTSUBGROUPPLACEMENTS._serialized_end=2071 - _SERVERTOCLIENT._serialized_start=2074 - _SERVERTOCLIENT._serialized_end=2686 - _GHOST._serialized_start=2688 - _GHOST._serialized_end=2744 - _GHOSTS._serialized_start=2746 - _GHOSTS._serialized_end=2778 - _PLAYERUPDATE._serialized_start=2781 - _PLAYERUPDATE._serialized_end=2984 - _CHATMESSAGE._serialized_start=2987 - _CHATMESSAGE._serialized_end=3165 - _RIDEON._serialized_start=3167 - _RIDEON._serialized_end=3272 - _SEGMENTCOMPLETE._serialized_start=3275 - _SEGMENTCOMPLETE._serialized_end=3571 + _DECOMPILEDPLAYER._serialized_start=75 + _DECOMPILEDPLAYER._serialized_end=163 + _PLAYERSTATE._serialized_start=166 + _PLAYERSTATE._serialized_end=779 + _CLIENTTOSERVER._serialized_start=782 + _CLIENTTOSERVER._serialized_end=1062 + _PLAYERSUMMARY._serialized_start=1064 + _PLAYERSUMMARY._serialized_end=1127 + _PLAYERSUMMARIES._serialized_start=1130 + _PLAYERSUMMARIES._serialized_end=1273 + _RELAYADDRESS._serialized_start=1275 + _RELAYADDRESS._serialized_end=1363 + _UDPCONFIG._serialized_start=1365 + _UDPCONFIG._serialized_end=1452 + _RELAYADDRESSESVOD._serialized_start=1454 + _RELAYADDRESSESVOD._serialized_end=1547 + _UDPCONFIGVOD._serialized_start=1549 + _UDPCONFIGVOD._serialized_end=1668 + _PLAYERROUTEDISTANCE._serialized_start=1670 + _PLAYERROUTEDISTANCE._serialized_end=1727 + _EVENTSUBGROUPPLACEMENTS._serialized_start=1730 + _EVENTSUBGROUPPLACEMENTS._serialized_end=1983 + _SERVERTOCLIENT._serialized_start=1986 + _SERVERTOCLIENT._serialized_end=2598 + _GHOST._serialized_start=2600 + _GHOST._serialized_end=2656 + _GHOSTS._serialized_start=2658 + _GHOSTS._serialized_end=2690 + _PLAYERUPDATE._serialized_start=2693 + _PLAYERUPDATE._serialized_end=2896 + _CHATMESSAGE._serialized_start=2899 + _CHATMESSAGE._serialized_end=3077 + _RIDEON._serialized_start=3079 + _RIDEON._serialized_end=3184 + _SEGMENTCOMPLETE._serialized_start=3187 + _SEGMENTCOMPLETE._serialized_end=3483 # @@protoc_insertion_point(module_scope)