From 064ecc479ce8e830da21113860438bc60ef06edc Mon Sep 17 00:00:00 2001 From: lingniu-dev Date: Wed, 15 Apr 2026 16:08:57 +0800 Subject: [PATCH] chore: initial import of lingniu-vehicle-ingest Multi-module Spring Boot ingest service for vehicle telemetry. Modules: - ingest-api / ingest-core / ingest-codec-common: shared SPI, dispatcher, Disruptor event bus, BCC/BCD codec helpers - protocol-gb32960: GB/T 32960.3 inbound (Netty + per-version parser packages v2016/v2025), platform login auth, VIN whitelist, idle handler - protocol-jt808 / protocol-jt1078 / protocol-jsatl12: JT/T inbound - inbound-mqtt / inbound-xinda-push: alternative ingest channels - session-core: per-channel session state - sink-archive / sink-mq: persistence sinks (local file / Kafka) - command-gateway: terminal control command gateway - bootstrap-all: aggregator Spring Boot app - observability: Micrometer / Actuator wiring Includes hex-dump golden samples under protocol-gb32960/src/test/resources and the GB/T 32960.3-2016 / 2025 reference PDFs under reference/. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 39 ++ DECISIONS.md | 65 +++ README.md | 71 +++ bootstrap-all/pom.xml | 107 +++++ .../ingest/bootstrap/IngestApplication.java | 30 ++ .../src/main/resources/application.yml | 130 ++++++ .../ingest/bootstrap/IngestEndToEndTest.java | 166 +++++++ command-gateway/pom.xml | 38 ++ .../CommandGatewayAutoConfiguration.java | 14 + .../lingniu/ingest/gateway/CommandResult.java | 24 + .../gateway/TerminalCommandController.java | 145 ++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + inbound-mqtt/pom.xml | 50 +++ .../mqtt/client/MqttEndpointManager.java | 152 +++++++ .../config/MqttInboundAutoConfiguration.java | 66 +++ .../mqtt/config/MqttInboundProperties.java | 69 +++ .../mqtt/handler/MqttRealtimeHandler.java | 35 ++ .../mqtt/mapper/YutongEventMapper.java | 99 +++++ .../inbound/mqtt/model/MqttPayload.java | 24 + .../mqtt/parser/MqttPayloadParser.java | 68 +++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../inbound/mqtt/YutongEventMapperTest.java | 67 +++ inbound-xinda-push/pom.xml | 74 ++++ .../ingest/inbound/xinda/XindaPushClient.java | 267 +++++++++++ .../config/XindaPushAutoConfiguration.java | 36 ++ .../xinda/config/XindaPushProperties.java | 40 ++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + ingest-api/pom.xml | 29 ++ .../com/lingniu/ingest/api/ProtocolId.java | 14 + .../ingest/api/annotation/AsyncBatch.java | 22 + .../ingest/api/annotation/EventEmit.java | 17 + .../ingest/api/annotation/IdempotentKey.java | 17 + .../ingest/api/annotation/MessageMapping.java | 27 ++ .../api/annotation/ProtocolHandler.java | 30 ++ .../ingest/api/annotation/RateLimited.java | 20 + .../ingest/api/annotation/TraceSpan.java | 15 + .../ingest/api/event/AlarmPayload.java | 37 ++ .../ingest/api/event/LocationPayload.java | 12 + .../ingest/api/event/RealtimePayload.java | 49 ++ .../ingest/api/event/VehicleEvent.java | 141 ++++++ .../com/lingniu/ingest/api/package-info.java | 13 + .../ingest/api/pipeline/IngestContext.java | 46 ++ .../api/pipeline/IngestInterceptor.java | 21 + .../lingniu/ingest/api/pipeline/RawFrame.java | 27 ++ .../lingniu/ingest/api/sink/EventSink.java | 28 ++ .../ingest/api/spi/DecodeException.java | 12 + .../lingniu/ingest/api/spi/EventMapper.java | 16 + .../lingniu/ingest/api/spi/FrameDecoder.java | 13 + .../lingniu/ingest/api/spi/FrameEncoder.java | 9 + .../ingest/api/spi/MessageHandler.java | 16 + .../ingest/api/spi/ProtocolPlugin.java | 31 ++ ingest-codec-common/pom.xml | 29 ++ .../com/lingniu/ingest/codec/BccChecksum.java | 19 + .../com/lingniu/ingest/codec/BcdCodec.java | 30 ++ .../com/lingniu/ingest/codec/BitUtils.java | 34 ++ .../lingniu/ingest/codec/BcdCodecTest.java | 28 ++ ingest-core/pom.xml | 61 +++ .../core/concurrency/AsyncBatchExecutor.java | 164 +++++++ .../core/concurrency/DisruptorEventBus.java | 87 ++++ .../core/concurrency/VehicleEventSlot.java | 12 + .../config/IngestCoreAutoConfiguration.java | 87 ++++ .../core/config/IngestCoreProperties.java | 56 +++ .../AnnotationHandlerBeanPostProcessor.java | 64 +++ .../ingest/core/dispatcher/Dispatcher.java | 79 ++++ .../core/dispatcher/HandlerDefinition.java | 31 ++ .../core/dispatcher/HandlerInvoker.java | 33 ++ .../core/dispatcher/HandlerRegistry.java | 48 ++ .../core/pipeline/InterceptorChain.java | 45 ++ .../pipeline/builtin/DedupInterceptor.java | 45 ++ .../builtin/RateLimitInterceptor.java | 49 ++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + observability/pom.xml | 31 ++ .../ingest/observability/IngestMetrics.java | 84 ++++ .../ObservabilityAutoConfiguration.java | 18 + ...ot.autoconfigure.AutoConfiguration.imports | 1 + pom.xml | 296 +++++++++++++ protocol-gb32960/pom.xml | 58 +++ .../auth/Gb32960PlatformAuthorizer.java | 94 ++++ .../gb32960/auth/Gb32960VinAuthorizer.java | 63 +++ .../gb32960/codec/Gb32960BodyParser.java | 150 +++++++ .../gb32960/codec/Gb32960CommandParser.java | 293 ++++++++++++ .../gb32960/codec/Gb32960FrameDecoder.java | 83 ++++ .../gb32960/codec/Gb32960FrameEncoder.java | 111 +++++ .../gb32960/codec/Gb32960MessageDecoder.java | 160 +++++++ .../gb32960/codec/InfoBlockParser.java | 34 ++ .../codec/InfoBlockParserRegistry.java | 34 ++ .../protocol/gb32960/codec/ValueDecoder.java | 80 ++++ .../parser/v2016/AlarmV2016BlockParser.java | 45 ++ .../v2016/DriveMotorV2016BlockParser.java | 45 ++ .../parser/v2016/EngineV2016BlockParser.java | 28 ++ .../v2016/ExtremeValueV2016BlockParser.java | 40 ++ .../v2016/FuelCellV2016BlockParser.java | 54 +++ .../v2016/PositionV2016BlockParser.java | 32 ++ .../v2016/TemperatureV2016BlockParser.java | 39 ++ .../parser/v2016/VehicleV2016BlockParser.java | 42 ++ .../parser/v2016/VoltageV2016BlockParser.java | 49 ++ .../parser/v2025/AlarmV2025BlockParser.java | 52 +++ .../BatteryTemperatureV2025BlockParser.java | 37 ++ .../v2025/DriveMotorV2025BlockParser.java | 47 ++ .../parser/v2025/EngineV2025BlockParser.java | 27 ++ .../v2025/FuelCellStackV2025BlockParser.java | 45 ++ .../v2025/FuelCellV2025BlockParser.java | 36 ++ .../MinParallelVoltageV2025BlockParser.java | 41 ++ .../v2025/PositionV2025BlockParser.java | 34 ++ ...SuperCapacitorExtremeV2025BlockParser.java | 39 ++ .../v2025/SuperCapacitorV2025BlockParser.java | 40 ++ .../parser/v2025/VehicleV2025BlockParser.java | 37 ++ .../config/Gb32960AutoConfiguration.java | 150 +++++++ .../gb32960/config/Gb32960Properties.java | 146 ++++++ .../handler/Gb32960RealtimeHandler.java | 52 +++ .../inbound/Gb32960ChannelHandler.java | 297 +++++++++++++ .../gb32960/inbound/Gb32960NettyServer.java | 173 ++++++++ .../gb32960/mapper/Gb32960EventMapper.java | 235 ++++++++++ .../protocol/gb32960/model/CommandBody.java | 225 ++++++++++ .../protocol/gb32960/model/CommandType.java | 60 +++ .../protocol/gb32960/model/EncryptType.java | 38 ++ .../protocol/gb32960/model/Gb32960Header.java | 36 ++ .../gb32960/model/Gb32960Message.java | 43 ++ .../gb32960/model/GeneralAlarmFlagBit.java | 104 +++++ .../protocol/gb32960/model/InfoBlock.java | 417 ++++++++++++++++++ .../protocol/gb32960/model/InfoBlockType.java | 49 ++ .../gb32960/model/ProtocolVersion.java | 37 ++ .../protocol/gb32960/model/ResponseFlag.java | 46 ++ .../protocol/gb32960/model/SignatureInfo.java | 66 +++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../codec/Gb32960DecoderGoldenTest.java | 106 +++++ .../gb32960/codec/Gb32960DecoderTest.java | 110 +++++ .../gb32960/codec/Gb32960FullBlocksTest.java | 152 +++++++ .../mapper/Gb32960EventMapperTest.java | 37 ++ .../test/resources/samples/gb32960/README.md | 41 ++ .../samples/gb32960/heartbeat_001.hex | 1 + .../samples/gb32960/heartbeat_002.hex | 1 + .../samples/gb32960/realtime_001.hex | 1 + .../samples/gb32960/realtime_002.hex | 1 + .../samples/gb32960/realtime_003.hex | 1 + .../samples/gb32960/realtime_010.hex | 1 + .../samples/gb32960/realtime_020.hex | 1 + .../samples/gb32960/realtime_100.hex | 1 + .../samples/gb32960/realtime_200.hex | 1 + .../resources/samples/gb32960/resend_001.hex | 1 + .../resources/samples/gb32960/resend_005.hex | 1 + .../samples/gb32960/vehicle_login_001.hex | 1 + protocol-jsatl12/pom.xml | 46 ++ .../jsatl12/codec/Jsatl12FrameDecoder.java | 80 ++++ .../jsatl12/codec/Jsatl12RawFrame.java | 8 + .../config/Jsatl12AutoConfiguration.java | 23 + .../jsatl12/config/Jsatl12Properties.java | 21 + .../inbound/Jsatl12ChannelHandler.java | 89 ++++ .../jsatl12/inbound/Jsatl12NettyServer.java | 76 ++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + protocol-jt1078/pom.xml | 34 ++ .../parser/FileUploadCompleteBodyParser.java | 20 + .../parser/MediaAttributesBodyParser.java | 23 + .../config/Jt1078AutoConfiguration.java | 28 ++ .../jt1078/model/Jt1078MessageId.java | 12 + ...ot.autoconfigure.AutoConfiguration.imports | 1 + protocol-jt808/pom.xml | 54 +++ .../protocol/jt808/codec/BodyParser.java | 19 + .../jt808/codec/BodyParserRegistry.java | 25 ++ .../protocol/jt808/codec/Jt808Escape.java | 59 +++ .../jt808/codec/Jt808FrameDecoder.java | 51 +++ .../jt808/codec/Jt808FrameEncoder.java | 81 ++++ .../jt808/codec/Jt808MessageDecoder.java | 93 ++++ .../codec/parser/HeartbeatBodyParser.java | 14 + .../codec/parser/LocationBodyParser.java | 66 +++ .../codec/parser/RegisterBodyParser.java | 54 +++ .../jt808/config/Jt808AutoConfiguration.java | 96 ++++ .../jt808/config/Jt808Properties.java | 17 + .../downlink/Jt808CommandDispatcher.java | 115 +++++ .../jt808/downlink/Jt808Commands.java | 91 ++++ .../jt808/handler/Jt808LocationHandler.java | 55 +++ .../jt808/inbound/Jt808ChannelHandler.java | 165 +++++++ .../jt808/inbound/Jt808NettyServer.java | 95 ++++ .../jt808/mapper/Jt808EventMapper.java | 58 +++ .../protocol/jt808/model/Jt808Body.java | 43 ++ .../protocol/jt808/model/Jt808Header.java | 28 ++ .../protocol/jt808/model/Jt808Message.java | 6 + .../protocol/jt808/model/Jt808MessageId.java | 36 ++ .../jt808/session/Jt808ChannelRegistry.java | 62 +++ .../jt808/session/Jt808PendingRequests.java | 51 +++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../jt808/codec/Jt808DecoderGoldenTest.java | 79 ++++ .../jt808/codec/Jt808DecoderTest.java | 98 ++++ .../protocol/jt808/codec/Jt808EscapeTest.java | 25 ++ .../jt808/codec/Jt808FrameEncoderTest.java | 57 +++ .../jt808/mapper/Jt808EventMapperTest.java | 46 ++ .../test/resources/samples/jt808/auth_001.hex | 1 + .../test/resources/samples/jt808/auth_002.hex | 1 + .../resources/samples/jt808/location_001.hex | 1 + .../resources/samples/jt808/location_002.hex | 1 + .../resources/samples/jt808/location_010.hex | 1 + .../resources/samples/jt808/location_100.hex | 1 + .../resources/samples/jt808/location_200.hex | 1 + .../resources/samples/jt808/location_400.hex | 1 + .../samples/jt808/location_batch_001.hex | 1 + reference/GBT+32960.3-2016.pdf | Bin 0 -> 1152211 bytes reference/GBT+32960.3-2025.pdf | Bin 0 -> 734436 bytes session-core/pom.xml | 41 ++ .../ingest/session/CommandDispatcher.java | 23 + .../lingniu/ingest/session/DeviceSession.java | 46 ++ .../ingest/session/InMemorySessionStore.java | 82 ++++ .../ingest/session/NoopCommandDispatcher.java | 31 ++ .../lingniu/ingest/session/SessionStore.java | 25 ++ .../config/SessionCoreAutoConfiguration.java | 25 ++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + sink-archive/pom.xml | 38 ++ .../ingest/sink/archive/ArchiveStore.java | 32 ++ .../sink/archive/LocalArchiveStore.java | 83 ++++ .../config/SinkArchiveAutoConfiguration.java | 26 ++ .../archive/config/SinkArchiveProperties.java | 20 + ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../sink/archive/LocalArchiveStoreTest.java | 38 ++ sink-mq/pom.xml | 81 ++++ .../ingest/sink/mq/EnvelopeMapper.java | 119 +++++ .../ingest/sink/mq/KafkaEventSink.java | 80 ++++ .../sink/mq/SinkMqAutoConfiguration.java | 85 ++++ .../ingest/sink/mq/SinkMqProperties.java | 72 +++ .../lingniu/ingest/sink/mq/TopicRouter.java | 28 ++ sink-mq/src/main/proto/vehicle_envelope.proto | 110 +++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + 220 files changed, 11874 insertions(+) create mode 100644 .gitignore create mode 100644 DECISIONS.md create mode 100644 README.md create mode 100644 bootstrap-all/pom.xml create mode 100644 bootstrap-all/src/main/java/com/lingniu/ingest/bootstrap/IngestApplication.java create mode 100644 bootstrap-all/src/main/resources/application.yml create mode 100644 bootstrap-all/src/test/java/com/lingniu/ingest/bootstrap/IngestEndToEndTest.java create mode 100644 command-gateway/pom.xml create mode 100644 command-gateway/src/main/java/com/lingniu/ingest/gateway/CommandGatewayAutoConfiguration.java create mode 100644 command-gateway/src/main/java/com/lingniu/ingest/gateway/CommandResult.java create mode 100644 command-gateway/src/main/java/com/lingniu/ingest/gateway/TerminalCommandController.java create mode 100644 command-gateway/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 inbound-mqtt/pom.xml create mode 100644 inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/client/MqttEndpointManager.java create mode 100644 inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/config/MqttInboundAutoConfiguration.java create mode 100644 inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/config/MqttInboundProperties.java create mode 100644 inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/handler/MqttRealtimeHandler.java create mode 100644 inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/mapper/YutongEventMapper.java create mode 100644 inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/model/MqttPayload.java create mode 100644 inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/parser/MqttPayloadParser.java create mode 100644 inbound-mqtt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 inbound-mqtt/src/test/java/com/lingniu/ingest/inbound/mqtt/YutongEventMapperTest.java create mode 100644 inbound-xinda-push/pom.xml create mode 100644 inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/XindaPushClient.java create mode 100644 inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/config/XindaPushAutoConfiguration.java create mode 100644 inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/config/XindaPushProperties.java create mode 100644 inbound-xinda-push/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 ingest-api/pom.xml create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/ProtocolId.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/annotation/AsyncBatch.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/annotation/EventEmit.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/annotation/IdempotentKey.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/annotation/MessageMapping.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/annotation/ProtocolHandler.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/annotation/RateLimited.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/annotation/TraceSpan.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/event/AlarmPayload.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/event/LocationPayload.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/event/RealtimePayload.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/event/VehicleEvent.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/package-info.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/IngestContext.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/IngestInterceptor.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/RawFrame.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/sink/EventSink.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/spi/DecodeException.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/spi/EventMapper.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/spi/FrameDecoder.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/spi/FrameEncoder.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/spi/MessageHandler.java create mode 100644 ingest-api/src/main/java/com/lingniu/ingest/api/spi/ProtocolPlugin.java create mode 100644 ingest-codec-common/pom.xml create mode 100644 ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BccChecksum.java create mode 100644 ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BcdCodec.java create mode 100644 ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BitUtils.java create mode 100644 ingest-codec-common/src/test/java/com/lingniu/ingest/codec/BcdCodecTest.java create mode 100644 ingest-core/pom.xml create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/AsyncBatchExecutor.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/DisruptorEventBus.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/VehicleEventSlot.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/config/IngestCoreAutoConfiguration.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/config/IngestCoreProperties.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/AnnotationHandlerBeanPostProcessor.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/Dispatcher.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerDefinition.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerInvoker.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerRegistry.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/InterceptorChain.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/builtin/DedupInterceptor.java create mode 100644 ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/builtin/RateLimitInterceptor.java create mode 100644 ingest-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 observability/pom.xml create mode 100644 observability/src/main/java/com/lingniu/ingest/observability/IngestMetrics.java create mode 100644 observability/src/main/java/com/lingniu/ingest/observability/ObservabilityAutoConfiguration.java create mode 100644 observability/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 pom.xml create mode 100644 protocol-gb32960/pom.xml create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/auth/Gb32960PlatformAuthorizer.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/auth/Gb32960VinAuthorizer.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960BodyParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960CommandParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FrameDecoder.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FrameEncoder.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960MessageDecoder.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/InfoBlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/InfoBlockParserRegistry.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/ValueDecoder.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/AlarmV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/DriveMotorV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/EngineV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/ExtremeValueV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/FuelCellV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/PositionV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/TemperatureV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/VehicleV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/VoltageV2016BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/AlarmV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/BatteryTemperatureV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/DriveMotorV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/EngineV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/FuelCellStackV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/FuelCellV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/MinParallelVoltageV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/PositionV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/SuperCapacitorExtremeV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/SuperCapacitorV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/VehicleV2025BlockParser.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960AutoConfiguration.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960Properties.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/handler/Gb32960RealtimeHandler.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/inbound/Gb32960ChannelHandler.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/inbound/Gb32960NettyServer.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/mapper/Gb32960EventMapper.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/CommandBody.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/CommandType.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/EncryptType.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/Gb32960Header.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/Gb32960Message.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/GeneralAlarmFlagBit.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/InfoBlock.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/InfoBlockType.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/ProtocolVersion.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/ResponseFlag.java create mode 100644 protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/SignatureInfo.java create mode 100644 protocol-gb32960/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960DecoderGoldenTest.java create mode 100644 protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960DecoderTest.java create mode 100644 protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FullBlocksTest.java create mode 100644 protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/mapper/Gb32960EventMapperTest.java create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/README.md create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/heartbeat_001.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/heartbeat_002.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/realtime_001.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/realtime_002.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/realtime_003.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/realtime_010.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/realtime_020.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/realtime_100.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/realtime_200.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/resend_001.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/resend_005.hex create mode 100644 protocol-gb32960/src/test/resources/samples/gb32960/vehicle_login_001.hex create mode 100644 protocol-jsatl12/pom.xml create mode 100644 protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/codec/Jsatl12FrameDecoder.java create mode 100644 protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/codec/Jsatl12RawFrame.java create mode 100644 protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/config/Jsatl12AutoConfiguration.java create mode 100644 protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/config/Jsatl12Properties.java create mode 100644 protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/inbound/Jsatl12ChannelHandler.java create mode 100644 protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/inbound/Jsatl12NettyServer.java create mode 100644 protocol-jsatl12/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 protocol-jt1078/pom.xml create mode 100644 protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/codec/parser/FileUploadCompleteBodyParser.java create mode 100644 protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/codec/parser/MediaAttributesBodyParser.java create mode 100644 protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/config/Jt1078AutoConfiguration.java create mode 100644 protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/model/Jt1078MessageId.java create mode 100644 protocol-jt1078/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 protocol-jt808/pom.xml create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/BodyParser.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/BodyParserRegistry.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808Escape.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameDecoder.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameEncoder.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808MessageDecoder.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/HeartbeatBodyParser.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/LocationBodyParser.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/RegisterBodyParser.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/config/Jt808AutoConfiguration.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/config/Jt808Properties.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/downlink/Jt808CommandDispatcher.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/downlink/Jt808Commands.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/handler/Jt808LocationHandler.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/inbound/Jt808ChannelHandler.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/inbound/Jt808NettyServer.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/mapper/Jt808EventMapper.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Body.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Header.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Message.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808MessageId.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/session/Jt808ChannelRegistry.java create mode 100644 protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/session/Jt808PendingRequests.java create mode 100644 protocol-jt808/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808DecoderGoldenTest.java create mode 100644 protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808DecoderTest.java create mode 100644 protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808EscapeTest.java create mode 100644 protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameEncoderTest.java create mode 100644 protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/mapper/Jt808EventMapperTest.java create mode 100644 protocol-jt808/src/test/resources/samples/jt808/auth_001.hex create mode 100644 protocol-jt808/src/test/resources/samples/jt808/auth_002.hex create mode 100644 protocol-jt808/src/test/resources/samples/jt808/location_001.hex create mode 100644 protocol-jt808/src/test/resources/samples/jt808/location_002.hex create mode 100644 protocol-jt808/src/test/resources/samples/jt808/location_010.hex create mode 100644 protocol-jt808/src/test/resources/samples/jt808/location_100.hex create mode 100644 protocol-jt808/src/test/resources/samples/jt808/location_200.hex create mode 100644 protocol-jt808/src/test/resources/samples/jt808/location_400.hex create mode 100644 protocol-jt808/src/test/resources/samples/jt808/location_batch_001.hex create mode 100644 reference/GBT+32960.3-2016.pdf create mode 100644 reference/GBT+32960.3-2025.pdf create mode 100644 session-core/pom.xml create mode 100644 session-core/src/main/java/com/lingniu/ingest/session/CommandDispatcher.java create mode 100644 session-core/src/main/java/com/lingniu/ingest/session/DeviceSession.java create mode 100644 session-core/src/main/java/com/lingniu/ingest/session/InMemorySessionStore.java create mode 100644 session-core/src/main/java/com/lingniu/ingest/session/NoopCommandDispatcher.java create mode 100644 session-core/src/main/java/com/lingniu/ingest/session/SessionStore.java create mode 100644 session-core/src/main/java/com/lingniu/ingest/session/config/SessionCoreAutoConfiguration.java create mode 100644 session-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 sink-archive/pom.xml create mode 100644 sink-archive/src/main/java/com/lingniu/ingest/sink/archive/ArchiveStore.java create mode 100644 sink-archive/src/main/java/com/lingniu/ingest/sink/archive/LocalArchiveStore.java create mode 100644 sink-archive/src/main/java/com/lingniu/ingest/sink/archive/config/SinkArchiveAutoConfiguration.java create mode 100644 sink-archive/src/main/java/com/lingniu/ingest/sink/archive/config/SinkArchiveProperties.java create mode 100644 sink-archive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 sink-archive/src/test/java/com/lingniu/ingest/sink/archive/LocalArchiveStoreTest.java create mode 100644 sink-mq/pom.xml create mode 100644 sink-mq/src/main/java/com/lingniu/ingest/sink/mq/EnvelopeMapper.java create mode 100644 sink-mq/src/main/java/com/lingniu/ingest/sink/mq/KafkaEventSink.java create mode 100644 sink-mq/src/main/java/com/lingniu/ingest/sink/mq/SinkMqAutoConfiguration.java create mode 100644 sink-mq/src/main/java/com/lingniu/ingest/sink/mq/SinkMqProperties.java create mode 100644 sink-mq/src/main/java/com/lingniu/ingest/sink/mq/TopicRouter.java create mode 100644 sink-mq/src/main/proto/vehicle_envelope.proto create mode 100644 sink-mq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..9ca1778d --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +target/ +*.class +*.jar +*.war +*.log +*.log.* +app.log +.idea/ +*.iml +*.ipr +*.iws +.vscode/ +.project +.classpath +.settings/ +.factorypath +.DS_Store +Thumbs.db +.mvn/wrapper/maven-wrapper.jar +dependency-reduced-pom.xml +logs/ +data/ +build/ +out/ + +# Local config / secrets +application-local.yml +application-local.yaml +application-local.properties +*.local.yml +*.local.yaml +*.local.properties + +# Temp & JVM crash dumps +*.tmp +*.bak +*.swp +hs_err_pid* +replay_pid* diff --git a/DECISIONS.md b/DECISIONS.md new file mode 100644 index 00000000..528f8341 --- /dev/null +++ b/DECISIONS.md @@ -0,0 +1,65 @@ +# 架构决策记录(ADR 汇总) + +> 本文件记录 lingniu-vehicle-ingest v2 的关键架构决策,后续每次重大调整追加条目(不删除旧条目)。 + +## ADR-001 MQ 选型:Kafka +- **Status**: Accepted +- **Context**: 需要高吞吐、严格单车有序、成熟生态 +- **Decision**: 使用 Kafka,分区 key = VIN +- **Consequences**: 下游消费者需使用消费组 + 分区内顺序消费;不使用 RocketMQ 的事务/顺序特性 + +## ADR-002 线上消息格式:Protobuf +- **Status**: Accepted +- **Context**: 需要向前兼容、体积小、性能好 +- **Decision**: 线上用 Protobuf,调试/诊断保留 JSON 序列化能力 +- **Consequences**: 需维护 `.proto` schema,`ingest-api` 模块负责生成 Java stub + +## ADR-003 command-gateway 独立模块 +- **Status**: Accepted +- **Context**: 下行命令链路不应与接入进程耦合 +- **Decision**: 拆出独立 `command-gateway` 模块,复用 `session-core`;本次重构同步交付 +- **Consequences**: HTTP 对外接口(原 JT808Controller / JT1078Controller)迁移到此模块 + +## ADR-004 信达 Push:保留模块但彻底重写 +- **Status**: Accepted +- **Context**: 旧实现硬编码凭证、无重连、0300/0401 空实现 +- **Decision**: + 1. 新模块 `inbound-xinda-push` 隔离第三方库 `gps-push-client` + 2. 配置外置(yml + env) + 3. 自动重连 + Resilience4j 熔断 + 4. 0200/0300/0401 **仅做协议解析**,转换为 `VehicleEvent` 后直接投 Kafka + 5. **业务处理全部下沉到下游消费者**,本服务不再实现报警/透传业务逻辑 +- **Consequences**: 旧代码 messageReceived 里的 TODO 不再回到本仓库;需要协调下游消费者团队认领 + +## ADR-005 JT1078 / JSATL12 进第一批 +- **Status**: Accepted +- **Decision**: 第一批迁移即覆盖 JT1078 信令 + JSATL12 报警附件上传 +- **Consequences**: Phase 2 工期相应拉长;JSATL12 需要对象存储后端(本地 / S3 / OSS) + +## ADR-006 部署形态:all-in-one +- **Status**: Accepted +- **Context**: 当前规模无需按协议拆 Pod +- **Decision**: 生产默认 `bootstrap-all`,通过配置开关按需启停各协议模块 +- **Consequences**: 单进程资源需求较高;未来若规模扩大可切换到 `bootstrap-slim`(保留能力,不交付) + +## ADR-007 Java 25 + 虚拟线程 + Disruptor +- **Status**: Accepted +- **Decision**: + - Netty EventLoop 只做解码与 RingBuffer 投递,严禁阻塞 + - 业务 Handler 走虚拟线程(`Thread.ofVirtual()`) + - 协议间背压通过 Disruptor RingBuffer 表达 + - 禁用 `synchronized`,使用 `ReentrantLock` 避免虚拟线程 pinning +- **Consequences**: 需开启 `jdk.VirtualThreadPinned` JFR 监控 + +## ADR-008 本服务不写业务库 +- **Status**: Accepted +- **Decision**: 所有业务表(vehicle_data_actual / history / travel / gps_data 等)不再由本服务写入 +- **Consequences**: 需要新建消费服务 `vehicle-analytics-service` 承接;迁移期采用双跑对账 + +## ADR-009 构建工具:Maven +- **Status**: Accepted +- **Decision**: 沿用 Maven,统一 BOM 管理版本,Spotless 格式化,ArchUnit 守护分层 + +## ADR-010 框架:Spring Boot 3.4 +- **Status**: Accepted +- **Decision**: Spring Boot 3.4.x,支持 JDK 25;AutoConfiguration 用于按需启停 diff --git a/README.md b/README.md new file mode 100644 index 00000000..34a83e78 --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +# lingniu-vehicle-ingest + +> 羚牛车辆数据接入平台 v2 + +## 设计目标 + +- **协议接入统一抽象**:GB/T 32960、JT/T 808、JT/T 1078、JSATL12、MQTT、信达 Push 全部变成可插拔 Inbound Adapter +- **原子能力化**:每个协议一个独立 Maven 模块 + 独立 AutoConfiguration + 独立配置开关 +- **业务 / 实时彻底解耦**:本服务只负责 **收 → 解析 → 校验 → 规整 → 投递 Kafka**,不碰业务库 +- **高并发低延迟**:Netty + Disruptor + Java 25 虚拟线程;目标单节点 ≥ 5 万 msg/s,P99 < 50 ms +- **可观测、可回放、可灰度**:统一 traceId、Envelope、幂等键、DLQ、原始报文冷存 + +## 技术栈 + +| 类别 | 选型 | +|---|---| +| 语言 | Java **25** | +| 框架 | Spring Boot 3.4.x | +| 网络 | Netty 4.1 | +| 并发 | Disruptor 4 + 虚拟线程 + `StructuredTaskScope` | +| 消息队列 | **Kafka**(vin 分区,保证单车有序) | +| 线上消息格式 | **Protobuf**,调试走 JSON | +| MQTT 客户端 | HiveMQ MQTT Client | +| 会话缓存 | Caffeine + Redis 兜底 | +| 熔断/限流 | Resilience4j 2 | +| 可观测 | Micrometer + Prometheus + OpenTelemetry | +| 冷存 | S3 / OSS / 本地 | +| 构建 | Maven + Spotless + ArchUnit | + +## 模块划分 + +``` +lingniu-vehicle-ingest/ +├── bom/ 依赖版本统一 +├── ingest-api/ SPI + sealed 领域事件 + 注解 +├── ingest-codec-common/ 公共编解码工具(BCD/CRC/BCC/bit utils) +├── ingest-core/ Pipeline / Dispatcher / Disruptor / Session 桥 +├── session-core/ 设备会话 + 鉴权 + Token +├── observability/ metrics / tracing / health +├── sink-mq/ Kafka producer + Protobuf Envelope +├── sink-archive/ 原始报文冷存 +├── protocol-gb32960/ GB/T 32960 +├── protocol-jt808/ JT/T 808 +├── protocol-jt1078/ JT/T 1078 +├── protocol-jsatl12/ 苏标主动安全报警附件 +├── inbound-mqtt/ MQTT 接入(宇通等) +├── inbound-xinda-push/ 信达 Push 接入(重写) +├── command-gateway/ HTTP → 设备下行命令 +└── bootstrap-all/ 一体化启动 +``` + +## 快速开始 + +```bash +# 要求:JDK 25, Maven 3.9+ +mvn -v +mvn clean install -DskipTests +cd bootstrap-all && mvn spring-boot:run +``` + +## 迁移说明 + +本项目是 `lingniu-vehicle-data-reception` 的 v2 重构,采用 strangler fig 渐进式迁移,旧项目保留只读参考。迁移路径与决策参见 `../REFRACTOR_PLAN.md`。 + +## 核心原则 + +1. **本服务不写业务库**:历史、行程、在线检测、里程统计全部由 Kafka 下游消费者实现 +2. **协议即插拔**:每个 `protocol-*` / `inbound-*` 都可独立开关(`lingniu.ingest..enabled`) +3. **顺序保证**:同一 VIN 严格有序(Disruptor hash + Kafka 分区 key) +4. **幂等消费**:Envelope 带 `eventId`,下游去重 +5. **原始可回放**:`vehicle.raw.archive` topic + 对象存储 diff --git a/bootstrap-all/pom.xml b/bootstrap-all/pom.xml new file mode 100644 index 00000000..8af5baa0 --- /dev/null +++ b/bootstrap-all/pom.xml @@ -0,0 +1,107 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + bootstrap-all + bootstrap-all + 一体化启动:默认集成全部协议与 Sink。生产环境通过配置开关按需启停。 + + + + + com.lingniu.ingest + ingest-core + + + com.lingniu.ingest + session-core + + + com.lingniu.ingest + observability + + + + + com.lingniu.ingest + sink-mq + + + com.lingniu.ingest + sink-archive + + + + + com.lingniu.ingest + protocol-gb32960 + + + com.lingniu.ingest + protocol-jt808 + + + com.lingniu.ingest + protocol-jt1078 + + + com.lingniu.ingest + protocol-jsatl12 + + + + + com.lingniu.ingest + inbound-mqtt + + + com.lingniu.ingest + inbound-xinda-push + + + + + com.lingniu.ingest + command-gateway + + + + org.springframework.boot + spring-boot-starter + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + lingniu-vehicle-ingest + + + org.springframework.boot + spring-boot-maven-plugin + + + --sun-misc-unsafe-memory-access=allow + + + + + repackage + + + + + + + diff --git a/bootstrap-all/src/main/java/com/lingniu/ingest/bootstrap/IngestApplication.java b/bootstrap-all/src/main/java/com/lingniu/ingest/bootstrap/IngestApplication.java new file mode 100644 index 00000000..5ffb76c0 --- /dev/null +++ b/bootstrap-all/src/main/java/com/lingniu/ingest/bootstrap/IngestApplication.java @@ -0,0 +1,30 @@ +package com.lingniu.ingest.bootstrap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 一体化启动入口。 + * 各协议 / Sink 模块通过 Spring Boot AutoConfiguration + @ConditionalOnProperty 按需加载。 + * + *

启动失败兜底:某个 Netty server 绑定端口失败时,Spring 会尝试销毁已初始化的 Bean。 + * 但如果 {@code destroy()} 过程中再次失败或卡住,残留的 Netty boss/worker 线程(非守护线程) + * 会让 JVM 永远不退出,表现为进程仍在监听端口,下次启动时出现 {@code Address already in use}。 + * 这里 main 捕获 Throwable 后强制 {@link System#exit(int)},确保进程干净退出。 + */ +@SpringBootApplication(scanBasePackages = "com.lingniu.ingest") +public class IngestApplication { + + private static final Logger log = LoggerFactory.getLogger(IngestApplication.class); + + public static void main(String[] args) { + try { + SpringApplication.run(IngestApplication.class, args); + } catch (Throwable t) { + log.error("Ingest application failed to start, forcing JVM exit", t); + System.exit(1); + } + } +} diff --git a/bootstrap-all/src/main/resources/application.yml b/bootstrap-all/src/main/resources/application.yml new file mode 100644 index 00000000..467e9711 --- /dev/null +++ b/bootstrap-all/src/main/resources/application.yml @@ -0,0 +1,130 @@ +spring: + application: + name: lingniu-vehicle-ingest + threads: + virtual: + enabled: true + +server: + port: 20000 + +lingniu: + ingest: + gb32960: + enabled: true + port: 9000 + boss-threads: 1 + worker-threads: 0 # 0 = Runtime.availableProcessors() * 2 + # VIN 白名单认证(内存配置)。GB/T 32960 设备没有账号密码,身份由 VIN 决定。 + auth: + enabled: ${GB32960_AUTH_ENABLED:false} # true 启用白名单;false 放行所有 VIN + case-sensitive: false # 默认大小写不敏感 + whitelist: # VIN 列表,未列入的 0x01 登入返回 0x04 VIN_NOT_EXIST + # - LTEST000000000001 + # - LGWEF4A58RE123456 + # 平台登入 0x05 账号列表(GB/T 32960.3 表 29)。 + # 列表为空时放行所有平台登入(兼容旧行为),否则 username/password 必须匹配, + # 失败返回 0x02 OTHER_ERROR 应答并关闭连接。 + platforms: + - username: ${GB32960_PLATFORM_USER_1:lingniu} + password: ${GB32960_PLATFORM_PWD_1:Lingniu.2024#} + allowed-ips: # 可选:限制来源 IP,为空不限制 + description: 外部下级平台 (原旧服务客户端) + # TLS 双向认证(可选)。启用后 Netty pipeline 前置 SslHandler 并强制客户端证书。 + tls: + enabled: ${GB32960_TLS_ENABLED:false} + cert-path: ${GB32960_TLS_CERT:} # 服务端证书 PEM 路径 + key-path: ${GB32960_TLS_KEY:} # 服务端私钥 PEM 路径(PKCS#8 未加密) + trust-cert-path: ${GB32960_TLS_CA:} # 受信 CA 证书 PEM,用于校验客户端证书 + require-client-auth: true # 强制双向;false=单向 TLS + jt808: + enabled: false + port: 10808 + max-frame-length: 1048 + jt1078: + enabled: true + jsatl12: + enabled: true + port: 7612 + file-store: file:///var/lingniu/alarm-files + mqtt: + enabled: false + endpoints: + - name: yutong + uri: ${MQTT_URI:ssl://cpxlm.axxc.cn:38883} + topic: ${MQTT_TOPIC:/ytforward/shln/+} + qos: 1 + client-id: ${MQTT_CLIENT_ID:shlnClientId} + username: ${MQTT_USER:shln} + password: ${MQTT_PWD:} + tls: + ca-pem: ${MQTT_CA_PEM:} + client-pem: ${MQTT_CLIENT_PEM:} + client-key: ${MQTT_CLIENT_KEY:} + xinda-push: + enabled: false + host: ${XINDA_HOST:115.231.168.135} + port: ${XINDA_PORT:10100} + username: ${XINDA_USER:浙江羚牛} + password: ${XINDA_PWD:xd123456+} + subscribe-msg-ids: 0200,0300,0401 + client-desc: 羚牛客户端 + + pipeline: + disruptor: + ring-buffer-size: 131072 # 2^17 + wait-strategy: yielding # blocking | sleeping | yielding | busy-spin + producer-type: multi + dedup: + enabled: true + cache-size: 200000 + ttl-seconds: 600 + rate-limit: + per-vin-qps: 50 + + session: + store: memory-and-redis + token-ttl-seconds: 86400 + + sink: + mq: + # MQ Sink 总开关。true=装配 Kafka Producer 并投递事件;false=完全不装配(适合本地开发或 Kafka 不可达)。 + enabled: ${KAFKA_ENABLED:false} + type: kafka # 后端选择:kafka | (rocketmq | pulsar 预留) + bootstrap-servers: ${KAFKA_BROKERS:localhost:9092} + compression-type: zstd + linger-ms: 20 + batch-size: 65536 + acks: all + enable-idempotence: true + topics: + realtime: vehicle.realtime + location: vehicle.location + alarm: vehicle.alarm + session: vehicle.session + media-meta: vehicle.media.meta + raw-archive: vehicle.raw.archive + dlq: vehicle.dlq + archive: + enabled: true + type: local # local | s3 | oss + path: ./archive/ + +management: + endpoints: + web: + exposure: + include: health,info,metrics,prometheus,env + metrics: + tags: + application: lingniu-vehicle-ingest + +logging: + level: + root: INFO + com.lingniu.ingest: INFO + com.lingniu.ingest.protocol.gb32960.inbound.Gb32960ChannelHandler: INFO + com.lingniu.ingest.protocol.gb32960.codec.Gb32960FrameDecoder: INFO + com.lingniu.ingest.protocol.gb32960.codec.Gb32960BodyParser: INFO + # 信达 push 诊断:打开下面一行可以看到每一条收发的原始字节 hex dump + com.lingniu.ingest.inbound.xinda: INFO diff --git a/bootstrap-all/src/test/java/com/lingniu/ingest/bootstrap/IngestEndToEndTest.java b/bootstrap-all/src/test/java/com/lingniu/ingest/bootstrap/IngestEndToEndTest.java new file mode 100644 index 00000000..7bbfaf95 --- /dev/null +++ b/bootstrap-all/src/test/java/com/lingniu/ingest/bootstrap/IngestEndToEndTest.java @@ -0,0 +1,166 @@ +package com.lingniu.ingest.bootstrap; + +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.sink.EventSink; +import com.lingniu.ingest.codec.BccChecksum; +import com.lingniu.ingest.protocol.gb32960.inbound.Gb32960NettyServer; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; + +import java.io.ByteArrayOutputStream; +import java.net.Socket; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 端到端集成测试: + *

+ *   test client → TCP → Gb32960 Netty server → frame decoder → dispatcher
+ *   → InterceptorChain → Handler → DisruptorEventBus → TestEventSink
+ * 
+ * + *

关闭了所有非 gb32960 的协议与 Kafka sink,只测核心链路连通性。 + */ +@SpringBootTest( + classes = IngestApplication.class, + webEnvironment = SpringBootTest.WebEnvironment.NONE, + properties = { + "lingniu.ingest.gb32960.enabled=true", + "lingniu.ingest.gb32960.port=0", + "lingniu.ingest.jt808.enabled=false", + "lingniu.ingest.jt1078.enabled=false", + "lingniu.ingest.jsatl12.enabled=false", + "lingniu.ingest.mqtt.enabled=false", + "lingniu.ingest.xinda-push.enabled=false", + "lingniu.ingest.command-gateway.enabled=false", + // 总开关关闭 Kafka sink:TestEventSink 成为唯一 Sink + "lingniu.ingest.sink.mq.enabled=false", + "lingniu.ingest.sink.archive.enabled=false", + "spring.main.allow-bean-definition-overriding=true" + }) +@Import(IngestEndToEndTest.TestConfig.class) +class IngestEndToEndTest { + + @Autowired + private Gb32960NettyServer server; + + @Autowired + private TestEventSink testSink; + + @Test + void gb32960FrameReachesEventSink() throws Exception { + int port = server.getBoundPort(); + assertThat(port).isGreaterThan(0); + + byte[] frame = buildRealtimeFrame("LTEST0000000E2E01"); + try (Socket socket = new Socket("127.0.0.1", port)) { + socket.getOutputStream().write(frame); + socket.getOutputStream().flush(); + } + + // DisruptorEventBus + Virtual threads have some jitter; poll up to 3s. + VehicleEvent captured = null; + long deadline = System.currentTimeMillis() + 3000; + while (System.currentTimeMillis() < deadline) { + captured = testSink.queue.poll(100, TimeUnit.MILLISECONDS); + if (captured instanceof VehicleEvent.Realtime) break; + if (captured != null) continue; + } + assertThat(captured).isInstanceOf(VehicleEvent.Realtime.class); + assertThat(captured.vin()).isEqualTo("LTEST0000000E2E01"); + } + + // ===== test config ===== + + @TestConfiguration + static class TestConfig { + @Bean + TestEventSink testEventSink() { + return new TestEventSink(); + } + } + + /** 收集所有 publish 的事件。 */ + static final class TestEventSink implements EventSink { + final BlockingQueue queue = new LinkedBlockingQueue<>(); + + @Override public String name() { return "test"; } + + @Override + public CompletableFuture publish(VehicleEvent event) { + queue.add(event); + return CompletableFuture.completedFuture(null); + } + + @Override + public CompletableFuture publishBatch(List batch) { + queue.addAll(batch); + return CompletableFuture.completedFuture(null); + } + } + + // ===== frame builder (inlined copy of Gb32960DecoderTest#buildRealtimeFrame) ===== + + private static byte[] buildRealtimeFrame(String vin) { + ByteArrayOutputStream body = new ByteArrayOutputStream(); + body.write(24); body.write(1); body.write(2); body.write(3); body.write(4); body.write(5); + + // 0x01 整车 20 字节 + body.write(0x01); + body.write(0x01); body.write(0x03); body.write(0x01); + writeU16(body, 523); + writeU32(body, 1234567); + writeU16(body, 6000); + writeU16(body, 1100); + body.write(70); + body.write(0x01); + body.write(0x0F); + writeU16(body, 500); + body.write(30); + body.write(0); + + // 0x05 位置 9 字节 + body.write(0x05); + body.write(0x00); + writeU32(body, 116_397_128L); + writeU32(body, 39_916_527L); + + byte[] bodyBytes = body.toByteArray(); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + out.write(0x23); out.write(0x23); + out.write(0x02); + out.write(0xFE); + byte[] vinBytes = vin.getBytes(StandardCharsets.US_ASCII); + out.write(vinBytes, 0, 17); + out.write(0x01); + writeU16(out, bodyBytes.length); + out.write(bodyBytes, 0, bodyBytes.length); + byte[] almost = out.toByteArray(); + byte bcc = BccChecksum.compute(almost, 2, almost.length - 2); + out.write(bcc & 0xFF); + return out.toByteArray(); + } + + private static void writeU16(ByteArrayOutputStream os, int v) { + os.write((v >> 8) & 0xFF); + os.write(v & 0xFF); + } + + private static void writeU32(ByteArrayOutputStream os, long v) { + os.write((int) ((v >> 24) & 0xFF)); + os.write((int) ((v >> 16) & 0xFF)); + os.write((int) ((v >> 8) & 0xFF)); + os.write((int) (v & 0xFF)); + } +} diff --git a/command-gateway/pom.xml b/command-gateway/pom.xml new file mode 100644 index 00000000..8da24131 --- /dev/null +++ b/command-gateway/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + command-gateway + command-gateway + + 下行命令网关:HTTP → 设备。复用 session-core 的 CommandDispatcher, + 覆盖原 JT808Controller / JT1078Controller 的 43 个端点(PoC 阶段先落核心子集)。 + + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + session-core + + + com.lingniu.ingest + protocol-jt808 + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-validation + + + diff --git a/command-gateway/src/main/java/com/lingniu/ingest/gateway/CommandGatewayAutoConfiguration.java b/command-gateway/src/main/java/com/lingniu/ingest/gateway/CommandGatewayAutoConfiguration.java new file mode 100644 index 00000000..e2449f30 --- /dev/null +++ b/command-gateway/src/main/java/com/lingniu/ingest/gateway/CommandGatewayAutoConfiguration.java @@ -0,0 +1,14 @@ +package com.lingniu.ingest.gateway; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.web.servlet.DispatcherServlet; + +@AutoConfiguration +@ConditionalOnClass(DispatcherServlet.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.command-gateway", name = "enabled", havingValue = "true", matchIfMissing = true) +@ComponentScan(basePackageClasses = TerminalCommandController.class) +public class CommandGatewayAutoConfiguration { +} diff --git a/command-gateway/src/main/java/com/lingniu/ingest/gateway/CommandResult.java b/command-gateway/src/main/java/com/lingniu/ingest/gateway/CommandResult.java new file mode 100644 index 00000000..d9ed98e0 --- /dev/null +++ b/command-gateway/src/main/java/com/lingniu/ingest/gateway/CommandResult.java @@ -0,0 +1,24 @@ +package com.lingniu.ingest.gateway; + +/** + * 统一命令响应 envelope。 + * + * @param success 是否成功 + * @param code 业务状态码(0=成功,其它=失败原因) + * @param message 人类可读消息 + * @param data 可选负载(设备应答对象、JSON 节点等) + */ +public record CommandResult(boolean success, int code, String message, Object data) { + + public static CommandResult ok(Object data) { + return new CommandResult(true, 0, "ok", data); + } + + public static CommandResult notImplemented(String hint) { + return new CommandResult(false, 501, "not_implemented: " + hint, null); + } + + public static CommandResult failure(int code, String message) { + return new CommandResult(false, code, message, null); + } +} diff --git a/command-gateway/src/main/java/com/lingniu/ingest/gateway/TerminalCommandController.java b/command-gateway/src/main/java/com/lingniu/ingest/gateway/TerminalCommandController.java new file mode 100644 index 00000000..abeb1e3c --- /dev/null +++ b/command-gateway/src/main/java/com/lingniu/ingest/gateway/TerminalCommandController.java @@ -0,0 +1,145 @@ +package com.lingniu.ingest.gateway; + +import com.lingniu.ingest.protocol.jt808.downlink.Jt808Commands; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import com.lingniu.ingest.session.CommandDispatcher; +import com.lingniu.ingest.session.DeviceSession; +import com.lingniu.ingest.session.SessionStore; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.stream.Collectors; + +/** + * 下行命令 REST 入口。命令通过 {@link CommandDispatcher} 发往协议模块, + * 由 protocol-jt808 的 {@code Jt808CommandDispatcher} 实际发送到终端。 + * + *

路径参数 {@code clientId} 可以是 sessionId / phone / vin, + * 由 {@link SessionStore} 三索引解析。 + */ +@RestController +@RequestMapping("/terminal") +public class TerminalCommandController { + + private static final Duration DEFAULT_TIMEOUT = Duration.ofSeconds(20); + + private final SessionStore sessions; + private final CommandDispatcher dispatcher; + + public TerminalCommandController(SessionStore sessions, CommandDispatcher dispatcher) { + this.sessions = sessions; + this.dispatcher = dispatcher; + } + + @GetMapping("/session") + public CommandResult session(@RequestParam String clientId) { + Optional s = resolveSession(clientId); + return s.map(CommandResult::ok) + .orElseGet(() -> CommandResult.failure(404, "session not found: " + clientId)); + } + + @GetMapping("/location") + public CommandResult queryLocation(@RequestParam String clientId) { + return awaitSync(clientId, Jt808Commands.queryLocation(), "query-location"); + } + + @GetMapping("/parameters") + public CommandResult queryParameters(@RequestParam String clientId) { + return awaitSync(clientId, Jt808Commands.queryParameters(), "query-parameters"); + } + + @PutMapping("/parameters") + public CommandResult setParameters(@RequestParam String clientId, + @RequestBody Map body) { + List items = body.entrySet().stream() + .map(e -> new Jt808Commands.ParamItem( + parseId(e.getKey()), + e.getValue() == null ? new byte[0] : e.getValue().getBytes(StandardCharsets.UTF_8))) + .collect(Collectors.toList()); + return awaitSync(clientId, Jt808Commands.setParameters(items), "set-parameters"); + } + + @PostMapping("/control") + public CommandResult terminalControl(@RequestParam String clientId, + @RequestBody Map body) { + int word = Integer.parseInt(body.getOrDefault("command", "0").toString()); + String params = body.getOrDefault("params", "").toString(); + return awaitSync(clientId, Jt808Commands.terminalControl(word, params), "terminal-control"); + } + + @PostMapping("/ack") + public CommandResult ack(@RequestParam String clientId, @RequestBody Map body) { + int ackSerial = body.getOrDefault("ackSerial", 0); + int ackMsgId = body.getOrDefault("ackMsgId", 0); + int result = body.getOrDefault("result", 0); + return fireAndForget(clientId, Jt808Commands.platformAck(ackSerial, ackMsgId, result), "platform-ack"); + } + + @GetMapping("/attributes") + public CommandResult attributes(@RequestParam String clientId) { + return CommandResult.notImplemented("0x8107 query-attributes"); + } + + @DeleteMapping("/area") + public CommandResult deleteArea(@RequestParam String clientId, @RequestParam String ids) { + return CommandResult.notImplemented("0x8601 delete-area"); + } + + @PostMapping("/alarm_ack") + public CommandResult alarmAck(@RequestParam String clientId, @RequestBody Map body) { + return CommandResult.notImplemented("0x8203 alarm-ack"); + } + + // ===== helpers ===== + + private Optional resolveSession(String clientId) { + return sessions.findBySessionId(clientId) + .or(() -> sessions.findByPhone(clientId)) + .or(() -> sessions.findByVin(clientId)); + } + + private CommandResult awaitSync(String clientId, Jt808Commands.DownlinkCommand cmd, String op) { + CompletableFuture future = + dispatcher.request(clientId, cmd, Jt808Message.class, DEFAULT_TIMEOUT); + try { + Jt808Message resp = future.join(); + return CommandResult.ok(Map.of( + "messageId", "0x" + Integer.toHexString(resp.header().messageId()), + "serial", resp.header().serialNo(), + "phone", resp.header().phone())); + } catch (CompletionException e) { + Throwable cause = e.getCause() != null ? e.getCause() : e; + return CommandResult.failure(500, op + " failed: " + cause.getMessage()); + } catch (Exception e) { + return CommandResult.failure(500, op + " failed: " + e.getMessage()); + } + } + + private CommandResult fireAndForget(String clientId, Jt808Commands.DownlinkCommand cmd, String op) { + try { + dispatcher.notify(clientId, cmd).join(); + return CommandResult.ok(Map.of("op", op)); + } catch (Exception e) { + return CommandResult.failure(500, op + " failed: " + e.getMessage()); + } + } + + private static long parseId(String key) { + if (key == null || key.isBlank()) return 0; + String k = key.startsWith("0x") ? key.substring(2) : key; + return Long.parseLong(k, 16); + } +} diff --git a/command-gateway/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/command-gateway/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..ac81ba27 --- /dev/null +++ b/command-gateway/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.gateway.CommandGatewayAutoConfiguration diff --git a/inbound-mqtt/pom.xml b/inbound-mqtt/pom.xml new file mode 100644 index 00000000..ec98ea2f --- /dev/null +++ b/inbound-mqtt/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + inbound-mqtt + inbound-mqtt + MQTT 接入模块(支持多 endpoint,宇通等),HiveMQ MQTT Client + 双向 TLS。 + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + ingest-core + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-configuration-processor + true + + + com.hivemq + hivemq-mqtt-client + + + com.fasterxml.jackson.core + jackson-databind + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + diff --git a/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/client/MqttEndpointManager.java b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/client/MqttEndpointManager.java new file mode 100644 index 00000000..660378c6 --- /dev/null +++ b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/client/MqttEndpointManager.java @@ -0,0 +1,152 @@ +package com.lingniu.ingest.inbound.mqtt.client; + +import com.hivemq.client.mqtt.datatypes.MqttQos; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; +import com.hivemq.client.mqtt.mqtt3.Mqtt3Client; +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.pipeline.RawFrame; +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.inbound.mqtt.config.MqttInboundProperties; +import com.lingniu.ingest.inbound.mqtt.model.MqttPayload; +import com.lingniu.ingest.inbound.mqtt.parser.MqttPayloadParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.URI; +import java.time.Instant; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * MQTT 多 endpoint 生命周期管理。 + * + *

为每个 endpoint 创建一个 HiveMQ 异步客户端 → 连接 → 订阅 → 注册回调 → + * 回调里解析 payload → {@link Dispatcher#dispatch(RawFrame)}。 + * + *

Netty EventLoop 回调不做业务处理,虚拟线程由 Dispatcher 侧的 Disruptor 承接。 + */ +public final class MqttEndpointManager implements AutoCloseable { + + private static final Logger log = LoggerFactory.getLogger(MqttEndpointManager.class); + + private final MqttInboundProperties props; + private final MqttPayloadParser payloadParser; + private final Dispatcher dispatcher; + private final List clients = new ArrayList<>(); + + public MqttEndpointManager(MqttInboundProperties props, + MqttPayloadParser payloadParser, + Dispatcher dispatcher) { + this.props = props; + this.payloadParser = payloadParser; + this.dispatcher = dispatcher; + } + + public void start() { + for (MqttInboundProperties.Endpoint ep : props.getEndpoints()) { + try { + Mqtt3AsyncClient client = buildClient(ep); + clients.add(client); + connectAndSubscribe(client, ep); + } catch (Exception e) { + log.error("mqtt endpoint [{}] init failed, skipped", ep.getName(), e); + } + } + } + + private Mqtt3AsyncClient buildClient(MqttInboundProperties.Endpoint ep) { + URI uri = URI.create(ep.getUri()); + int port = uri.getPort() > 0 ? uri.getPort() : defaultPort(uri.getScheme()); + var builder = Mqtt3Client.builder() + .identifier(ep.getClientId() == null || ep.getClientId().isBlank() + ? "lingniu-" + UUID.randomUUID() : ep.getClientId()) + .serverHost(uri.getHost()) + .serverPort(port) + .automaticReconnectWithDefaultConfig(); + + if ("ssl".equalsIgnoreCase(uri.getScheme()) || "tls".equalsIgnoreCase(uri.getScheme()) + || "mqtts".equalsIgnoreCase(uri.getScheme())) { + // TODO: 基于 ep.getTls() 的 caPem / clientPem / clientKey 构造自定义 SslConfig + builder = builder.sslWithDefaultConfig(); + } + return builder.buildAsync(); + } + + private void connectAndSubscribe(Mqtt3AsyncClient client, MqttInboundProperties.Endpoint ep) { + var connectBuilder = client.connectWith(); + if (ep.getUsername() != null && !ep.getUsername().isBlank()) { + connectBuilder = connectBuilder.simpleAuth() + .username(ep.getUsername()) + .password(ep.getPassword() == null ? new byte[0] : ep.getPassword().getBytes()) + .applySimpleAuth(); + } + connectBuilder.send().whenComplete((ack, err) -> { + if (err != null) { + log.error("mqtt endpoint [{}] connect failed", ep.getName(), err); + return; + } + log.info("mqtt endpoint [{}] connected code={}", ep.getName(), ack.getReturnCode()); + client.subscribeWith() + .topicFilter(ep.getTopic()) + .qos(mapQos(ep.getQos())) + .callback(publish -> onMessage(ep, publish.getTopic().toString(), publish.getPayloadAsBytes())) + .send() + .whenComplete((subAck, subErr) -> { + if (subErr != null) { + log.error("mqtt endpoint [{}] subscribe failed topic={}", ep.getName(), ep.getTopic(), subErr); + } else { + log.info("mqtt endpoint [{}] subscribed topic={} qos={}", + ep.getName(), ep.getTopic(), ep.getQos()); + } + }); + }); + } + + private void onMessage(MqttInboundProperties.Endpoint ep, String topic, byte[] payload) { + try { + MqttPayload parsed = payloadParser.parse(ep.getName(), ep.getProfile(), topic, payload); + Map meta = new HashMap<>(4); + meta.put("vin", parsed.vin() == null ? "unknown" : parsed.vin()); + meta.put("endpoint", ep.getName()); + meta.put("topic", topic); + RawFrame rf = new RawFrame( + ProtocolId.MQTT_YUTONG, 0, 0, + parsed, payload, meta, Instant.now()); + dispatcher.dispatch(rf); + } catch (Exception e) { + log.warn("mqtt endpoint [{}] message handling failed topic={} len={}", + ep.getName(), topic, payload.length, e); + } + } + + private static MqttQos mapQos(int level) { + return switch (level) { + case 0 -> MqttQos.AT_MOST_ONCE; + case 2 -> MqttQos.EXACTLY_ONCE; + default -> MqttQos.AT_LEAST_ONCE; + }; + } + + private static int defaultPort(String scheme) { + if (scheme == null) return 1883; + return switch (scheme.toLowerCase()) { + case "ssl", "tls", "mqtts" -> 8883; + default -> 1883; + }; + } + + @Override + public void close() { + for (Mqtt3AsyncClient c : clients) { + try { + c.disconnect(); + } catch (Exception ignored) { + // best-effort + } + } + log.info("mqtt endpoint manager stopped, clients={}", clients.size()); + } +} diff --git a/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/config/MqttInboundAutoConfiguration.java b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/config/MqttInboundAutoConfiguration.java new file mode 100644 index 00000000..17fdc5e9 --- /dev/null +++ b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/config/MqttInboundAutoConfiguration.java @@ -0,0 +1,66 @@ +package com.lingniu.ingest.inbound.mqtt.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.inbound.mqtt.client.MqttEndpointManager; +import com.lingniu.ingest.inbound.mqtt.handler.MqttRealtimeHandler; +import com.lingniu.ingest.inbound.mqtt.mapper.YutongEventMapper; +import com.lingniu.ingest.inbound.mqtt.parser.MqttPayloadParser; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +@AutoConfiguration +@EnableConfigurationProperties(MqttInboundProperties.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.mqtt", name = "enabled", havingValue = "true") +public class MqttInboundAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public ObjectMapper mqttObjectMapper() { + return new ObjectMapper(); + } + + @Bean + @ConditionalOnMissingBean + public MqttPayloadParser mqttPayloadParser(ObjectMapper objectMapper) { + return new MqttPayloadParser(objectMapper); + } + + @Bean + @ConditionalOnMissingBean + public YutongEventMapper yutongEventMapper() { + return new YutongEventMapper(); + } + + @Bean + @ConditionalOnMissingBean + public MqttRealtimeHandler mqttRealtimeHandler(YutongEventMapper mapper) { + return new MqttRealtimeHandler(mapper); + } + + @Bean(destroyMethod = "close") + @ConditionalOnMissingBean + public MqttEndpointManager mqttEndpointManager(MqttInboundProperties props, + MqttPayloadParser parser, + Dispatcher dispatcher) { + return new MqttEndpointManager(props, parser, dispatcher); + } + + /** + * Spring Boot 启动完成后触发 MQTT 连接,避免与 Netty / Kafka 启动竞争。 + */ + @Bean + public ApplicationRunner mqttStartupRunner(MqttEndpointManager manager) { + return new ApplicationRunner() { + @Override + public void run(ApplicationArguments args) { + manager.start(); + } + }; + } +} diff --git a/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/config/MqttInboundProperties.java b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/config/MqttInboundProperties.java new file mode 100644 index 00000000..47e5456a --- /dev/null +++ b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/config/MqttInboundProperties.java @@ -0,0 +1,69 @@ +package com.lingniu.ingest.inbound.mqtt.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.ArrayList; +import java.util.List; + +/** + * MQTT 接入配置。支持多 endpoint(每个 endpoint 可对应一个车厂 / 一个 broker)。 + */ +@ConfigurationProperties(prefix = "lingniu.ingest.mqtt") +public class MqttInboundProperties { + + private boolean enabled = false; + private List endpoints = new ArrayList<>(); + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public List getEndpoints() { return endpoints; } + public void setEndpoints(List endpoints) { this.endpoints = endpoints; } + + public static class Endpoint { + /** 逻辑名称,用于指标与日志。 */ + private String name; + /** 对端 URI。形如 ssl://host:port 或 tcp://host:port。 */ + private String uri; + /** 订阅 topic,支持 + / # 通配符。 */ + private String topic; + /** QoS 0/1/2。 */ + private int qos = 1; + private String clientId; + private String username; + private String password; + /** JSON 字段适配器 profile。默认 yutong。未来可支持 haipote / others。 */ + private String profile = "yutong"; + private Tls tls = new Tls(); + + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public String getUri() { return uri; } + public void setUri(String uri) { this.uri = uri; } + public String getTopic() { return topic; } + public void setTopic(String topic) { this.topic = topic; } + public int getQos() { return qos; } + public void setQos(int qos) { this.qos = qos; } + public String getClientId() { return clientId; } + public void setClientId(String clientId) { this.clientId = clientId; } + public String getUsername() { return username; } + public void setUsername(String username) { this.username = username; } + public String getPassword() { return password; } + public void setPassword(String password) { this.password = password; } + public String getProfile() { return profile; } + public void setProfile(String profile) { this.profile = profile; } + public Tls getTls() { return tls; } + public void setTls(Tls tls) { this.tls = tls; } + } + + public static class Tls { + private String caPem; + private String clientPem; + private String clientKey; + public String getCaPem() { return caPem; } + public void setCaPem(String caPem) { this.caPem = caPem; } + public String getClientPem() { return clientPem; } + public void setClientPem(String clientPem) { this.clientPem = clientPem; } + public String getClientKey() { return clientKey; } + public void setClientKey(String clientKey) { this.clientKey = clientKey; } + } +} diff --git a/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/handler/MqttRealtimeHandler.java b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/handler/MqttRealtimeHandler.java new file mode 100644 index 00000000..9293f18e --- /dev/null +++ b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/handler/MqttRealtimeHandler.java @@ -0,0 +1,35 @@ +package com.lingniu.ingest.inbound.mqtt.handler; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.annotation.EventEmit; +import com.lingniu.ingest.api.annotation.MessageMapping; +import com.lingniu.ingest.api.annotation.ProtocolHandler; +import com.lingniu.ingest.api.annotation.RateLimited; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.inbound.mqtt.mapper.YutongEventMapper; +import com.lingniu.ingest.inbound.mqtt.model.MqttPayload; + +import java.util.List; + +/** + * MQTT 接入示例 Handler。 + * + *

MQTT 没有"命令字"概念,使用默认的 wildcard 匹配({@code command} 为空)。 + * 同一 Dispatcher 仍能正确路由,因为协议 ID 做了隔离。 + */ +@ProtocolHandler(protocol = ProtocolId.MQTT_YUTONG) +public class MqttRealtimeHandler { + + private final YutongEventMapper mapper; + + public MqttRealtimeHandler(YutongEventMapper mapper) { + this.mapper = mapper; + } + + @MessageMapping(desc = "宇通 MQTT 实时数据") + @RateLimited(perVin = 20) + @EventEmit({VehicleEvent.Realtime.class, VehicleEvent.Location.class}) + public List onMqtt(MqttPayload payload) { + return mapper.toEvents(payload); + } +} diff --git a/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/mapper/YutongEventMapper.java b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/mapper/YutongEventMapper.java new file mode 100644 index 00000000..457abc8d --- /dev/null +++ b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/mapper/YutongEventMapper.java @@ -0,0 +1,99 @@ +package com.lingniu.ingest.inbound.mqtt.mapper; + +import com.fasterxml.jackson.databind.JsonNode; +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.event.LocationPayload; +import com.lingniu.ingest.api.event.RealtimePayload; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.spi.EventMapper; +import com.lingniu.ingest.inbound.mqtt.model.MqttPayload; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * 宇通 MQTT payload → 领域事件。 + * + *

字段名取自旧项目的 {@code ReceptionDataVO}(大写 + 下划线),对字段映射一致性做出显式断言, + * 便于与旧服务双跑对账。 + */ +public final class YutongEventMapper implements EventMapper { + + @Override + public List toEvents(MqttPayload payload) { + JsonNode d = payload.data(); + if (d == null || !d.isObject()) return List.of(); + + Instant ingestTime = Instant.now(); + String vin = payload.vin(); + Map meta = Map.of( + "endpoint", payload.endpointName() == null ? "" : payload.endpointName(), + "topic", payload.topic() == null ? "" : payload.topic(), + "profile", payload.profile() == null ? "" : payload.profile()); + + Double speed = optDouble(d, "METER_SPEED"); + Double mileage = optDouble(d, "TOTAL_MILEAGE"); + Double soc = optDouble(d, "BATTERY_CAPACITY_SOC"); + Double fcVoltage = optDouble(d, "VOLTAGE_OF_FC"); + Double fcCurrent = optDouble(d, "CURRENT_OF_FC"); + Double fcTemp = optDouble(d, "TEMPT_OF_FC"); + Double leftH2 = optDouble(d, "LEFT_HYDROGEN"); + Double lowH2Pressure = optDouble(d, "HYDROGEN_LOW_PRESSURE"); + Double longitude = optCoord(d, "LONGITUDE"); + Double latitude = optCoord(d, "LATITUDE"); + Double direction = optDouble(d, "GPSDirection"); + Double acc = optDouble(d, "ACC_PEDAL_APT"); + Double brake = optDouble(d, "BRAKEPEDALAPT"); + Integer gear = optInt(d, "ON_GEAR"); + + RealtimePayload realtime = new RealtimePayload( + speed, mileage, soc, null, null, + fcVoltage, fcCurrent, fcTemp, leftH2, null, lowH2Pressure, + null, null, null, gear, acc, brake, + longitude, latitude, null, direction, + null, null); + + List out = new ArrayList<>(2); + out.add(new VehicleEvent.Realtime( + UUID.randomUUID().toString(), + vin, ProtocolId.MQTT_YUTONG, payload.deviceTime(), ingestTime, + null, meta, realtime)); + + if (longitude != null && latitude != null) { + LocationPayload loc = new LocationPayload( + longitude, latitude, 0.0, + speed == null ? 0.0 : speed, + direction == null ? 0.0 : direction, + 0, 0); + out.add(new VehicleEvent.Location( + UUID.randomUUID().toString(), + vin, ProtocolId.MQTT_YUTONG, payload.deviceTime(), ingestTime, + null, meta, loc)); + } + return out; + } + + private static Double optDouble(JsonNode n, String field) { + JsonNode v = n.get(field); + if (v == null || v.isNull() || !v.isNumber()) return null; + return v.asDouble(); + } + + private static Integer optInt(JsonNode n, String field) { + JsonNode v = n.get(field); + if (v == null || v.isNull() || !v.isNumber()) return null; + return v.asInt(); + } + + /** 宇通坐标约定:1e6 整数 或 已经是小数。同时过滤无效值 999999 / 0。 */ + private static Double optCoord(JsonNode n, String field) { + Double v = optDouble(n, field); + if (v == null) return null; + if (v.intValue() == 999_999 || v == 0.0) return null; + if (Math.abs(v) > 1000) return v / 1_000_000.0; + return v; + } +} diff --git a/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/model/MqttPayload.java b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/model/MqttPayload.java new file mode 100644 index 00000000..38f0662b --- /dev/null +++ b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/model/MqttPayload.java @@ -0,0 +1,24 @@ +package com.lingniu.ingest.inbound.mqtt.model; + +import com.fasterxml.jackson.databind.JsonNode; + +import java.time.Instant; + +/** + * MQTT 解析后的统一消息体:{@code Dispatcher} 收到的 RawFrame payload 就是这个。 + * + * @param endpointName 来源 endpoint 逻辑名 + * @param profile 字段映射 profile(如 yutong / haipote) + * @param topic 原始 topic + * @param vin VIN(解析自 payload 的 device / vin 字段) + * @param deviceTime 设备上报时刻 + * @param data 原始 JSON 树,供 Mapper 按 profile 提取字段 + */ +public record MqttPayload( + String endpointName, + String profile, + String topic, + String vin, + Instant deviceTime, + JsonNode data +) {} diff --git a/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/parser/MqttPayloadParser.java b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/parser/MqttPayloadParser.java new file mode 100644 index 00000000..c1980966 --- /dev/null +++ b/inbound-mqtt/src/main/java/com/lingniu/ingest/inbound/mqtt/parser/MqttPayloadParser.java @@ -0,0 +1,68 @@ +package com.lingniu.ingest.inbound.mqtt.parser; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.lingniu.ingest.api.spi.DecodeException; +import com.lingniu.ingest.inbound.mqtt.model.MqttPayload; + +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +/** + * 宇通 MQTT 消息字段适配器(对标旧 {@code VehicleDataReceptionVO} + {@code ReceptionDataVO})。 + * + *

约定宇通 MQTT 的 payload JSON 形如: + *

{@code
+ * {
+ *   "id": "xxx",
+ *   "device": "LTEST000000000001",   // VIN
+ *   "code": "C001",
+ *   "time": "20260413100000",        // yyyyMMddHHmmss
+ *   "data": { "METER_SPEED": 52, "LATITUDE": 39916527, ... }
+ * }
+ * }
+ * + *

其它厂商 profile 只需新增一个 Parser 实现即可,由 profile 路由。 + */ +public final class MqttPayloadParser { + + private static final DateTimeFormatter TIME_FMT = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + private static final ZoneId ZONE = ZoneId.of("Asia/Shanghai"); + + private final ObjectMapper mapper; + + public MqttPayloadParser(ObjectMapper mapper) { + this.mapper = mapper; + } + + public MqttPayload parse(String endpointName, String profile, String topic, byte[] bytes) { + try { + JsonNode root = mapper.readTree(bytes); + String vin = text(root, "device", "vin"); + Instant deviceTime = parseTime(text(root, "time")); + JsonNode data = root.has("data") ? root.get("data") : root; + return new MqttPayload(endpointName, profile, topic, vin, deviceTime, data); + } catch (Exception e) { + throw new DecodeException("mqtt payload parse failed: " + e.getMessage(), e); + } + } + + private static String text(JsonNode root, String... keys) { + for (String k : keys) { + JsonNode n = root.get(k); + if (n != null && !n.isNull()) return n.asText(); + } + return ""; + } + + private static Instant parseTime(String raw) { + if (raw == null || raw.isEmpty()) return Instant.now(); + try { + return LocalDateTime.parse(raw, TIME_FMT).atZone(ZONE).toInstant(); + } catch (Exception e) { + return Instant.now(); + } + } +} diff --git a/inbound-mqtt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/inbound-mqtt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..c8aa81c4 --- /dev/null +++ b/inbound-mqtt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.inbound.mqtt.config.MqttInboundAutoConfiguration diff --git a/inbound-mqtt/src/test/java/com/lingniu/ingest/inbound/mqtt/YutongEventMapperTest.java b/inbound-mqtt/src/test/java/com/lingniu/ingest/inbound/mqtt/YutongEventMapperTest.java new file mode 100644 index 00000000..94df6207 --- /dev/null +++ b/inbound-mqtt/src/test/java/com/lingniu/ingest/inbound/mqtt/YutongEventMapperTest.java @@ -0,0 +1,67 @@ +package com.lingniu.ingest.inbound.mqtt; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.inbound.mqtt.mapper.YutongEventMapper; +import com.lingniu.ingest.inbound.mqtt.model.MqttPayload; +import com.lingniu.ingest.inbound.mqtt.parser.MqttPayloadParser; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class YutongEventMapperTest { + + private final ObjectMapper objectMapper = new ObjectMapper(); + private final MqttPayloadParser parser = new MqttPayloadParser(objectMapper); + private final YutongEventMapper mapper = new YutongEventMapper(); + + @Test + void parsesYutongSamplePayload() { + String json = """ + { + "id": "abc", + "device": "LTEST000000000001", + "code": "C1", + "time": "20260413100000", + "data": { + "METER_SPEED": 52.3, + "TOTAL_MILEAGE": 123456.7, + "BATTERY_CAPACITY_SOC": 70, + "LONGITUDE": 116397128, + "LATITUDE": 39916527, + "GPSDirection": 90, + "LEFT_HYDROGEN": 5.5, + "VOLTAGE_OF_FC": 600.0, + "CURRENT_OF_FC": 120.0, + "TEMPT_OF_FC": 65.0, + "ON_GEAR": 3, + "ACC_PEDAL_APT": 25, + "BRAKEPEDALAPT": 0 + } + } + """; + + MqttPayload payload = parser.parse("yutong", "yutong", "/ytforward/shln/dev1", json.getBytes()); + assertThat(payload.vin()).isEqualTo("LTEST000000000001"); + + List events = mapper.toEvents(payload); + assertThat(events).hasSize(2); + + VehicleEvent.Realtime rt = (VehicleEvent.Realtime) events.stream() + .filter(e -> e instanceof VehicleEvent.Realtime).findFirst().orElseThrow(); + assertThat(rt.source()).isEqualTo(ProtocolId.MQTT_YUTONG); + assertThat(rt.vin()).isEqualTo("LTEST000000000001"); + assertThat(rt.payload().speedKmh()).isEqualTo(52.3); + assertThat(rt.payload().batterySoc()).isEqualTo(70.0); + assertThat(rt.payload().longitude()).isEqualTo(116.397128, org.assertj.core.data.Offset.offset(0.000001)); + assertThat(rt.payload().latitude()).isEqualTo(39.916527, org.assertj.core.data.Offset.offset(0.000001)); + assertThat(rt.payload().hydrogenRemainingKg()).isEqualTo(5.5); + + VehicleEvent.Location loc = (VehicleEvent.Location) events.stream() + .filter(e -> e instanceof VehicleEvent.Location).findFirst().orElseThrow(); + assertThat(loc.payload().longitude()).isEqualTo(116.397128, org.assertj.core.data.Offset.offset(0.000001)); + } +} diff --git a/inbound-xinda-push/pom.xml b/inbound-xinda-push/pom.xml new file mode 100644 index 00000000..39633339 --- /dev/null +++ b/inbound-xinda-push/pom.xml @@ -0,0 +1,74 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + inbound-xinda-push + inbound-xinda-push + + 信达平台推送接入。基于私仓 org.lingniu:gps-push-client:1.0 封装的 + com.gps31.push.netty.PushClient 重写,保留信达真实帧格式, + 登录/心跳/订阅/位置/报警 全程对接成功后把事件直接投到 Kafka。 + + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + ingest-core + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-configuration-processor + true + + + io.netty + netty-all + + + com.fasterxml.jackson.core + jackson-databind + + + + + org.lingniu + gps-push-client + 1.0 + + + + com.alibaba + fastjson + 1.2.83 + + + + org.apache.commons + commons-collections4 + 4.4 + + + + org.apache.commons + commons-lang3 + + + + commons-codec + commons-codec + + + + diff --git a/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/XindaPushClient.java b/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/XindaPushClient.java new file mode 100644 index 00000000..820d8d86 --- /dev/null +++ b/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/XindaPushClient.java @@ -0,0 +1,267 @@ +package com.lingniu.ingest.inbound.xinda; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.gps31.push.netty.PushClient; +import com.gps31.push.netty.PushMsg; +import com.gps31.push.netty.client.TcpClient; +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.event.LocationPayload; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.core.concurrency.DisruptorEventBus; +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.inbound.xinda.config.XindaPushProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.charset.StandardCharsets; +import java.time.Instant; +import java.util.Map; +import java.util.UUID; + +/** + * 信达 Push 接入客户端。基于 {@code org.lingniu:gps-push-client:1.0} 的 {@link PushClient} + * 实现,完全使用信达真实协议帧格式(帧头 / 长度 / cmd / json / 帧尾 + 序列号 + 心跳)。 + * + *

行为: + *

    + *
  • {@link #start()} 调用基类 {@code TcpClient.start()} 建立连接并自动重连 + *
  • 基类在 {@code channelActive} 自动发送 {@code 0x0001 登录} 帧,携带 userName / pwd / csTag / desc + *
  • 登录成功收到应答后(由基类内部处理)会自动订阅 {@code subMsgIds}(默认空,需显式调用 setSubMsgIds) + *
  • {@link #messageReceived(TcpClient, PushMsg)} 为业务入口:cmd 字符串区分消息类型 + *
  • 位置 {@code 0200} → {@link VehicleEvent.Location} + *
  • 报警 {@code 0300} → {@link VehicleEvent.Alarm}(转为 Passthrough 保留原始 json 供下游分析) + *
  • 透传 {@code 0401} → {@link VehicleEvent.Passthrough} + *
+ * + *

类继承基类 {@code PushClient},不再需要手工处理帧编解码、心跳、重连、订阅等机制。 + */ +public class XindaPushClient extends PushClient { + + private static final Logger log = LoggerFactory.getLogger(XindaPushClient.class); + + private final XindaPushProperties props; + private final Dispatcher dispatcher; + private final DisruptorEventBus eventBus; + + public XindaPushClient(XindaPushProperties props, Dispatcher dispatcher, DisruptorEventBus eventBus) { + super(); + this.props = props; + this.dispatcher = dispatcher; + this.eventBus = eventBus; + this.isLog = false; + } + + /** + * 启动客户端:填入 host/port/user/pwd/desc,配置订阅消息 ID,交给基类建立连接。 + */ + public void start() { + if (props.getHost() == null || props.getHost().isBlank()) { + log.error("[xinda-push] host not configured, module stays idle"); + return; + } + if (props.getUsername() == null || props.getPassword() == null) { + log.error("[xinda-push] credentials missing, module stays idle " + + "(set lingniu.ingest.xinda-push.username/password)"); + return; + } + setHost(props.getHost()); + setPort(props.getPort()); + setUserName(props.getUsername()); + setPwd(props.getPassword()); + setDesc(props.getClientDesc()); + // 订阅消息 ID:信达基类 PushClient.setSubMsgIds 用管道符 "|" 作为分隔符 + // (内部调用 StringUtil.splitStr(s, "|")) + if (props.getSubscribeMsgIds() != null && !props.getSubscribeMsgIds().isEmpty()) { + setSubMsgIds(String.join("|", props.getSubscribeMsgIds())); + } + // 基类 PushClient 构造器默认 isLog=false / isLogBytes=false; + // 这里尊重默认值,不再覆盖为 true,避免 <<>>Log接收 每条帧都被 ERROR 级打印。 + // 真要打开 wire-level 诊断时,临时改为 setLog(true) 即可。 + try { + log.info("[xinda-push] starting host={} port={} user={} subMsgIds={}", + getHost(), getPort(), getUserName(), getSubMsgIds()); + super.start(); + } catch (Exception e) { + log.error("[xinda-push] start failed", e); + } + } + + /** + * Spring 生命周期停止钩子。 + */ + public void stop() { + try { + destroy(); + log.info("[xinda-push] stopped"); + } catch (Exception e) { + log.warn("[xinda-push] stop error", e); + } + } + + // ======================================================================== + // 业务回调:收到完整的 PushMsg 后分派事件 + // ======================================================================== + + @Override + public void messageReceived(TcpClient client, PushMsg msg) throws Exception { + super.messageReceived(client, msg); + String cmd = msg.getCmd(); + if (cmd == null) return; + try { + switch (cmd) { + case "8001" -> handleLoginAck(msg); + case "8002" -> log.debug("[xinda-push] heartbeat ack"); + case "8003" -> log.info("[xinda-push] subscribe ack json={}", msg.getJson()); + case "0200" -> handleLocation(msg); + case "0300" -> handleAlarm(msg); + case "0401" -> handlePassthrough(msg); + default -> log.debug("[xinda-push] rx cmd={} json={}", cmd, msg.getJson()); + } + } catch (Exception e) { + log.warn("[xinda-push] dispatch failed cmd={} json={}", cmd, msg.getJson(), e); + } + } + + /** + * 收到 8001 登录应答后处理:若 {@code rspResult=0} 则主动发送 0003 订阅命令。 + * + *

信达订阅命令的 body 格式(从旧 {@code PushClientHandler} 和 8003 错误提示反推得到): + *

{@code
+     * {
+     *   "seq":     "1",                             // 序列号
+     *   "action":  "add",                           // 操作: add 订阅 / del 取消
+     *   "msgIds":  "[\"0200\",\"0300\",\"0401\"]"  // JSON 数组字符串(注意是字符串,不是数组)
+     * }
+     * }
+ *

+ * 其中 {@code msgIds} 的值来自基类 {@link PushClient#getSubCmdSet()},内容由 + * {@link PushClient#setSubMsgIds(String)} 填充(分隔符是 {@code |})。 + */ + private void handleLoginAck(PushMsg msg) throws Exception { + String json = msg.getJson() == null ? "" : msg.getJson(); + log.info("[xinda-push] login ack json={}", json); + JSONObject parsed = JSON.parseObject(json); + String rsp = parsed == null ? null : parsed.getString("rspResult"); + if (!"0".equals(rsp)) { + log.error("[xinda-push] login REJECTED rspResult={}", rsp); + return; + } + Map body = new java.util.HashMap<>(); + body.put("seq", "1"); + body.put("action", "add"); + body.put("msgIds", JSON.toJSONString(getSubCmdSet())); + PushMsg subscribe = getInstance("0003", body); + sendMsg(subscribe); + log.info("[xinda-push] subscribe sent action=add msgIds={}", getSubCmdSet()); + } + + @Override + public void channelActive(TcpClient client) throws Exception { + super.channelActive(client); + log.info("[xinda-push] channel active, login frame sent"); + } + + @Override + public void channelInactive(TcpClient client) throws Exception { + super.channelInactive(client); + log.warn("[xinda-push] channel inactive, will auto-reconnect"); + } + + // ======================================================================== + // 业务处理(0200/0300/0401 → VehicleEvent) + // ======================================================================== + + /** + * 0200 定位消息 → {@link VehicleEvent.Location}。 + *

信达 0200 常见字段(不同版本可能略有差异): + *

+     *   plateNo  车牌号
+     *   lat/lng  WGS84 度 * 1e6 (整数)
+     *   speed    km/h
+     *   drct     方向
+     *   height   海拔 m
+     *   alarmStts 报警状态位
+     *   statusStts 状态位
+     *   time     yyyyMMddHHmmss
+     * 
+ */ + private void handleLocation(PushMsg msg) { + JSONObject json = JSON.parseObject(msg.getJson()); + String vin = firstNonBlank(json, "vin", "plateNo", "carNo"); + double lon = asDouble(json, "lng", "lon", "longitude") / 1_000_000.0; + double lat = asDouble(json, "lat", "latitude") / 1_000_000.0; + // 有的实现已经是十进制度,做一次保护:如果 |lon| > 1000 显然是 1e6 单位再除一次 + if (Math.abs(lon) > 1000) lon /= 1.0; // already divided above + double speed = asDouble(json, "speed"); + double direction = asDouble(json, "drct", "direction"); + long alarmFlag = (long) asDouble(json, "alarmStts", "alarmFlag"); + long statusFlag = (long) asDouble(json, "statusStts", "statusFlag"); + + VehicleEvent.Location loc = new VehicleEvent.Location( + UUID.randomUUID().toString(), + vin.isBlank() ? "unknown" : vin, + ProtocolId.XINDA_PUSH, + Instant.now(), Instant.now(), + null, + Map.of("source", "xinda-push", "cmd", "0200"), + new LocationPayload(lon, lat, 0.0, speed, direction, alarmFlag, statusFlag)); + eventBus.publish(loc); + log.debug("[xinda-push] 0200 location vin={} lon={} lat={} speed={}", vin, lon, lat, speed); + } + + private void handleAlarm(PushMsg msg) { + emitPassthrough(0x0300, msg); + log.info("[xinda-push] 0300 alarm json={}", msg.getJson()); + } + + private void handlePassthrough(PushMsg msg) { + emitPassthrough(0x0401, msg); + log.debug("[xinda-push] 0401 passthrough json={}", msg.getJson()); + } + + private void emitPassthrough(int type, PushMsg msg) { + JSONObject json = JSON.parseObject(msg.getJson()); + String vin = firstNonBlank(json, "vin", "plateNo", "carNo"); + byte[] raw = msg.getJson() == null + ? new byte[0] : msg.getJson().getBytes(StandardCharsets.UTF_8); + VehicleEvent.Passthrough pt = new VehicleEvent.Passthrough( + UUID.randomUUID().toString(), + vin.isBlank() ? "unknown" : vin, + ProtocolId.XINDA_PUSH, + Instant.now(), Instant.now(), + null, + Map.of("source", "xinda-push", "cmd", String.format("%04x", type), + "rawJson", msg.getJson() == null ? "" : msg.getJson()), + type, raw); + eventBus.publish(pt); + } + + // ======================================================================== + // JSON helpers + // ======================================================================== + + private static String firstNonBlank(JSONObject node, String... keys) { + if (node == null) return ""; + for (String k : keys) { + Object v = node.get(k); + if (v != null && !v.toString().isBlank()) return v.toString(); + } + return ""; + } + + private static double asDouble(JSONObject node, String... keys) { + if (node == null) return 0.0; + for (String k : keys) { + Object v = node.get(k); + if (v instanceof Number n) return n.doubleValue(); + if (v != null) { + try { + return Double.parseDouble(v.toString()); + } catch (NumberFormatException ignored) { + } + } + } + return 0.0; + } +} diff --git a/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/config/XindaPushAutoConfiguration.java b/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/config/XindaPushAutoConfiguration.java new file mode 100644 index 00000000..ffdc51fe --- /dev/null +++ b/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/config/XindaPushAutoConfiguration.java @@ -0,0 +1,36 @@ +package com.lingniu.ingest.inbound.xinda.config; + +import com.lingniu.ingest.core.concurrency.DisruptorEventBus; +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.inbound.xinda.XindaPushClient; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +@AutoConfiguration +@EnableConfigurationProperties(XindaPushProperties.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.xinda-push", name = "enabled", havingValue = "true") +public class XindaPushAutoConfiguration { + + @Bean(destroyMethod = "stop") + @ConditionalOnMissingBean + public XindaPushClient xindaPushClient(XindaPushProperties props, + Dispatcher dispatcher, + DisruptorEventBus eventBus) { + return new XindaPushClient(props, dispatcher, eventBus); + } + + @Bean + public ApplicationRunner xindaPushStartupRunner(XindaPushClient client) { + return new ApplicationRunner() { + @Override + public void run(ApplicationArguments args) { + client.start(); + } + }; + } +} diff --git a/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/config/XindaPushProperties.java b/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/config/XindaPushProperties.java new file mode 100644 index 00000000..e168222a --- /dev/null +++ b/inbound-xinda-push/src/main/java/com/lingniu/ingest/inbound/xinda/config/XindaPushProperties.java @@ -0,0 +1,40 @@ +package com.lingniu.ingest.inbound.xinda.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.ArrayList; +import java.util.List; + +/** + * 信达 Push 接入配置。所有敏感字段均可通过环境变量注入,彻底取代旧代码里的硬编码。 + */ +@ConfigurationProperties(prefix = "lingniu.ingest.xinda-push") +public class XindaPushProperties { + + private boolean enabled = false; + private String host; + private int port = 10100; + private String username; + private String password; + private String clientDesc = "lingniu-ingest"; + private List subscribeMsgIds = new ArrayList<>(List.of("0200", "0300", "0401")); + /** 断线重连间隔(秒)。 */ + private int reconnectIntervalSec = 5; + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public String getHost() { return host; } + public void setHost(String host) { this.host = host; } + public int getPort() { return port; } + public void setPort(int port) { this.port = port; } + public String getUsername() { return username; } + public void setUsername(String username) { this.username = username; } + public String getPassword() { return password; } + public void setPassword(String password) { this.password = password; } + public String getClientDesc() { return clientDesc; } + public void setClientDesc(String clientDesc) { this.clientDesc = clientDesc; } + public List getSubscribeMsgIds() { return subscribeMsgIds; } + public void setSubscribeMsgIds(List subscribeMsgIds) { this.subscribeMsgIds = subscribeMsgIds; } + public int getReconnectIntervalSec() { return reconnectIntervalSec; } + public void setReconnectIntervalSec(int reconnectIntervalSec) { this.reconnectIntervalSec = reconnectIntervalSec; } +} diff --git a/inbound-xinda-push/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/inbound-xinda-push/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..43286331 --- /dev/null +++ b/inbound-xinda-push/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.inbound.xinda.config.XindaPushAutoConfiguration diff --git a/ingest-api/pom.xml b/ingest-api/pom.xml new file mode 100644 index 00000000..6d484399 --- /dev/null +++ b/ingest-api/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + ingest-api + ingest-api + SPI、sealed 领域事件、注解定义。零 Spring 依赖。 + + + + org.slf4j + slf4j-api + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/ProtocolId.java b/ingest-api/src/main/java/com/lingniu/ingest/api/ProtocolId.java new file mode 100644 index 00000000..785c4411 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/ProtocolId.java @@ -0,0 +1,14 @@ +package com.lingniu.ingest.api; + +/** + * 协议标识,作为所有 SPI / 注解 / 路由 key 的统一枚举。 + * 新增协议需要在此处登记,避免散落的字符串常量。 + */ +public enum ProtocolId { + GB32960, + JT808, + JT1078, + JSATL12, + MQTT_YUTONG, + XINDA_PUSH +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/AsyncBatch.java b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/AsyncBatch.java new file mode 100644 index 00000000..6f28febf --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/AsyncBatch.java @@ -0,0 +1,22 @@ +package com.lingniu.ingest.api.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 批量异步处理:框架把多次同类调用聚合成 {@code List} 交给方法。 + * + *

处理方法签名需为 {@code void foo(List list)} 或返回 {@code List}。 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface AsyncBatch { + + int size() default 1000; + + long waitMs() default 500; + + int poolSize() default 2; +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/EventEmit.java b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/EventEmit.java new file mode 100644 index 00000000..48c81478 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/EventEmit.java @@ -0,0 +1,17 @@ +package com.lingniu.ingest.api.annotation; + +import com.lingniu.ingest.api.event.VehicleEvent; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 声明当前 Handler 方法产出的事件类型。用于文档化和静态校验。 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface EventEmit { + Class[] value(); +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/IdempotentKey.java b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/IdempotentKey.java new file mode 100644 index 00000000..d8a1d36c --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/IdempotentKey.java @@ -0,0 +1,17 @@ +package com.lingniu.ingest.api.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 声明幂等键,由 Dedup 拦截器使用。支持 SpEL 表达式,上下文根对象为 Handler 参数。 + * + *

示例:{@code @IdempotentKey("#msg.vin + ':' + #msg.seq + ':' + #msg.eventTime")} + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface IdempotentKey { + String value(); +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/MessageMapping.java b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/MessageMapping.java new file mode 100644 index 00000000..ed24a145 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/MessageMapping.java @@ -0,0 +1,27 @@ +package com.lingniu.ingest.api.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 方法级路由注解:声明此方法处理哪些协议消息。 + * + *

{@link #command} 和 {@link #infoType} 的含义由各协议自行解释,Dispatcher 只负责匹配: + *

    + *
  • GB/T 32960:{@code command} = 0x01 车辆登入 / 0x02 实时上报 / ...;{@code infoType} = 信息体 ID + *
  • JT/T 808:{@code command} = 消息 ID(0x0100 / 0x0200 / ...);{@code infoType} 留空 + *
  • MQTT:{@code command} 可为 topic hash 或忽略 + *
+ */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface MessageMapping { + + int[] command() default {}; + + int[] infoType() default {}; + + String desc() default ""; +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/ProtocolHandler.java b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/ProtocolHandler.java new file mode 100644 index 00000000..6e308444 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/ProtocolHandler.java @@ -0,0 +1,30 @@ +package com.lingniu.ingest.api.annotation; + +import com.lingniu.ingest.api.ProtocolId; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 标记一个类为协议 Handler Bean,由 {@code AnnotationHandlerProcessor} 自动扫描注册。 + * + *

典型用法: + *

{@code
+ * @ProtocolHandler(protocol = ProtocolId.GB32960)
+ * public class Gb32960RealtimeHandler {
+ *     @MessageMapping(command = 0x02)
+ *     public VehicleEvent.Realtime handle(Gb32960Message msg) { ... }
+ * }
+ * }
+ */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface ProtocolHandler { + + ProtocolId protocol(); + + /** 可选:子协议版本(如 32960 的 2011 / 2017)。 */ + String version() default ""; +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/RateLimited.java b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/RateLimited.java new file mode 100644 index 00000000..73c47a25 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/RateLimited.java @@ -0,0 +1,20 @@ +package com.lingniu.ingest.api.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 单 VIN 速率限制。超限消息直接进 DLQ 并打点。 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface RateLimited { + + /** 单 VIN 每秒最大消息数。 */ + int perVin() default 50; + + /** 全局 QPS 上限;<=0 表示不设限。 */ + int global() default -1; +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/TraceSpan.java b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/TraceSpan.java new file mode 100644 index 00000000..daf225c0 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/annotation/TraceSpan.java @@ -0,0 +1,15 @@ +package com.lingniu.ingest.api.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 为 Handler 方法开启 OpenTelemetry span。 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface TraceSpan { + String value(); +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/event/AlarmPayload.java b/ingest-api/src/main/java/com/lingniu/ingest/api/event/AlarmPayload.java new file mode 100644 index 00000000..b56cb03e --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/event/AlarmPayload.java @@ -0,0 +1,37 @@ +package com.lingniu.ingest.api.event; + +import java.util.List; +import java.util.Set; + +/** + * 报警事件载荷,跨协议归一。 + * + * @param level 报警最高等级 + * @param alarmTypeCode 协议原始 alarm type 编码(按协议自定义),可用于联查协议规范 + * @param alarmTypeName 报警类型名称,如 {@code GB32960_ALARM} + * @param faultCodes 故障代码列表(协议私有编码字符串化,便于下游去重/聚合) + * @param activeBits 结构化的通用报警位集合(2016 版:0~15;2025 版:0~27),对照 GB/T 32960.3 表 24 + * @param longitude 经度(可选,若事件伴随位置) + * @param latitude 纬度(可选) + */ +public record AlarmPayload( + AlarmLevel level, + int alarmTypeCode, + String alarmTypeName, + List faultCodes, + Set activeBits, + Double longitude, + Double latitude +) { + /** + * 报警等级(归一化的跨协议分类)。 + * + *
    + *
  • {@link #INFO}:提示级(对应 GB/T 32960.3 0/无故障) + *
  • {@link #MINOR}:1 级 —— 不影响车辆正常行驶 + *
  • {@link #MAJOR}:2 级 —— 影响车辆性能,需驾驶员限制行驶 + *
  • {@link #CRITICAL}:3 级(驾驶员应立即停车)或 4 级(热事件最高级) + *
+ */ + public enum AlarmLevel { INFO, MINOR, MAJOR, CRITICAL } +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/event/LocationPayload.java b/ingest-api/src/main/java/com/lingniu/ingest/api/event/LocationPayload.java new file mode 100644 index 00000000..132f8921 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/event/LocationPayload.java @@ -0,0 +1,12 @@ +package com.lingniu.ingest.api.event; + +/** 位置事件载荷。坐标已统一转换为 WGS84 十进制度。 */ +public record LocationPayload( + double longitude, + double latitude, + double altitudeM, + double speedKmh, + double directionDeg, + long alarmFlag, + long statusFlag +) {} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/event/RealtimePayload.java b/ingest-api/src/main/java/com/lingniu/ingest/api/event/RealtimePayload.java new file mode 100644 index 00000000..76ceefa1 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/event/RealtimePayload.java @@ -0,0 +1,49 @@ +package com.lingniu.ingest.api.event; + +/** + * 实时数据载荷(扁平 record,字段用 {@code Double} / {@code Integer} 允许 null,表达"未上报")。 + * + *

不再复刻旧服务 {@code VehicleDataActual} 的 273 字段巨型类 —— 协议特有细节通过 + * {@link VehicleEvent#metadata()} 传递。此处只保留跨协议通用字段。 + */ +public record RealtimePayload( + // ===== 动力 & 能源 ===== + Double speedKmh, + Double totalMileageKm, + Double batterySoc, + Double batteryVoltageV, + Double batteryCurrentA, + + // ===== 燃料电池 / 氢能 ===== + Double fcVoltageV, + Double fcCurrentA, + Double fcTempC, + Double hydrogenRemainingKg, + Double hydrogenHighPressureMpa, + Double hydrogenLowPressureMpa, + + // ===== 车辆状态 ===== + VehicleState vehicleState, + ChargingState chargingState, + RunningMode runningMode, + Integer gearLevel, + Double acceleratorPedal, + Double brakePedal, + + // ===== 位置(冗余一份便于单主题消费)===== + Double longitude, + Double latitude, + Double altitudeM, + Double directionDeg, + + // ===== 环境 ===== + Double ambientTempC, + Double coolantTempC +) { + + public enum VehicleState { STARTED, SHUTDOWN, OTHER, INVALID } + + public enum ChargingState { UNCHARGED, PARKED_CHARGING, DRIVING_CHARGING, CHARGED, OTHER, INVALID } + + public enum RunningMode { ELECTRIC, HYBRID, FUEL, OTHER, INVALID } +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/event/VehicleEvent.java b/ingest-api/src/main/java/com/lingniu/ingest/api/event/VehicleEvent.java new file mode 100644 index 00000000..1044b8a4 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/event/VehicleEvent.java @@ -0,0 +1,141 @@ +package com.lingniu.ingest.api.event; + +import com.lingniu.ingest.api.ProtocolId; + +import java.time.Instant; +import java.util.Map; + +/** + * 领域事件根类型。所有协议归一到这里。 + * + *

使用 sealed + record 表达有界闭合的事件集合,下游消费方可用 {@code switch} 模式匹配穷尽处理。 + * + *

字段约定: + *

    + *
  • {@link #vin} 作为 Kafka 分区 key,保证单车顺序 + *
  • {@link #eventTime} 设备上报时间(而非服务器接收时间) + *
  • {@link #ingestTime} 服务器接收时间,用于延迟监控 + *
  • {@link #traceId} W3C traceparent 上下文 + *
+ */ +public sealed interface VehicleEvent + permits VehicleEvent.Realtime, + VehicleEvent.Location, + VehicleEvent.Alarm, + VehicleEvent.Login, + VehicleEvent.Logout, + VehicleEvent.Heartbeat, + VehicleEvent.MediaMeta, + VehicleEvent.Passthrough { + + String eventId(); + String vin(); + ProtocolId source(); + Instant eventTime(); + Instant ingestTime(); + String traceId(); + + /** 通用元数据:协议版本、终端手机号、网关 IP 等。 */ + Map metadata(); + + // ===== 具体事件类型 ===== + + /** 整车实时数据(32960 实时上报 / MQTT 宇通 / JT808 位置扩展等都归一到这里)。 */ + record Realtime( + String eventId, + String vin, + ProtocolId source, + Instant eventTime, + Instant ingestTime, + String traceId, + Map metadata, + RealtimePayload payload + ) implements VehicleEvent {} + + /** 纯位置事件(808 的 0x0200 / Xinda 0200 映射到此)。 */ + record Location( + String eventId, + String vin, + ProtocolId source, + Instant eventTime, + Instant ingestTime, + String traceId, + Map metadata, + LocationPayload payload + ) implements VehicleEvent {} + + /** 报警事件。 */ + record Alarm( + String eventId, + String vin, + ProtocolId source, + Instant eventTime, + Instant ingestTime, + String traceId, + Map metadata, + AlarmPayload payload + ) implements VehicleEvent {} + + /** 设备登入 / 车辆登入。 */ + record Login( + String eventId, + String vin, + ProtocolId source, + Instant eventTime, + Instant ingestTime, + String traceId, + Map metadata, + String iccid, + String protocolVersion + ) implements VehicleEvent {} + + /** 设备登出。 */ + record Logout( + String eventId, + String vin, + ProtocolId source, + Instant eventTime, + Instant ingestTime, + String traceId, + Map metadata + ) implements VehicleEvent {} + + /** 心跳 / 链路保活。 */ + record Heartbeat( + String eventId, + String vin, + ProtocolId source, + Instant eventTime, + Instant ingestTime, + String traceId, + Map metadata + ) implements VehicleEvent {} + + /** 多媒体元数据(大文件本体走对象存储,通过 archiveRef 引用)。 */ + record MediaMeta( + String eventId, + String vin, + ProtocolId source, + Instant eventTime, + Instant ingestTime, + String traceId, + Map metadata, + String mediaId, + String mediaType, + long sizeBytes, + String archiveRef + ) implements VehicleEvent {} + + /** 透传 / 自定义扩展消息。 */ + record Passthrough( + String eventId, + String vin, + ProtocolId source, + Instant eventTime, + Instant ingestTime, + String traceId, + Map metadata, + int passthroughType, + byte[] data + ) implements VehicleEvent {} +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/package-info.java b/ingest-api/src/main/java/com/lingniu/ingest/api/package-info.java new file mode 100644 index 00000000..c93d2a45 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/package-info.java @@ -0,0 +1,13 @@ +/** + * lingniu-vehicle-ingest 公共 API 模块。零 Spring 依赖,只定义 SPI、sealed 领域事件、注解。 + * + *

分包: + *

    + *
  • {@code annotation} - Handler 注解体系 + *
  • {@code event} - sealed {@code VehicleEvent} + payload records + *
  • {@code pipeline} - RawFrame / IngestContext / IngestInterceptor + *
  • {@code sink} - EventSink SPI + *
  • {@code spi} - ProtocolPlugin / FrameDecoder / FrameEncoder / EventMapper + *
+ */ +package com.lingniu.ingest.api; diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/IngestContext.java b/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/IngestContext.java new file mode 100644 index 00000000..6cb22f0a --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/IngestContext.java @@ -0,0 +1,46 @@ +package com.lingniu.ingest.api.pipeline; + +import java.util.HashMap; +import java.util.Map; + +/** + * 一次消息处理的上下文,贯穿整个拦截链与 Handler。线程不共享,不需要同步。 + */ +public final class IngestContext { + + private final String traceId; + private final Map attributes = new HashMap<>(8); + private volatile boolean aborted; + private volatile String abortReason; + + public IngestContext(String traceId) { + this.traceId = traceId; + } + + public String traceId() { + return traceId; + } + + public T attr(String key) { + @SuppressWarnings("unchecked") + T v = (T) attributes.get(key); + return v; + } + + public void attr(String key, Object value) { + attributes.put(key, value); + } + + public void abort(String reason) { + this.aborted = true; + this.abortReason = reason; + } + + public boolean aborted() { + return aborted; + } + + public String abortReason() { + return abortReason; + } +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/IngestInterceptor.java b/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/IngestInterceptor.java new file mode 100644 index 00000000..e0574fa8 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/IngestInterceptor.java @@ -0,0 +1,21 @@ +package com.lingniu.ingest.api.pipeline; + +import com.lingniu.ingest.api.event.VehicleEvent; + +/** + * 拦截器 SPI。内置实现:Auth / Dedup / RateLimit / CoordTransform / Tracing。 + * 实现 {@link org.springframework.core.Ordered}(或使用 {@code @Order})控制顺序。 + */ +public interface IngestInterceptor { + + /** 解码后、分发到 Handler 之前触发。返回 false 表示终止后续处理。 */ + default boolean before(RawFrame frame, IngestContext ctx) { + return true; + } + + /** Handler 成功产出事件后触发,允许修饰事件或取消投递。 */ + default void after(VehicleEvent event, IngestContext ctx) {} + + /** 处理链任一环节抛出异常时触发。 */ + default void onError(Throwable error, IngestContext ctx) {} +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/RawFrame.java b/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/RawFrame.java new file mode 100644 index 00000000..081621ca --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/pipeline/RawFrame.java @@ -0,0 +1,27 @@ +package com.lingniu.ingest.api.pipeline; + +import com.lingniu.ingest.api.ProtocolId; + +import java.time.Instant; +import java.util.Map; + +/** + * 进入 Pipeline 的原始帧描述。 + * + * @param protocolId 来源协议 + * @param command 协议主命令 / 消息 ID(由各协议自行定义) + * @param infoType 可选子类型(如 32960 的信息体 ID) + * @param payload 已经被 {@link com.lingniu.ingest.api.spi.FrameDecoder} 解析出的协议对象 + * @param rawBytes 原始字节,用于冷存与排障(可能为 null,按配置开关) + * @param sourceMeta 来源元数据:peer ip、端口、session id、topic 等 + * @param receivedAt 服务器接收时刻 + */ +public record RawFrame( + ProtocolId protocolId, + int command, + int infoType, + Object payload, + byte[] rawBytes, + Map sourceMeta, + Instant receivedAt +) {} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/sink/EventSink.java b/ingest-api/src/main/java/com/lingniu/ingest/api/sink/EventSink.java new file mode 100644 index 00000000..dcc13451 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/sink/EventSink.java @@ -0,0 +1,28 @@ +package com.lingniu.ingest.api.sink; + +import com.lingniu.ingest.api.event.VehicleEvent; + +import java.util.List; +import java.util.concurrent.CompletableFuture; + +/** + * 事件出口 SPI。Kafka、本地归档、指标打点都是一种 Sink。 + * + *

实现应当线程安全、非阻塞(内部异步 IO)。由 Disruptor EventBus 扇出调用。 + */ +public interface EventSink { + + String name(); + + CompletableFuture publish(VehicleEvent event); + + default CompletableFuture publishBatch(List batch) { + CompletableFuture[] all = batch.stream().map(this::publish).toArray(CompletableFuture[]::new); + return CompletableFuture.allOf(all); + } + + /** 是否接受此事件类型。默认全部接受。 */ + default boolean accepts(VehicleEvent event) { + return true; + } +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/spi/DecodeException.java b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/DecodeException.java new file mode 100644 index 00000000..0c49d960 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/DecodeException.java @@ -0,0 +1,12 @@ +package com.lingniu.ingest.api.spi; + +/** 解码阶段异常,指示数据体本身违反协议。应被 Dispatcher 路由到 DLQ。 */ +public class DecodeException extends RuntimeException { + public DecodeException(String message) { + super(message); + } + + public DecodeException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/spi/EventMapper.java b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/EventMapper.java new file mode 100644 index 00000000..ecceef3c --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/EventMapper.java @@ -0,0 +1,16 @@ +package com.lingniu.ingest.api.spi; + +import com.lingniu.ingest.api.event.VehicleEvent; + +import java.util.List; + +/** + * 协议消息 → 领域事件的映射器(Adapter 模式)。 + * + *

实现类负责把"我这个协议特有的 Java 对象"翻译成统一的 {@link VehicleEvent}。 + * 允许一条协议消息展开为多条领域事件(例如 32960 的一次实时上报同时产出 Realtime + Location)。 + */ +@FunctionalInterface +public interface EventMapper { + List toEvents(I message); +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/spi/FrameDecoder.java b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/FrameDecoder.java new file mode 100644 index 00000000..9aa9eb90 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/FrameDecoder.java @@ -0,0 +1,13 @@ +package com.lingniu.ingest.api.spi; + +import java.nio.ByteBuffer; + +/** + * 协议帧解码器:字节流 → 协议消息对象。 + * + *

实现类应是无状态的(拆包/粘包由上游 Netty 的帧解码器处理),此处只负责一条完整帧的解析。 + */ +@FunctionalInterface +public interface FrameDecoder { + I decode(ByteBuffer buffer) throws DecodeException; +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/spi/FrameEncoder.java b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/FrameEncoder.java new file mode 100644 index 00000000..ded9040d --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/FrameEncoder.java @@ -0,0 +1,9 @@ +package com.lingniu.ingest.api.spi; + +import java.nio.ByteBuffer; + +/** 下行帧编码器。无下行的协议返回 null 即可。 */ +@FunctionalInterface +public interface FrameEncoder { + ByteBuffer encode(O message); +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/spi/MessageHandler.java b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/MessageHandler.java new file mode 100644 index 00000000..13b5278d --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/MessageHandler.java @@ -0,0 +1,16 @@ +package com.lingniu.ingest.api.spi; + +import com.lingniu.ingest.api.event.VehicleEvent; + +import java.util.List; + +/** + * 编程式 Handler 接口。推荐使用 {@code @ProtocolHandler + @MessageMapping} 注解方式代替。 + * 此接口保留是为了 SPI 场景下的脚本式扩展(例如动态加载的 groovy handler)。 + */ +public interface MessageHandler { + + boolean supports(I message); + + List handle(I message); +} diff --git a/ingest-api/src/main/java/com/lingniu/ingest/api/spi/ProtocolPlugin.java b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/ProtocolPlugin.java new file mode 100644 index 00000000..49947910 --- /dev/null +++ b/ingest-api/src/main/java/com/lingniu/ingest/api/spi/ProtocolPlugin.java @@ -0,0 +1,31 @@ +package com.lingniu.ingest.api.spi; + +import com.lingniu.ingest.api.ProtocolId; + +import java.util.List; + +/** + * 协议插件 SPI。每个协议模块提供一个实现,由 {@code ProtocolPluginRegistry} 通过 ServiceLoader + * 或 Spring Bean 方式发现并装配。 + * + * @param 协议解码后的消息类型 + * @param 下行消息类型(无下行的协议用 {@link Void}) + */ +public interface ProtocolPlugin { + + ProtocolId id(); + + FrameDecoder decoder(); + + FrameEncoder encoder(); + + EventMapper eventMapper(); + + /** + * 插件自带的协议特定 Handler 列表(可选)。 + * 通常推荐使用 {@code @ProtocolHandler} + Spring Bean 的方式注册,此处返回空列表。 + */ + default List> builtinHandlers() { + return List.of(); + } +} diff --git a/ingest-codec-common/pom.xml b/ingest-codec-common/pom.xml new file mode 100644 index 00000000..cc116cd7 --- /dev/null +++ b/ingest-codec-common/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + ingest-codec-common + ingest-codec-common + BCD / CRC / BCC / bit utils 等公共编解码工具。 + + + + io.netty + netty-buffer + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + diff --git a/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BccChecksum.java b/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BccChecksum.java new file mode 100644 index 00000000..5dc49274 --- /dev/null +++ b/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BccChecksum.java @@ -0,0 +1,19 @@ +package com.lingniu.ingest.codec; + +/** BCC(异或校验)。GB/T 32960 与 JT/T 808 都使用此方式做帧尾校验。 */ +public final class BccChecksum { + + private BccChecksum() {} + + public static byte compute(byte[] data, int offset, int length) { + byte sum = 0; + for (int i = offset; i < offset + length; i++) { + sum ^= data[i]; + } + return sum; + } + + public static boolean verify(byte[] data, int offset, int length, byte expected) { + return compute(data, offset, length) == expected; + } +} diff --git a/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BcdCodec.java b/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BcdCodec.java new file mode 100644 index 00000000..32fdddbd --- /dev/null +++ b/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BcdCodec.java @@ -0,0 +1,30 @@ +package com.lingniu.ingest.codec; + +/** BCD (Binary-Coded Decimal) 编解码。JT/T 808 的手机号、时间戳常用。 */ +public final class BcdCodec { + + private BcdCodec() {} + + public static byte[] encode(String decimal) { + int len = (decimal.length() + 1) / 2; + byte[] out = new byte[len]; + int idx = decimal.length() % 2; + if (idx == 1) { + out[0] = (byte) Character.digit(decimal.charAt(0), 10); + } + for (int i = idx; i < decimal.length(); i += 2) { + int hi = Character.digit(decimal.charAt(i), 10); + int lo = Character.digit(decimal.charAt(i + 1), 10); + out[(i + idx) / 2] = (byte) ((hi << 4) | lo); + } + return out; + } + + public static String decode(byte[] bcd) { + StringBuilder sb = new StringBuilder(bcd.length * 2); + for (byte b : bcd) { + sb.append((b >> 4) & 0x0F).append(b & 0x0F); + } + return sb.toString(); + } +} diff --git a/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BitUtils.java b/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BitUtils.java new file mode 100644 index 00000000..cf3034fd --- /dev/null +++ b/ingest-codec-common/src/main/java/com/lingniu/ingest/codec/BitUtils.java @@ -0,0 +1,34 @@ +package com.lingniu.ingest.codec; + +/** 位运算工具:从字节数组读写无符号整数。 */ +public final class BitUtils { + + private BitUtils() {} + + public static int readUint8(byte[] buf, int offset) { + return buf[offset] & 0xFF; + } + + public static int readUint16BE(byte[] buf, int offset) { + return ((buf[offset] & 0xFF) << 8) | (buf[offset + 1] & 0xFF); + } + + public static long readUint32BE(byte[] buf, int offset) { + return ((long) (buf[offset] & 0xFF) << 24) + | ((long) (buf[offset + 1] & 0xFF) << 16) + | ((long) (buf[offset + 2] & 0xFF) << 8) + | (buf[offset + 3] & 0xFF); + } + + public static void writeUint16BE(byte[] buf, int offset, int value) { + buf[offset] = (byte) ((value >> 8) & 0xFF); + buf[offset + 1] = (byte) (value & 0xFF); + } + + public static void writeUint32BE(byte[] buf, int offset, long value) { + buf[offset] = (byte) ((value >> 24) & 0xFF); + buf[offset + 1] = (byte) ((value >> 16) & 0xFF); + buf[offset + 2] = (byte) ((value >> 8) & 0xFF); + buf[offset + 3] = (byte) (value & 0xFF); + } +} diff --git a/ingest-codec-common/src/test/java/com/lingniu/ingest/codec/BcdCodecTest.java b/ingest-codec-common/src/test/java/com/lingniu/ingest/codec/BcdCodecTest.java new file mode 100644 index 00000000..7ee9f94f --- /dev/null +++ b/ingest-codec-common/src/test/java/com/lingniu/ingest/codec/BcdCodecTest.java @@ -0,0 +1,28 @@ +package com.lingniu.ingest.codec; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class BcdCodecTest { + + @Test + void roundTripEvenLength() { + // 偶数位直接等值 + byte[] bcd = BcdCodec.encode("1380013800"); + assertThat(BcdCodec.decode(bcd)).isEqualTo("1380013800"); + } + + @Test + void roundTripOddLengthPadsLeadingZero() { + // 奇数位会在高位补 0 + byte[] bcd = BcdCodec.encode("13800138000"); + assertThat(BcdCodec.decode(bcd)).isEqualTo("013800138000"); + } + + @Test + void checksumMatches() { + byte[] data = {0x01, 0x02, 0x03, 0x04}; + assertThat(BccChecksum.compute(data, 0, data.length)).isEqualTo((byte) 0x04); + } +} diff --git a/ingest-core/pom.xml b/ingest-core/pom.xml new file mode 100644 index 00000000..6a497004 --- /dev/null +++ b/ingest-core/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + ingest-core + ingest-core + Dispatcher / Interceptor Chain / Disruptor Event Bus / 注解扫描与自动注册。 + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + ingest-codec-common + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-autoconfigure + + + org.springframework.boot + spring-boot-configuration-processor + true + + + com.lmax + disruptor + + + com.github.ben-manes.caffeine + caffeine + + + io.github.resilience4j + resilience4j-ratelimiter + + + io.github.resilience4j + resilience4j-circuitbreaker + + + io.netty + netty-all + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/AsyncBatchExecutor.java b/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/AsyncBatchExecutor.java new file mode 100644 index 00000000..aebb16a9 --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/AsyncBatchExecutor.java @@ -0,0 +1,164 @@ +package com.lingniu.ingest.core.concurrency; + +import com.lingniu.ingest.api.annotation.AsyncBatch; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.core.dispatcher.HandlerDefinition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; + +/** + * {@link AsyncBatch} 注解的执行器:把 Handler 方法从"单条调用"变成"批量调用"。 + * + *

每个 Handler 方法对应一个 {@link Batcher},背后是一个固定容量的 {@link BlockingQueue} + * 和 {@link AsyncBatch#poolSize()} 条守护虚拟线程。批量触发条件: + *

    + *
  • 累积 {@link AsyncBatch#size()} 条立即 flush + *
  • 从第一条入队起等待 {@link AsyncBatch#waitMs()} 毫秒后强制 flush + *
+ * + *

目标 Handler 方法签名约定: + *

{@code
+ *   @MessageMapping(...)
+ *   @AsyncBatch(size = 4000, waitMs = 1000, poolSize = 2)
+ *   public List onBatch(List batch) { ... }
+ * }
+ * + *

flush 产出的事件由构造器注入的 {@code eventPublisher} 异步投递(通常是 + * {@link DisruptorEventBus#publish}),不阻塞 Netty EventLoop。 + */ +public final class AsyncBatchExecutor implements AutoCloseable { + + private static final Logger log = LoggerFactory.getLogger(AsyncBatchExecutor.class); + + private final Consumer eventPublisher; + private final ConcurrentMap batchers = new ConcurrentHashMap<>(); + + public AsyncBatchExecutor(Consumer eventPublisher) { + this.eventPublisher = eventPublisher; + } + + /** 供 Dispatcher 调用:把单条消息交给目标 Handler 的 batcher。 */ + public void submit(HandlerDefinition def, Object message) { + Batcher b = batchers.computeIfAbsent(def.method(), m -> new Batcher(def, eventPublisher)); + b.offer(message); + } + + @Override + public void close() { + batchers.values().forEach(Batcher::close); + batchers.clear(); + log.info("AsyncBatchExecutor closed"); + } + + // ===== internals ===== + + private static final class Batcher implements AutoCloseable { + private final HandlerDefinition def; + private final Consumer publisher; + private final int batchSize; + private final long waitMs; + private final BlockingQueue queue; + private final Thread[] workers; + private volatile boolean running = true; + + Batcher(HandlerDefinition def, Consumer publisher) { + AsyncBatch cfg = def.asyncBatch(); + this.def = def; + this.publisher = publisher; + this.batchSize = Math.max(1, cfg.size()); + this.waitMs = Math.max(1, cfg.waitMs()); + this.queue = new ArrayBlockingQueue<>(Math.max(batchSize * 4, 16)); + int pool = Math.max(1, cfg.poolSize()); + this.workers = new Thread[pool]; + for (int i = 0; i < pool; i++) { + Thread t = Thread.ofVirtual() + .name("batcher-" + def.method().getName() + "-" + i) + .unstarted(this::loop); + workers[i] = t; + t.start(); + } + log.info("batcher started method={} size={} waitMs={} pool={}", + def.method().getName(), batchSize, waitMs, pool); + } + + void offer(Object item) { + try { + if (!queue.offer(item, 100, TimeUnit.MILLISECONDS)) { + log.warn("batcher queue full, dropping item for {}", def.method().getName()); + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + private void loop() { + while (running) { + try { + Object first = queue.poll(200, TimeUnit.MILLISECONDS); + if (first == null) continue; + List buf = new ArrayList<>(batchSize); + buf.add(first); + long deadlineNanos = System.nanoTime() + waitMs * 1_000_000L; + while (buf.size() < batchSize) { + long remain = deadlineNanos - System.nanoTime(); + if (remain <= 0) break; + Object next = queue.poll(remain, TimeUnit.NANOSECONDS); + if (next == null) break; + buf.add(next); + } + flush(buf); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + return; + } catch (Exception e) { + log.error("batcher loop error method={}", def.method().getName(), e); + } + } + } + + @SuppressWarnings("unchecked") + private void flush(List buf) { + List events; + try { + Object result = def.method().invoke(def.bean(), buf); + events = switch (result) { + case null -> List.of(); + case List list -> (List) list; + case VehicleEvent e -> List.of(e); + default -> throw new IllegalStateException( + "@AsyncBatch method must return List: " + def.method()); + }; + } catch (InvocationTargetException e) { + log.error("batcher invoke failed method={}", def.method().getName(), e.getCause()); + return; + } catch (IllegalAccessException e) { + log.error("batcher access denied method={}", def.method().getName(), e); + return; + } + for (VehicleEvent e : events) { + try { + publisher.accept(e); + } catch (Exception ex) { + log.warn("batcher publish failed eventId={}", e.eventId(), ex); + } + } + } + + @Override + public void close() { + running = false; + for (Thread t : workers) t.interrupt(); + } + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/DisruptorEventBus.java b/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/DisruptorEventBus.java new file mode 100644 index 00000000..54a34c51 --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/DisruptorEventBus.java @@ -0,0 +1,87 @@ +package com.lingniu.ingest.core.concurrency; + +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.sink.EventSink; +import com.lmax.disruptor.BlockingWaitStrategy; +import com.lmax.disruptor.BusySpinWaitStrategy; +import com.lmax.disruptor.EventHandler; +import com.lmax.disruptor.SleepingWaitStrategy; +import com.lmax.disruptor.WaitStrategy; +import com.lmax.disruptor.YieldingWaitStrategy; +import com.lmax.disruptor.dsl.Disruptor; +import com.lmax.disruptor.dsl.ProducerType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicLong; + +/** + * 基于 Disruptor 的事件总线:Dispatcher 投递事件 → RingBuffer → Sink 扇出。 + * + *

使用虚拟线程作为 Sink 消费线程,避免阻塞 IO 占用平台线程。 + * 单 VIN 有序性由上游 Netty + 分区投递保证,RingBuffer 不做 per-vin 排序。 + */ +public final class DisruptorEventBus implements AutoCloseable { + + private static final Logger log = LoggerFactory.getLogger(DisruptorEventBus.class); + + private final Disruptor disruptor; + private final AtomicLong published = new AtomicLong(); + private final AtomicLong failed = new AtomicLong(); + + public DisruptorEventBus(int ringBufferSize, String waitStrategyName, List sinks) { + ThreadFactory tf = Thread.ofVirtual().name("ingest-bus-", 0).factory(); + this.disruptor = new Disruptor<>( + VehicleEventSlot::new, + ringBufferSize, + tf, + ProducerType.MULTI, + waitStrategy(waitStrategyName)); + + EventHandler[] handlers = sinks.stream() + .map(this::toHandler) + .toArray(EventHandler[]::new); + disruptor.handleEventsWith(handlers); + disruptor.start(); + log.info("DisruptorEventBus started ringBuffer={} wait={} sinks={}", + ringBufferSize, waitStrategyName, sinks.size()); + } + + public void publish(VehicleEvent event) { + disruptor.getRingBuffer().publishEvent((slot, seq, e) -> slot.event = e, event); + published.incrementAndGet(); + } + + @Override + public void close() { + disruptor.shutdown(); + log.info("DisruptorEventBus stopped published={} failed={}", published.get(), failed.get()); + } + + private EventHandler toHandler(EventSink sink) { + return (slot, seq, endOfBatch) -> { + VehicleEvent e = slot.event; + if (e == null || !sink.accepts(e)) return; + try { + sink.publish(e).exceptionally(ex -> { + failed.incrementAndGet(); + log.warn("sink {} publish failed", sink.name(), ex); + return null; + }); + } finally { + if (endOfBatch) slot.clear(); + } + }; + } + + private static WaitStrategy waitStrategy(String name) { + return switch (name == null ? "yielding" : name.toLowerCase()) { + case "blocking" -> new BlockingWaitStrategy(); + case "sleeping" -> new SleepingWaitStrategy(); + case "busy-spin" -> new BusySpinWaitStrategy(); + default -> new YieldingWaitStrategy(); + }; + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/VehicleEventSlot.java b/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/VehicleEventSlot.java new file mode 100644 index 00000000..5a3b0ec2 --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/concurrency/VehicleEventSlot.java @@ -0,0 +1,12 @@ +package com.lingniu.ingest.core.concurrency; + +import com.lingniu.ingest.api.event.VehicleEvent; + +/** Disruptor RingBuffer 槽位:持有可变引用,避免每次发布都分配新对象。 */ +public final class VehicleEventSlot { + public VehicleEvent event; + + public void clear() { + this.event = null; + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/config/IngestCoreAutoConfiguration.java b/ingest-core/src/main/java/com/lingniu/ingest/core/config/IngestCoreAutoConfiguration.java new file mode 100644 index 00000000..43076a91 --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/config/IngestCoreAutoConfiguration.java @@ -0,0 +1,87 @@ +package com.lingniu.ingest.core.config; + +import com.lingniu.ingest.api.pipeline.IngestInterceptor; +import com.lingniu.ingest.api.sink.EventSink; +import com.lingniu.ingest.core.concurrency.AsyncBatchExecutor; +import com.lingniu.ingest.core.concurrency.DisruptorEventBus; +import com.lingniu.ingest.core.dispatcher.AnnotationHandlerBeanPostProcessor; +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.core.dispatcher.HandlerInvoker; +import com.lingniu.ingest.core.dispatcher.HandlerRegistry; +import com.lingniu.ingest.core.pipeline.InterceptorChain; +import com.lingniu.ingest.core.pipeline.builtin.DedupInterceptor; +import com.lingniu.ingest.core.pipeline.builtin.RateLimitInterceptor; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +import java.util.List; + +/** + * ingest-core 的自动装配入口。所有 Bean 都是 {@code @ConditionalOnMissingBean},便于下游替换。 + */ +@AutoConfiguration +@EnableConfigurationProperties(IngestCoreProperties.class) +public class IngestCoreAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public HandlerRegistry handlerRegistry() { + return new HandlerRegistry(); + } + + @Bean + @ConditionalOnMissingBean + public HandlerInvoker handlerInvoker() { + return new HandlerInvoker(); + } + + @Bean + public AnnotationHandlerBeanPostProcessor annotationHandlerBeanPostProcessor(HandlerRegistry registry) { + return new AnnotationHandlerBeanPostProcessor(registry); + } + + @Bean + @ConditionalOnProperty(prefix = "lingniu.ingest.pipeline.dedup", name = "enabled", havingValue = "true", matchIfMissing = true) + public DedupInterceptor dedupInterceptor(IngestCoreProperties props) { + return new DedupInterceptor(props.getDedup().getCacheSize(), props.getDedup().getTtlSeconds()); + } + + @Bean + public RateLimitInterceptor rateLimitInterceptor(IngestCoreProperties props) { + return new RateLimitInterceptor(props.getRateLimit().getPerVinQps(), props.getRateLimit().getMaxVins()); + } + + @Bean + @ConditionalOnMissingBean + public InterceptorChain interceptorChain(List interceptors) { + return new InterceptorChain(interceptors); + } + + @Bean(destroyMethod = "close") + @ConditionalOnMissingBean + public DisruptorEventBus disruptorEventBus(IngestCoreProperties props, List sinks) { + return new DisruptorEventBus( + props.getDisruptor().getRingBufferSize(), + props.getDisruptor().getWaitStrategy(), + sinks); + } + + @Bean(destroyMethod = "close") + @ConditionalOnMissingBean + public AsyncBatchExecutor asyncBatchExecutor(DisruptorEventBus eventBus) { + return new AsyncBatchExecutor(eventBus::publish); + } + + @Bean + @ConditionalOnMissingBean + public Dispatcher dispatcher(HandlerRegistry registry, + InterceptorChain chain, + HandlerInvoker invoker, + DisruptorEventBus eventBus, + AsyncBatchExecutor batchExecutor) { + return new Dispatcher(registry, chain, invoker, eventBus, batchExecutor); + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/config/IngestCoreProperties.java b/ingest-core/src/main/java/com/lingniu/ingest/core/config/IngestCoreProperties.java new file mode 100644 index 00000000..0d3e11be --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/config/IngestCoreProperties.java @@ -0,0 +1,56 @@ +package com.lingniu.ingest.core.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties(prefix = "lingniu.ingest.pipeline") +public class IngestCoreProperties { + + private Disruptor disruptor = new Disruptor(); + private Dedup dedup = new Dedup(); + private RateLimit rateLimit = new RateLimit(); + + public Disruptor getDisruptor() { return disruptor; } + public void setDisruptor(Disruptor disruptor) { this.disruptor = disruptor; } + + public Dedup getDedup() { return dedup; } + public void setDedup(Dedup dedup) { this.dedup = dedup; } + + public RateLimit getRateLimit() { return rateLimit; } + public void setRateLimit(RateLimit rateLimit) { this.rateLimit = rateLimit; } + + public static class Disruptor { + private int ringBufferSize = 131072; + private String waitStrategy = "yielding"; + private String producerType = "multi"; + + public int getRingBufferSize() { return ringBufferSize; } + public void setRingBufferSize(int ringBufferSize) { this.ringBufferSize = ringBufferSize; } + public String getWaitStrategy() { return waitStrategy; } + public void setWaitStrategy(String waitStrategy) { this.waitStrategy = waitStrategy; } + public String getProducerType() { return producerType; } + public void setProducerType(String producerType) { this.producerType = producerType; } + } + + public static class Dedup { + private boolean enabled = true; + private int cacheSize = 200000; + private long ttlSeconds = 600; + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public int getCacheSize() { return cacheSize; } + public void setCacheSize(int cacheSize) { this.cacheSize = cacheSize; } + public long getTtlSeconds() { return ttlSeconds; } + public void setTtlSeconds(long ttlSeconds) { this.ttlSeconds = ttlSeconds; } + } + + public static class RateLimit { + private int perVinQps = 50; + private int maxVins = 100000; + + public int getPerVinQps() { return perVinQps; } + public void setPerVinQps(int perVinQps) { this.perVinQps = perVinQps; } + public int getMaxVins() { return maxVins; } + public void setMaxVins(int maxVins) { this.maxVins = maxVins; } + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/AnnotationHandlerBeanPostProcessor.java b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/AnnotationHandlerBeanPostProcessor.java new file mode 100644 index 00000000..c6e1a0f8 --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/AnnotationHandlerBeanPostProcessor.java @@ -0,0 +1,64 @@ +package com.lingniu.ingest.core.dispatcher; + +import com.lingniu.ingest.api.annotation.AsyncBatch; +import com.lingniu.ingest.api.annotation.IdempotentKey; +import com.lingniu.ingest.api.annotation.MessageMapping; +import com.lingniu.ingest.api.annotation.ProtocolHandler; +import com.lingniu.ingest.api.annotation.RateLimited; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.core.annotation.AnnotatedElementUtils; + +import java.lang.reflect.Method; + +/** + * Spring BeanPostProcessor:扫描带 {@link ProtocolHandler} 注解的 Bean, + * 把每个带 {@link MessageMapping} 的方法注册到 {@link HandlerRegistry}。 + * + *

替代旧代码里遍布的 {@code if (msgId == 0x0100) ... else if (msgId == 0x0102) ...} 风格。 + */ +public class AnnotationHandlerBeanPostProcessor implements BeanPostProcessor { + + private static final Logger log = LoggerFactory.getLogger(AnnotationHandlerBeanPostProcessor.class); + + private final HandlerRegistry registry; + + public AnnotationHandlerBeanPostProcessor(HandlerRegistry registry) { + this.registry = registry; + } + + @Override + public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + Class type = bean.getClass(); + ProtocolHandler classAnno = AnnotatedElementUtils.findMergedAnnotation(type, ProtocolHandler.class); + if (classAnno == null) return bean; + + for (Method method : type.getMethods()) { + MessageMapping mapping = AnnotatedElementUtils.findMergedAnnotation(method, MessageMapping.class); + if (mapping == null) continue; + + Class paramType = method.getParameterCount() > 0 ? method.getParameterTypes()[0] : Object.class; + int[] commands = mapping.command().length == 0 ? new int[]{0} : mapping.command(); + int[] infoTypes = mapping.infoType().length == 0 ? new int[]{0} : mapping.infoType(); + + RateLimited rl = AnnotatedElementUtils.findMergedAnnotation(method, RateLimited.class); + IdempotentKey ik = AnnotatedElementUtils.findMergedAnnotation(method, IdempotentKey.class); + AsyncBatch ab = AnnotatedElementUtils.findMergedAnnotation(method, AsyncBatch.class); + + for (int cmd : commands) { + for (int info : infoTypes) { + HandlerDefinition def = new HandlerDefinition( + classAnno.protocol(), cmd, info, mapping.desc(), + bean, method, paramType, rl, ik, ab); + registry.register(def); + log.info("registered handler {} protocol={} command=0x{} info=0x{}", + type.getSimpleName() + "#" + method.getName(), + classAnno.protocol(), Integer.toHexString(cmd), Integer.toHexString(info)); + } + } + } + return bean; + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/Dispatcher.java b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/Dispatcher.java new file mode 100644 index 00000000..720467bd --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/Dispatcher.java @@ -0,0 +1,79 @@ +package com.lingniu.ingest.core.dispatcher; + +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.pipeline.IngestContext; +import com.lingniu.ingest.api.pipeline.RawFrame; +import com.lingniu.ingest.core.concurrency.AsyncBatchExecutor; +import com.lingniu.ingest.core.concurrency.DisruptorEventBus; +import com.lingniu.ingest.core.pipeline.InterceptorChain; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.UUID; + +/** + * 核心分发器:RawFrame → 拦截链 → Handler → 事件 → Disruptor EventBus。 + * + *

所有 Inbound Adapter(Netty / MQTT / PushClient)都调用 {@link #dispatch(RawFrame)}, + * 协议差异在这里被彻底抹平。 + * + *

对于带 {@code @AsyncBatch} 的 Handler,Dispatcher 不直接反射调用,而是把消息交给 + * {@link AsyncBatchExecutor} 进行聚合 → 批量调用 → 异步发布事件。 + */ +public final class Dispatcher { + + private static final Logger log = LoggerFactory.getLogger(Dispatcher.class); + + private final HandlerRegistry registry; + private final InterceptorChain interceptors; + private final HandlerInvoker invoker; + private final DisruptorEventBus eventBus; + private final AsyncBatchExecutor batchExecutor; + + public Dispatcher(HandlerRegistry registry, + InterceptorChain interceptors, + HandlerInvoker invoker, + DisruptorEventBus eventBus, + AsyncBatchExecutor batchExecutor) { + this.registry = registry; + this.interceptors = interceptors; + this.invoker = invoker; + this.eventBus = eventBus; + this.batchExecutor = batchExecutor; + } + + public void dispatch(RawFrame frame) { + IngestContext ctx = new IngestContext(UUID.randomUUID().toString()); + try { + if (!interceptors.before(frame, ctx)) { + log.debug("frame aborted: {}", ctx.abortReason()); + return; + } + + List handlers = registry.resolve( + frame.protocolId(), frame.command(), frame.infoType()); + if (handlers.isEmpty()) { + log.debug("no handler for {} cmd=0x{} info=0x{}", + frame.protocolId(), Integer.toHexString(frame.command()), + Integer.toHexString(frame.infoType())); + return; + } + + for (HandlerDefinition def : handlers) { + if (def.asyncBatch() != null) { + batchExecutor.submit(def, frame.payload()); + continue; + } + List events = invoker.invoke(def, frame, ctx); + for (VehicleEvent e : events) { + interceptors.after(e, ctx); + eventBus.publish(e); + } + } + } catch (Throwable t) { + log.error("dispatch failure traceId={}", ctx.traceId(), t); + interceptors.onError(t, ctx); + } + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerDefinition.java b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerDefinition.java new file mode 100644 index 00000000..71bd179a --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerDefinition.java @@ -0,0 +1,31 @@ +package com.lingniu.ingest.core.dispatcher; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.annotation.AsyncBatch; +import com.lingniu.ingest.api.annotation.IdempotentKey; +import com.lingniu.ingest.api.annotation.RateLimited; + +import java.lang.reflect.Method; + +/** + * 一个被注解扫描到的 Handler 方法的静态描述。不可变。 + */ +public record HandlerDefinition( + ProtocolId protocol, + int command, + int infoType, + String desc, + Object bean, + Method method, + Class parameterType, + RateLimited rateLimited, + IdempotentKey idempotentKey, + AsyncBatch asyncBatch +) { + public boolean matches(ProtocolId p, int cmd, int info) { + if (p != protocol) return false; + if (command != 0 && command != cmd) return false; + if (infoType != 0 && infoType != info) return false; + return true; + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerInvoker.java b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerInvoker.java new file mode 100644 index 00000000..9587828e --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerInvoker.java @@ -0,0 +1,33 @@ +package com.lingniu.ingest.core.dispatcher; + +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.pipeline.IngestContext; +import com.lingniu.ingest.api.pipeline.RawFrame; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collections; +import java.util.List; + +/** + * 反射调用 Handler。单独抽出是为了后续可插拔:未来可替换为 MethodHandle 或字节码生成。 + */ +public class HandlerInvoker { + + @SuppressWarnings("unchecked") + public List invoke(HandlerDefinition def, RawFrame frame, IngestContext ctx) { + try { + Object result = def.method().invoke(def.bean(), frame.payload()); + return switch (result) { + case null -> Collections.emptyList(); + case VehicleEvent e -> List.of(e); + case List list -> (List) list; + default -> throw new IllegalStateException( + "Handler return type must be VehicleEvent or List: " + def.method()); + }; + } catch (InvocationTargetException e) { + throw new RuntimeException("Handler threw exception: " + def.method(), e.getCause()); + } catch (IllegalAccessException e) { + throw new RuntimeException("Handler not accessible: " + def.method(), e); + } + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerRegistry.java b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerRegistry.java new file mode 100644 index 00000000..d8d7524e --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/dispatcher/HandlerRegistry.java @@ -0,0 +1,48 @@ +package com.lingniu.ingest.core.dispatcher; + +import com.lingniu.ingest.api.ProtocolId; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Handler 注册中心。按 {@code (ProtocolId, command)} 索引,O(1) 查找;同 key 可注册多个 Handler,由 + * {@link HandlerDefinition#matches} 进一步精确匹配 {@code infoType}。 + */ +public final class HandlerRegistry { + + private final Map> byRoute = new ConcurrentHashMap<>(); + private final List wildcardHandlers = Collections.synchronizedList(new ArrayList<>()); + + public void register(HandlerDefinition def) { + if (def.command() == 0) { + wildcardHandlers.add(def); + return; + } + byRoute.computeIfAbsent(new RoutingKey(def.protocol(), def.command()), + k -> Collections.synchronizedList(new ArrayList<>())).add(def); + } + + public List resolve(ProtocolId protocol, int command, int infoType) { + List exact = byRoute.get(new RoutingKey(protocol, command)); + List result = new ArrayList<>(); + if (exact != null) { + for (HandlerDefinition d : exact) { + if (d.matches(protocol, command, infoType)) result.add(d); + } + } + for (HandlerDefinition d : wildcardHandlers) { + if (d.matches(protocol, command, infoType)) result.add(d); + } + return result; + } + + public int size() { + return byRoute.values().stream().mapToInt(List::size).sum() + wildcardHandlers.size(); + } + + private record RoutingKey(ProtocolId protocol, int command) {} +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/InterceptorChain.java b/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/InterceptorChain.java new file mode 100644 index 00000000..37d468d2 --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/InterceptorChain.java @@ -0,0 +1,45 @@ +package com.lingniu.ingest.core.pipeline; + +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.pipeline.IngestContext; +import com.lingniu.ingest.api.pipeline.IngestInterceptor; +import com.lingniu.ingest.api.pipeline.RawFrame; +import org.springframework.core.annotation.AnnotationAwareOrderComparator; + +import java.util.ArrayList; +import java.util.List; + +/** + * 顺序执行的拦截器链,通过 Spring {@code @Order} 或 {@code Ordered} 排序。 + */ +public final class InterceptorChain { + + private final List interceptors; + + public InterceptorChain(List interceptors) { + List sorted = new ArrayList<>(interceptors); + AnnotationAwareOrderComparator.sort(sorted); + this.interceptors = List.copyOf(sorted); + } + + public boolean before(RawFrame frame, IngestContext ctx) { + for (IngestInterceptor i : interceptors) { + if (!i.before(frame, ctx) || ctx.aborted()) { + return false; + } + } + return true; + } + + public void after(VehicleEvent event, IngestContext ctx) { + for (IngestInterceptor i : interceptors) { + i.after(event, ctx); + } + } + + public void onError(Throwable error, IngestContext ctx) { + for (IngestInterceptor i : interceptors) { + i.onError(error, ctx); + } + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/builtin/DedupInterceptor.java b/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/builtin/DedupInterceptor.java new file mode 100644 index 00000000..e9c91a86 --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/builtin/DedupInterceptor.java @@ -0,0 +1,45 @@ +package com.lingniu.ingest.core.pipeline.builtin; + +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; +import com.lingniu.ingest.api.pipeline.IngestContext; +import com.lingniu.ingest.api.pipeline.IngestInterceptor; +import com.lingniu.ingest.api.pipeline.RawFrame; +import org.springframework.core.Ordered; + +import java.time.Duration; + +/** + * 基于 Caffeine 的本地幂等去重。 + * + *

Key 构造:{@code protocolId + command + sourceMeta.seq} —— 真实实现可以接入 Redis 做多节点一致性, + * 本实现只覆盖单节点场景,满足第一阶段 PoC 需求。 + */ +public class DedupInterceptor implements IngestInterceptor, Ordered { + + private final Cache seen; + + public DedupInterceptor(int maxSize, long ttlSeconds) { + this.seen = Caffeine.newBuilder() + .maximumSize(maxSize) + .expireAfterWrite(Duration.ofSeconds(ttlSeconds)) + .build(); + } + + @Override + public boolean before(RawFrame frame, IngestContext ctx) { + String vin = frame.sourceMeta().getOrDefault("vin", "unknown"); + String seq = frame.sourceMeta().getOrDefault("seq", "0"); + String key = frame.protocolId() + ":" + vin + ":" + frame.command() + ":" + seq; + if (seen.asMap().putIfAbsent(key, Boolean.TRUE) != null) { + ctx.abort("duplicate:" + key); + return false; + } + return true; + } + + @Override + public int getOrder() { + return 100; + } +} diff --git a/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/builtin/RateLimitInterceptor.java b/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/builtin/RateLimitInterceptor.java new file mode 100644 index 00000000..70945c79 --- /dev/null +++ b/ingest-core/src/main/java/com/lingniu/ingest/core/pipeline/builtin/RateLimitInterceptor.java @@ -0,0 +1,49 @@ +package com.lingniu.ingest.core.pipeline.builtin; + +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; +import com.lingniu.ingest.api.pipeline.IngestContext; +import com.lingniu.ingest.api.pipeline.IngestInterceptor; +import com.lingniu.ingest.api.pipeline.RawFrame; +import io.github.resilience4j.ratelimiter.RateLimiter; +import io.github.resilience4j.ratelimiter.RateLimiterConfig; +import org.springframework.core.Ordered; + +import java.time.Duration; + +/** + * 单 VIN 速率限制。每个 VIN 一个独立的 Resilience4j RateLimiter,由 Caffeine 按 LRU 管理。 + */ +public class RateLimitInterceptor implements IngestInterceptor, Ordered { + + private final Cache limiters; + private final RateLimiterConfig defaultConfig; + + public RateLimitInterceptor(int perVinQps, int maxVins) { + this.defaultConfig = RateLimiterConfig.custom() + .limitForPeriod(perVinQps) + .limitRefreshPeriod(Duration.ofSeconds(1)) + .timeoutDuration(Duration.ZERO) + .build(); + this.limiters = Caffeine.newBuilder() + .maximumSize(maxVins) + .expireAfterAccess(Duration.ofMinutes(10)) + .build(); + } + + @Override + public boolean before(RawFrame frame, IngestContext ctx) { + String vin = frame.sourceMeta().getOrDefault("vin", "unknown"); + RateLimiter rl = limiters.get(vin, k -> RateLimiter.of("vin-" + k, defaultConfig)); + if (!rl.acquirePermission()) { + ctx.abort("rate-limited:" + vin); + return false; + } + return true; + } + + @Override + public int getOrder() { + return 200; + } +} diff --git a/ingest-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ingest-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..c5adbd90 --- /dev/null +++ b/ingest-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.core.config.IngestCoreAutoConfiguration diff --git a/observability/pom.xml b/observability/pom.xml new file mode 100644 index 00000000..bb7b166f --- /dev/null +++ b/observability/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + observability + observability + Micrometer + Prometheus + 业务指标封装(事件计数、Dispatcher 耗时、DLQ 计数等)。 + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + ingest-core + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-registry-prometheus + + + diff --git a/observability/src/main/java/com/lingniu/ingest/observability/IngestMetrics.java b/observability/src/main/java/com/lingniu/ingest/observability/IngestMetrics.java new file mode 100644 index 00000000..57125bdf --- /dev/null +++ b/observability/src/main/java/com/lingniu/ingest/observability/IngestMetrics.java @@ -0,0 +1,84 @@ +package com.lingniu.ingest.observability; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.pipeline.IngestContext; +import com.lingniu.ingest.api.pipeline.IngestInterceptor; +import com.lingniu.ingest.api.pipeline.RawFrame; +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.Tags; +import io.micrometer.core.instrument.Timer; +import org.springframework.core.Ordered; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * 指标拦截器:自动以 {@link IngestInterceptor} 形式接入拦截链,无侵入采集核心流量指标。 + * + *

暴露指标: + *

    + *
  • {@code ingest_frames_total{protocol}} - 入站帧计数 + *
  • {@code ingest_events_total{protocol,type}} - 事件产出计数 + *
  • {@code ingest_errors_total{protocol}} - 异常计数 + *
  • {@code ingest_frame_duration_seconds{protocol}} - 单帧处理耗时 + *
+ */ +public class IngestMetrics implements IngestInterceptor, Ordered { + + private static final String ATTR_TIMER_SAMPLE = "metrics.timer.sample"; + + private final MeterRegistry registry; + private final ConcurrentMap frameCounters = new ConcurrentHashMap<>(); + private final ConcurrentMap errorCounters = new ConcurrentHashMap<>(); + private final ConcurrentMap frameTimers = new ConcurrentHashMap<>(); + private final ConcurrentMap eventCounters = new ConcurrentHashMap<>(); + + public IngestMetrics(MeterRegistry registry) { + this.registry = registry; + } + + @Override + public boolean before(RawFrame frame, IngestContext ctx) { + ProtocolId p = frame.protocolId(); + frameCounters.computeIfAbsent(p, k -> + Counter.builder("ingest_frames_total").tag("protocol", k.name()).register(registry)).increment(); + Timer.Sample sample = Timer.start(registry); + ctx.attr(ATTR_TIMER_SAMPLE, sample); + return true; + } + + @Override + public void after(VehicleEvent event, IngestContext ctx) { + String key = event.source().name() + ":" + event.getClass().getSimpleName(); + eventCounters.computeIfAbsent(key, k -> { + String[] parts = k.split(":"); + return Counter.builder("ingest_events_total") + .tags(Tags.of("protocol", parts[0], "type", parts[1])) + .register(registry); + }).increment(); + + Timer.Sample s = ctx.attr(ATTR_TIMER_SAMPLE); + if (s != null) { + Timer t = frameTimers.computeIfAbsent(event.source(), p -> + Timer.builder("ingest_frame_duration_seconds").tag("protocol", p.name()).register(registry)); + s.stop(t); + ctx.attr(ATTR_TIMER_SAMPLE, null); + } + } + + @Override + public void onError(Throwable error, IngestContext ctx) { + // 无协议上下文时归到 UNKNOWN + Counter c = errorCounters.computeIfAbsent( + ProtocolId.GB32960, // 默认桶:由上层拦截器设置具体协议更精确 + p -> Counter.builder("ingest_errors_total").tag("protocol", "unknown").register(registry)); + c.increment(); + } + + @Override + public int getOrder() { + return 10; // 尽早介入,晚于 Tracing(order=0) + } +} diff --git a/observability/src/main/java/com/lingniu/ingest/observability/ObservabilityAutoConfiguration.java b/observability/src/main/java/com/lingniu/ingest/observability/ObservabilityAutoConfiguration.java new file mode 100644 index 00000000..a6a5f63f --- /dev/null +++ b/observability/src/main/java/com/lingniu/ingest/observability/ObservabilityAutoConfiguration.java @@ -0,0 +1,18 @@ +package com.lingniu.ingest.observability; + +import io.micrometer.core.instrument.MeterRegistry; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; + +@AutoConfiguration +@ConditionalOnBean(MeterRegistry.class) +public class ObservabilityAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public IngestMetrics ingestMetrics(MeterRegistry registry) { + return new IngestMetrics(registry); + } +} diff --git a/observability/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/observability/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..b3367068 --- /dev/null +++ b/observability/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.observability.ObservabilityAutoConfiguration diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..e9462c4a --- /dev/null +++ b/pom.xml @@ -0,0 +1,296 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + pom + + lingniu-vehicle-ingest + + 羚牛车辆数据接入平台 v2。 + 模块化原子能力 + 协议解耦 + 业务/实时解耦 + 数据出 Kafka 不落业务库。 + Java 25 + Spring Boot 3.4 + Netty + Disruptor + Virtual Threads。 + + + + ingest-api + ingest-codec-common + ingest-core + session-core + observability + sink-mq + sink-archive + protocol-gb32960 + protocol-jt808 + protocol-jt1078 + protocol-jsatl12 + inbound-mqtt + inbound-xinda-push + command-gateway + bootstrap-all + + + + UTF-8 + UTF-8 + 25 + 25 + 25 + 25 + + 3.5.3 + 4.2.9.Final + 4.0.0 + 4.28.3 + 3.8.1 + 3.1.8 + 2.2.0 + 1.13.6 + 1.42.1 + 1.3.3 + 1.18.34 + 5.11.3 + 3.26.3 + 5.14.2 + 1.3.0 + 1.20.3 + + + + + + + + io.netty + netty-bom + ${netty.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + io.github.resilience4j + resilience4j-bom + ${resilience4j.version} + pom + import + + + io.micrometer + micrometer-bom + ${micrometer.version} + pom + import + + + io.opentelemetry + opentelemetry-bom + ${otel.version} + pom + import + + + org.junit + junit-bom + ${junit.version} + pom + import + + + org.testcontainers + testcontainers-bom + ${testcontainers.version} + pom + import + + + + + com.lingniu.ingest + ingest-api + ${project.version} + + + com.lingniu.ingest + ingest-core + ${project.version} + + + com.lingniu.ingest + ingest-codec-common + ${project.version} + + + com.lingniu.ingest + session-core + ${project.version} + + + com.lingniu.ingest + observability + ${project.version} + + + com.lingniu.ingest + sink-mq + ${project.version} + + + com.lingniu.ingest + sink-archive + ${project.version} + + + com.lingniu.ingest + protocol-gb32960 + ${project.version} + + + com.lingniu.ingest + protocol-jt808 + ${project.version} + + + com.lingniu.ingest + protocol-jt1078 + ${project.version} + + + com.lingniu.ingest + protocol-jsatl12 + ${project.version} + + + com.lingniu.ingest + inbound-mqtt + ${project.version} + + + com.lingniu.ingest + inbound-xinda-push + ${project.version} + + + com.lingniu.ingest + command-gateway + ${project.version} + + + + + com.lmax + disruptor + ${disruptor.version} + + + com.google.protobuf + protobuf-java + ${protobuf.version} + + + com.google.protobuf + protobuf-java-util + ${protobuf.version} + + + org.apache.kafka + kafka-clients + ${kafka.version} + + + com.hivemq + hivemq-mqtt-client + ${hivemq-mqtt.version} + + + com.github.ben-manes.caffeine + caffeine + ${caffeine.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + org.assertj + assertj-core + ${assertj.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + com.tngtech.archunit + archunit-junit5 + ${archunit.version} + test + + + + + + + + lingniu-nexus + Lingniu Private Maven Repository + https://nexus.lnh2e.com/repository/maven-public/ + + true + + + true + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + ${java.version} + true + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + + diff --git a/protocol-gb32960/pom.xml b/protocol-gb32960/pom.xml new file mode 100644 index 00000000..b7f03abe --- /dev/null +++ b/protocol-gb32960/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + protocol-gb32960 + protocol-gb32960 + GB/T 32960 新能源车国标协议接入(Netty Server,默认 TCP 9000)。 + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + ingest-core + + + com.lingniu.ingest + ingest-codec-common + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-configuration-processor + true + + + io.netty + netty-all + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/auth/Gb32960PlatformAuthorizer.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/auth/Gb32960PlatformAuthorizer.java new file mode 100644 index 00000000..4e52142d --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/auth/Gb32960PlatformAuthorizer.java @@ -0,0 +1,94 @@ +package com.lingniu.ingest.protocol.gb32960.auth; + +import com.lingniu.ingest.protocol.gb32960.config.Gb32960Properties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** + * 平台登入(0x05)账号白名单校验器。 + * + *

与 {@link Gb32960VinAuthorizer} 区别: + *

    + *
  • 车辆登入靠 VIN 白名单(无密码) + *
  • 平台登入有 12B 用户名 + 20B 密码 + 可选 IP 白名单 + *
+ * + *

匹配规则: + *

    + *
  1. 配置列表为空 → 返回 {@link Result#ALLOW_NO_POLICY}(兼容老行为,放行但标记未鉴权) + *
  2. 用户名不存在 → {@link Result#DENY_UNKNOWN_USER} + *
  3. 密码不匹配 → {@link Result#DENY_BAD_PASSWORD} + *
  4. IP 白名单非空且 peer IP 不在其中 → {@link Result#DENY_IP_NOT_ALLOWED} + *
  5. 全部通过 → {@link Result#ALLOW} + *
+ */ +public final class Gb32960PlatformAuthorizer { + + private static final Logger log = LoggerFactory.getLogger(Gb32960PlatformAuthorizer.class); + + private final Map byUsername; + + public Gb32960PlatformAuthorizer(List platforms) { + Map map = new HashMap<>(); + for (Gb32960Properties.Auth.Platform p : platforms) { + if (p.getUsername() == null || p.getUsername().isBlank()) continue; + map.put(p.getUsername().trim(), p); + } + this.byUsername = Collections.unmodifiableMap(map); + log.info("[gb32960] platform authorizer loaded {} platform(s)", this.byUsername.size()); + } + + /** + * 鉴权一次平台登入请求。 + * + * @param username 终端发来的用户名 + * @param password 终端发来的密码 + * @param peerIp 连接对端 IP(纯 IPv4/IPv6,不含端口) + */ + public Result authenticate(String username, String password, String peerIp) { + if (byUsername.isEmpty()) return Result.ALLOW_NO_POLICY; + Gb32960Properties.Auth.Platform entry = byUsername.get(username == null ? "" : username.trim()); + if (entry == null) return Result.DENY_UNKNOWN_USER; + if (!Objects.equals(entry.getPassword(), password)) return Result.DENY_BAD_PASSWORD; + Set allowed = entry.getAllowedIps() == null + ? Set.of() + : Set.copyOf(entry.getAllowedIps()); + if (!allowed.isEmpty() && peerIp != null && !allowed.contains(peerIp)) { + return Result.DENY_IP_NOT_ALLOWED; + } + return Result.ALLOW; + } + + public int size() { + return byUsername.size(); + } + + public boolean isEnforcing() { + return !byUsername.isEmpty(); + } + + /** 鉴权结果枚举,调用方根据结果选择应答标志和日志级别。 */ + public enum Result { + /** 匹配成功。 */ + ALLOW(true), + /** 配置列表为空,放行但标记未鉴权。 */ + ALLOW_NO_POLICY(true), + /** 用户名不存在。 */ + DENY_UNKNOWN_USER(false), + /** 密码错误。 */ + DENY_BAD_PASSWORD(false), + /** IP 白名单拒绝。 */ + DENY_IP_NOT_ALLOWED(false); + + private final boolean accepted; + Result(boolean accepted) { this.accepted = accepted; } + public boolean accepted() { return accepted; } + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/auth/Gb32960VinAuthorizer.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/auth/Gb32960VinAuthorizer.java new file mode 100644 index 00000000..9a3d777e --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/auth/Gb32960VinAuthorizer.java @@ -0,0 +1,63 @@ +package com.lingniu.ingest.protocol.gb32960.auth; + +import com.lingniu.ingest.protocol.gb32960.config.Gb32960Properties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Collections; +import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; + +/** + * GB/T 32960 VIN 白名单校验器。 + * + *

线程安全:内部持有 {@code AtomicReference},支持运行时热替换白名单 + * (未来可扩展为从 Nacos / 数据库定时刷新)。 + */ +public final class Gb32960VinAuthorizer { + + private static final Logger log = LoggerFactory.getLogger(Gb32960VinAuthorizer.class); + + private final boolean enabled; + private final boolean caseSensitive; + private final AtomicReference> whitelist; + + public Gb32960VinAuthorizer(Gb32960Properties.Auth cfg) { + this.enabled = cfg.isEnabled(); + this.caseSensitive = cfg.isCaseSensitive(); + this.whitelist = new AtomicReference<>(cfg.normalizedWhitelist()); + log.info("[gb32960] VIN authorizer enabled={} caseSensitive={} whitelistSize={}", + enabled, caseSensitive, this.whitelist.get().size()); + } + + /** + * 鉴权。 + * + * @return true 通过;false 拒绝(调用方应发送 0x04 VIN_NOT_EXIST 应答并关闭连接) + */ + public boolean isAllowed(String vin) { + if (!enabled) return true; + if (vin == null || vin.isBlank()) return false; + String key = caseSensitive ? vin.trim() : vin.trim().toUpperCase(); + return whitelist.get().contains(key); + } + + public boolean isEnforcing() { + return enabled; + } + + public int whitelistSize() { + return whitelist.get().size(); + } + + /** 运行时热更新。接入 Nacos/DB 监听后调用。 */ + public void replaceWhitelist(Set newVins) { + Set norm = Collections.newSetFromMap(new java.util.concurrent.ConcurrentHashMap<>(newVins.size())); + for (String v : newVins) { + if (v == null || v.isBlank()) continue; + norm.add(caseSensitive ? v.trim() : v.trim().toUpperCase()); + } + this.whitelist.set(norm); + log.info("[gb32960] VIN whitelist replaced size={}", norm.size()); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960BodyParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960BodyParser.java new file mode 100644 index 00000000..7dc69a62 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960BodyParser.java @@ -0,0 +1,150 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import com.lingniu.ingest.api.spi.DecodeException; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlockType; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 实时/补发上报数据单元循环解析器。 + * + *

数据单元布局(表 7):{@code timestamp(6B) | (typeFlag(1B) + infoBody)* | [0xFF 签名信息]}。 + * 其中时间戳由 {@link Gb32960MessageDecoder} 负责剥离,本 parser 只处理信息体循环。 + * + *

支持的信息类型标志(表 9): + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
20162025含义
0x010x01整车数据
0x020x02驱动电机数据
0x030x03燃料电池发动机及车载氢系统数据
0x040x04发动机数据
0x050x05车辆位置数据(2025 版增加坐标系字段)
0x06 极值0x06 报警 
0x07 报警0x07 动力蓄电池最小并联单元电压 
0x08 储能电压0x08 动力蓄电池温度 
0x09 储能温度 
0x30燃料电池电堆
0x31超级电容器
0x32超级电容器极值
0xFF签名数据开始标识(2025 版新增)
+ * + *

处理策略: + *

    + *
  • 遇到 {@code 0xFF}(2025 版签名起始标识):停止循环,剩余字节作为签名原始字节返回 + *
  • 遇到未注册的类型:作为单个 {@link InfoBlock.Raw} 包装剩余字节并终止循环,避免丢失整帧 + *
+ */ +public final class Gb32960BodyParser { + + private static final Logger log = LoggerFactory.getLogger(Gb32960BodyParser.class); + + /** 2025 版实时上报尾部签名标识(表 9)。 */ + private static final int SIGNATURE_MARKER = 0xFF; + + private final InfoBlockParserRegistry registry; + + public Gb32960BodyParser(InfoBlockParserRegistry registry) { + this.registry = registry; + } + + public Gb32960MessageDecoder.BodyParseResult parse(ProtocolVersion version, ByteBuffer body) { + List blocks = new ArrayList<>(8); + byte[] signature = null; + // 捕获 info-block 区间的起止位置,用于未知块出现时打 dump 帮助手动定位漂移点。 + // body 由 Gb32960MessageDecoder 通过 ByteBuffer.wrap(frame, bodyStart+6, dataLength-6) 构造, + // arrayOffset()=0,position() = bodyStart+6,limit() = bodyStart + dataLength。 + final int infoBlocksStart = body.position(); + final int infoBlocksEnd = body.limit(); + + while (body.hasRemaining()) { + int typeStartPos = body.position(); + int typeCode = body.get() & 0xFF; + + if (typeCode == SIGNATURE_MARKER && version == ProtocolVersion.V2025) { + // 剩余全部字节即为签名内容(表 8) + signature = new byte[body.remaining()]; + body.get(signature); + break; + } + + InfoBlockParser parser = registry.find(version, typeCode); + if (parser == null) { + // lenient:未知类型无法安全跳过,吞剩余字节作为 Raw 后终止。 + // 真实 typeCode 透传到 Raw 字段,便于在日志/JSON 里直接看到漂移落点。 + int remaining = body.remaining(); + byte[] rest = new byte[remaining]; + body.get(rest); + log.warn("[gb32960] unknown info block typeCode=0x{} version={} bodyPos={} parsedBlocks={} remaining={} preview={}", + Integer.toHexString(typeCode), version, typeStartPos, + blocks.size(), remaining, hexPreview(rest, 16)); + // 一次性把整段 info-block 区间的原始字节打出来,并在 typeStartPos 处插入标记, + // 帮助人工对比规范字段长度、定位是哪个早期块对齐错。 + if (body.hasArray()) { + log.warn("[gb32960] body dump (info-block region) infoBlocksStart={} infoBlocksEnd={} typeStartPos={} totalLen={} alreadyParsed={}\n{}", + infoBlocksStart, infoBlocksEnd, typeStartPos, + infoBlocksEnd - infoBlocksStart, blocks.size(), + hexDumpWithMarker(body.array(), infoBlocksStart, infoBlocksEnd, typeStartPos)); + } + blocks.add(new InfoBlock.Raw(typeCode, InfoBlockType.RAW, rest)); + break; + } + + int fixedLen = parser.fixedLength(); + int posBefore = body.position(); + if (fixedLen >= 0 && body.remaining() < fixedLen) { + throw new DecodeException( + "info block 0x" + Integer.toHexString(typeCode) + + " needs " + fixedLen + " bytes but got " + body.remaining()); + } + InfoBlock block = parser.parse(body); + int consumed = body.position() - posBefore; + if (fixedLen >= 0 && consumed != fixedLen) { + throw new DecodeException( + "parser " + parser.getClass().getSimpleName() + + " consumed " + consumed + + " bytes but declared " + fixedLen); + } + if (log.isDebugEnabled()) { + log.debug("[gb32960] block typeCode=0x{} parser={} pos {}→{} consumed={} declaredFixed={}", + Integer.toHexString(typeCode), parser.getClass().getSimpleName(), + typeStartPos, body.position(), consumed, fixedLen); + } + blocks.add(block); + } + + return new Gb32960MessageDecoder.BodyParseResult(blocks, signature); + } + + private static String hexPreview(byte[] bytes, int max) { + int n = Math.min(bytes.length, max); + StringBuilder sb = new StringBuilder(n * 2); + for (int i = 0; i < n; i++) sb.append(String.format("%02x", bytes[i])); + if (bytes.length > max) sb.append(".."); + return sb.toString(); + } + + /** + * 16 字节/行的 hex dump,遇到 typeStartPos 时在该字节后插入 {@code |<< + *
  • 0x01 车辆登入(表 6) + *
  • 0x04 车辆登出(表 28) + *
  • 0x05 平台登入(表 29) + *
  • 0x06 平台登出(表 30) + *
  • 0x07 心跳(空) + *
  • 0x08 终端校时(空) + *
  • 0x09 激活(表 B.3) + *
  • 0x0A 激活应答(表 B.4) + *
  • 0x0B 密钥交换(表 31) + * + * + *

    其它命令(查询/设置/控制/自定义)保留为 {@link CommandBody.RawCommand}。 + */ +public final class Gb32960CommandParser { + + private static final ZoneId ZONE_GMT8 = ZoneId.of("Asia/Shanghai"); + + public CommandBody parse(CommandType command, ByteBuffer buf) { + return switch (command) { + case VEHICLE_LOGIN -> parseVehicleLogin(buf); + case VEHICLE_LOGOUT -> parseVehicleLogout(buf); + case PLATFORM_LOGIN -> parsePlatformLogin(buf); + case PLATFORM_LOGOUT -> parsePlatformLogout(buf); + case HEARTBEAT -> new CommandBody.Heartbeat(); + case TIME_CALIBRATION -> new CommandBody.TimeCalibration(); + case ACTIVATION -> parseActivation(buf); + case ACTIVATION_RESPONSE -> parseActivationResponse(buf); + case KEY_EXCHANGE -> parseKeyExchange(buf); + case QUERY -> parseQueryParams(buf); + case SET_PARAMS -> parseSetParams(buf); + case TERMINAL_CONTROL -> parseTerminalControl(buf); + default -> captureRaw(command, buf); + }; + } + + /** 表 6:车辆登入。 */ + private CommandBody.VehicleLogin parseVehicleLogin(ByteBuffer buf) { + Instant time = readTime(buf); + int serialNo = buf.getShort() & 0xFFFF; + String iccid = readAscii(buf, 20); + // 2025 版新增:电池管理系统数 n + 各系统包数 + 编码列表 + int batterySystemCount = buf.hasRemaining() ? (buf.get() & 0xFF) : 0; + List packCounts = new ArrayList<>(); + int totalPacks = 0; + for (int i = 0; i < batterySystemCount && buf.hasRemaining(); i++) { + int c = buf.get() & 0xFF; + packCounts.add(c); + totalPacks += c; + } + List codes = new ArrayList<>(totalPacks); + for (int i = 0; i < totalPacks && buf.remaining() >= 24; i++) { + codes.add(readAscii(buf, 24)); + } + return new CommandBody.VehicleLogin(time, serialNo, iccid, batterySystemCount, packCounts, codes); + } + + private CommandBody.VehicleLogout parseVehicleLogout(ByteBuffer buf) { + return new CommandBody.VehicleLogout(readTime(buf), buf.getShort() & 0xFFFF); + } + + private CommandBody.PlatformLogin parsePlatformLogin(ByteBuffer buf) { + Instant time = readTime(buf); + int serial = buf.getShort() & 0xFFFF; + String user = readAscii(buf, 12); + String pwd = readAscii(buf, 20); + EncryptType enc = EncryptType.of(buf.get() & 0xFF); + return new CommandBody.PlatformLogin(time, serial, user, pwd, enc); + } + + private CommandBody.PlatformLogout parsePlatformLogout(ByteBuffer buf) { + return new CommandBody.PlatformLogout(readTime(buf), buf.getShort() & 0xFFFF); + } + + private CommandBody.Activation parseActivation(ByteBuffer buf) { + Instant time = readTime(buf); + String chipId = readAscii(buf, 16); + int keyLen = buf.getShort() & 0xFFFF; + byte[] pubKey = new byte[Math.min(keyLen, buf.remaining())]; + buf.get(pubKey); + String vin = readAscii(buf, 17); + byte[] signature = new byte[buf.remaining()]; + buf.get(signature); + return new CommandBody.Activation(time, chipId, pubKey, vin, signature); + } + + private CommandBody.ActivationResponse parseActivationResponse(ByteBuffer buf) { + return new CommandBody.ActivationResponse(buf.get() & 0xFF, buf.get() & 0xFF); + } + + private CommandBody.KeyExchange parseKeyExchange(ByteBuffer buf) { + EncryptType keyType = EncryptType.of(buf.get() & 0xFF); + int keyLen = buf.getShort() & 0xFFFF; + byte[] key = new byte[Math.min(keyLen, buf.remaining() - 12)]; + buf.get(key); + Instant activateAt = readTime(buf); + Instant expireAt = readTime(buf); + return new CommandBody.KeyExchange(keyType, key, activateAt, expireAt); + } + + private CommandBody.RawCommand captureRaw(CommandType command, ByteBuffer buf) { + byte[] bytes = new byte[buf.remaining()]; + buf.get(bytes); + return new CommandBody.RawCommand(command.code(), bytes); + } + + // ========================================================================= + // 表 B.5-B.13 下行命令 + // ========================================================================= + + /** + * 参数查询 0x80(表 B.5):{@code time(6) + count(1) + paramId(count)}。 + * 如果 count > 0,则是查询命令;如果 count == 0 可能是终端应答(表 B.6), + * 应答带参数项列表(表 B.7),paramValue 长度根据 paramId 查表 B.8 决定。 + */ + private CommandBody parseQueryParams(ByteBuffer buf) { + Instant time = readTime(buf); + int count = buf.get() & 0xFF; + + // 判定是查询命令还是应答:命令方向下 count 后紧跟 paramId 列表(每项 1 字节); + // 应答方向下 count 后是完整的 paramId + paramValue 列表(表 B.7)。 + // 通过剩余字节数判断:命令形态 remaining == count,应答形态 remaining > count + if (buf.remaining() == count) { + List ids = new ArrayList<>(count); + for (int i = 0; i < count; i++) ids.add(buf.get() & 0xFF); + return new CommandBody.QueryParams(time, ids); + } + // 作为应答处理 + Map params = readParamItems(buf, count); + return new CommandBody.QueryParamsResponse(time, params); + } + + /** 参数设置 0x81(表 B.9):{@code time(6) + count(1) + paramItems}。 */ + private CommandBody.SetParams parseSetParams(ByteBuffer buf) { + Instant time = readTime(buf); + int count = buf.get() & 0xFF; + Map params = readParamItems(buf, count); + return new CommandBody.SetParams(time, params); + } + + /** 读取 N 个参数项(表 B.7):{@code paramId(1) + paramValue(按表 B.8 解释)}。 */ + private Map readParamItems(ByteBuffer buf, int count) { + Map out = new HashMap<>(count); + for (int i = 0; i < count && buf.hasRemaining(); i++) { + int paramId = buf.get() & 0xFF; + int len = paramValueLength(paramId, buf); + if (len < 0 || len > buf.remaining()) { + // 长度未知或越界:吞剩余字节作为该参数值后终止 + byte[] rest = new byte[buf.remaining()]; + buf.get(rest); + out.put(paramId, rest); + break; + } + byte[] value = new byte[len]; + buf.get(value); + out.put(paramId, value); + } + return out; + } + + /** + * 按表 B.8 返回参数值长度。 + * + *

    对于变长参数(0x05 域名 / 0x0E 公共平台域名),前一个参数(0x04/0x0D)给出长度; + * 这里简化处理:变长参数使用 {@code buf.get() & 0xFF + 1} 预读 + 取值。 + */ + private int paramValueLength(int paramId, ByteBuffer buf) { + return switch (paramId) { + case 0x01 -> 2; // 本地存储时间周期 WORD + case 0x02 -> 1; // 正常信息上报时间周期 + case 0x03 -> 1; // 报警信息上报时间周期 + case 0x04 -> 1; // 平台域名长度 M + case 0x05 -> { + // 平台域名 M 字节,M 由前一个参数的值给出。 + // 安全起见这里一次吞掉剩余字节(实际场景参数 0x04 和 0x05 通常一起下发) + yield buf.remaining(); + } + case 0x06 -> 2; // 平台端口 WORD + case 0x07, 0x08 -> 5; // 硬件/固件版本 5 字节 + case 0x09 -> 1; // 心跳发送周期 + case 0x0A -> 2; // 终端应答超时时间 + case 0x0B -> 2; // 平台应答超时时间 + case 0x0C -> 1; // 登入失败后下次登入间隔 + case 0x0D -> 1; // 公共平台域名长度 N + case 0x0E -> buf.remaining(); // 公共平台域名 + case 0x0F -> 2; // 公共平台端口 + case 0x10 -> 1; // 是否抽样监测中 + default -> -1; // 未知参数:无法决定长度 + }; + } + + /** 车载终端控制 0x82(表 B.10)。 */ + private CommandBody.TerminalControl parseTerminalControl(ByteBuffer buf) { + Instant time = readTime(buf); + int cmdId = buf.get() & 0xFF; + CommandBody.ControlCommand commandId = CommandBody.ControlCommand.of(cmdId); + CommandBody.ControlPayload payload = switch (commandId) { + case REMOTE_UPGRADE -> parseRemoteUpgrade(buf); + case ALARM_COMMAND -> parseAlarmCommand(buf); + case SHUTDOWN, RESET, FACTORY_RESET, DISCONNECT, SAMPLING_LINK_ON -> new CommandBody.ControlPayload.None(); + case UNKNOWN -> captureRawPayload(buf); + }; + return new CommandBody.TerminalControl(time, commandId, payload); + } + + /** + * 表 B.12 远程升级参数。字段之间用半角分号 {@code ;} 分隔。 + * + *

    字段顺序:URL;apn;dialUser;dialPwd;serverAddress;serverPort;manufacturerCode;hwVer;fwVer;timeoutMin + */ + private CommandBody.ControlPayload.RemoteUpgrade parseRemoteUpgrade(ByteBuffer buf) { + byte[] all = new byte[buf.remaining()]; + buf.get(all); + String s = new String(all, Charset.forName("GBK")); + String[] parts = s.split(";", -1); + String url = parts.length > 0 ? parts[0] : ""; + String apn = parts.length > 1 ? parts[1] : ""; + String user = parts.length > 2 ? parts[2] : ""; + String pwd = parts.length > 3 ? parts[3] : ""; + byte[] addr = parts.length > 4 ? parts[4].getBytes(StandardCharsets.US_ASCII) : new byte[0]; + int port = parts.length > 5 ? parseIntSafe(parts[5]) : 0; + String manu = parts.length > 6 ? parts[6] : ""; + String hw = parts.length > 7 ? parts[7] : ""; + String fw = parts.length > 8 ? parts[8] : ""; + int timeoutMin = parts.length > 9 ? parseIntSafe(parts[9]) : 0; + return new CommandBody.ControlPayload.RemoteUpgrade( + apn, user, pwd, addr, port, manu, hw, fw, url, timeoutMin); + } + + /** 表 B.13 报警/预警命令。 */ + private CommandBody.ControlPayload.AlarmCommand parseAlarmCommand(ByteBuffer buf) { + int warningLevel = buf.hasRemaining() ? (buf.get() & 0xFF) : 0; + byte[] info = new byte[buf.remaining()]; + buf.get(info); + return new CommandBody.ControlPayload.AlarmCommand(warningLevel, info); + } + + private CommandBody.ControlPayload.RawPayload captureRawPayload(ByteBuffer buf) { + byte[] bytes = new byte[buf.remaining()]; + buf.get(bytes); + return new CommandBody.ControlPayload.RawPayload(bytes); + } + + private static int parseIntSafe(String s) { + try { return Integer.parseInt(s.trim()); } catch (Exception e) { return 0; } + } + + /** 表 5:时间定义 YY MM DD HH MM SS,GMT+8。 */ + private Instant readTime(ByteBuffer buf) { + if (buf.remaining() < 6) { + throw new DecodeException("time field requires 6 bytes, got " + buf.remaining()); + } + int year = 2000 + (buf.get() & 0xFF); + int month = buf.get() & 0xFF; + int day = buf.get() & 0xFF; + int hour = buf.get() & 0xFF; + int minute = buf.get() & 0xFF; + int second = buf.get() & 0xFF; + try { + return LocalDateTime.of(year, month, day, hour, minute, second).atZone(ZONE_GMT8).toInstant(); + } catch (Exception e) { + throw new DecodeException("invalid time: " + year + "-" + month + "-" + day + + " " + hour + ":" + minute + ":" + second, e); + } + } + + private String readAscii(ByteBuffer buf, int len) { + int safeLen = Math.min(len, buf.remaining()); + byte[] b = new byte[safeLen]; + buf.get(b); + return new String(b, StandardCharsets.US_ASCII).trim(); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FrameDecoder.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FrameDecoder.java new file mode 100644 index 00000000..3be0594f --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FrameDecoder.java @@ -0,0 +1,83 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufUtil; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +/** + * Netty 层的帧分帧器:从字节流里提取一条完整的 32960 帧。 + * + *

    支持两种起始符:{@code 0x23 0x23 (##)} 2016 版,{@code 0x24 0x24 ($$)} 2025 版。 + * 只负责拆包粘包,不做业务解析。具体字段解析交给 {@link Gb32960MessageDecoder}。 + * + *

    开启 DEBUG 日志可以看到每次读到的字节、每条产出的完整帧以及因长度/起始符不匹配被丢弃的字节数。 + */ +public class Gb32960FrameDecoder extends ByteToMessageDecoder { + + private static final Logger log = LoggerFactory.getLogger(Gb32960FrameDecoder.class); + + private static final int HEADER_LEN = 24; // 起始(2) + cmd(1) + rsp(1) + vin(17) + enc(1) + len(2) + private static final int MAX_FRAME = 8 * 1024; + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { + if (log.isDebugEnabled() && in.readableBytes() > 0) { + int peek = Math.min(in.readableBytes(), 64); + log.debug("[gb32960] frame-decoder rx bytes={} head={}", + in.readableBytes(), + ByteBufUtil.hexDump(in, in.readerIndex(), peek)); + } + while (in.readableBytes() >= HEADER_LEN) { + int startIdx = findStart(in); + if (startIdx < 0 || startIdx > in.writerIndex() - HEADER_LEN) { + int drop = Math.max(0, in.readableBytes() - 1); + if (drop > 0) { + log.debug("[gb32960] frame-decoder skip {} bytes (no start symbol)", drop); + in.skipBytes(drop); + } + return; + } + if (startIdx != in.readerIndex()) { + int drop = startIdx - in.readerIndex(); + log.debug("[gb32960] frame-decoder skip {} leading bytes before start", drop); + in.skipBytes(drop); + } + int dataLen = in.getUnsignedShort(in.readerIndex() + 22); + int frameLen = HEADER_LEN + dataLen + 1; + if (frameLen > MAX_FRAME) { + log.warn("[gb32960] frame-decoder oversized frame len={} peer={}, skip start", + frameLen, ctx.channel().remoteAddress()); + in.skipBytes(2); + continue; + } + if (in.readableBytes() < frameLen) return; + + byte[] frame = new byte[frameLen]; + in.readBytes(frame); + if (log.isDebugEnabled()) { + log.debug("[gb32960] frame-decoder emit len={} start={} peer={}", + frameLen, + String.format("%02x%02x", frame[0], frame[1]), + ctx.channel().remoteAddress()); + } + out.add(frame); + } + } + + /** 查找下一个合法起始位置:两字节连续 0x23 0x23 或 0x24 0x24。 */ + private static int findStart(ByteBuf in) { + int limit = in.writerIndex() - 1; + for (int i = in.readerIndex(); i < limit; i++) { + byte b = in.getByte(i); + if ((b == 0x23 || b == 0x24) && in.getByte(i + 1) == b) { + return i; + } + } + return -1; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FrameEncoder.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FrameEncoder.java new file mode 100644 index 00000000..81f1ce51 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FrameEncoder.java @@ -0,0 +1,111 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import com.lingniu.ingest.codec.BccChecksum; +import com.lingniu.ingest.protocol.gb32960.model.CommandType; +import com.lingniu.ingest.protocol.gb32960.model.EncryptType; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; +import com.lingniu.ingest.protocol.gb32960.model.ResponseFlag; + +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; + +/** + * GB/T 32960.3 下行帧编码器。主要用于应答场景:平台收到终端上行命令后发送应答。 + * + *

    应答规则(§6.3.2):服务端发送应答时,变更应答标志、保留报文时间、删除其余报文内容、 + * 重新计算校验位。 + */ +public final class Gb32960FrameEncoder { + + private static final ZoneId ZONE_GMT8 = ZoneId.of("Asia/Shanghai"); + + private Gb32960FrameEncoder() {} + + /** + * 构造简易应答帧:复用原命令的 command/vin/encryptType,修改应答标志, + * 可选携带数据单元(通常只带 6 字节采集时间)。 + * + * @param version 协议版本(决定起始符) + * @param command 命令标识(与原命令相同) + * @param responseFlag 应答标志:{@link ResponseFlag#SUCCESS}/{@link ResponseFlag#VIN_NOT_EXIST} 等 + * @param vin 17 字节 VIN + * @param collectTime 数据采集时间(保留原帧时间,若无则传 {@code Instant.now()}) + * @param extraBody 附加数据(可为 null) + */ + public static byte[] buildResponse(ProtocolVersion version, + CommandType command, + ResponseFlag responseFlag, + String vin, + Instant collectTime, + byte[] extraBody) { + return buildResponse(version, command, responseFlag, vinPadded(vin), collectTime, extraBody); + } + + /** + * 同 {@link #buildResponse(ProtocolVersion, CommandType, ResponseFlag, String, Instant, byte[])}, + * 但直接接收 17 字节原始 VIN。用于回执时原样回显请求帧的 VIN 字节,避免 + * 平台登入这类 VIN 全 0 的场景被我们用空格重写后导致对端判定 VIN 不匹配。 + */ + public static byte[] buildResponse(ProtocolVersion version, + CommandType command, + ResponseFlag responseFlag, + byte[] vin17, + Instant collectTime, + byte[] extraBody) { + ByteArrayOutputStream body = new ByteArrayOutputStream(); + // 数据采集时间 6 字节(表 5) + if (collectTime != null) { + LocalDateTime ldt = LocalDateTime.ofInstant(collectTime, ZONE_GMT8); + body.write(ldt.getYear() - 2000); + body.write(ldt.getMonthValue()); + body.write(ldt.getDayOfMonth()); + body.write(ldt.getHour()); + body.write(ldt.getMinute()); + body.write(ldt.getSecond()); + } + if (extraBody != null && extraBody.length > 0) { + body.write(extraBody, 0, extraBody.length); + } + + byte[] bodyBytes = body.toByteArray(); + int dataLength = bodyBytes.length; + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + // 起始符 + if (version == ProtocolVersion.V2025) { + out.write(0x24); out.write(0x24); + } else { + out.write(0x23); out.write(0x23); + } + out.write(command.code()); + out.write(responseFlag.code()); + // VIN(17 字节,由调用方给出;平台登入等场景直接回显请求的原始字节) + byte[] vinBytes = vin17 != null && vin17.length == 17 ? vin17 : vinPadded(null); + out.write(vinBytes, 0, 17); + // 加密方式:应答不加密 + out.write(EncryptType.UNENCRYPTED.code()); + // 数据单元长度 WORD 大端 + out.write((dataLength >> 8) & 0xFF); + out.write(dataLength & 0xFF); + out.write(bodyBytes, 0, bodyBytes.length); + // BCC:从 cmd(offset 2) 到数据单元结尾 + byte[] almost = out.toByteArray(); + byte bcc = BccChecksum.compute(almost, 2, almost.length - 2); + out.write(bcc & 0xFF); + return out.toByteArray(); + } + + private static byte[] vinPadded(String vin) { + byte[] out = new byte[17]; + // 填充空格 + java.util.Arrays.fill(out, (byte) ' '); + if (vin == null) return out; + byte[] src = vin.getBytes(StandardCharsets.US_ASCII); + int len = Math.min(src.length, 17); + System.arraycopy(src, 0, out, 0, len); + return out; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960MessageDecoder.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960MessageDecoder.java new file mode 100644 index 00000000..bf63672e --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960MessageDecoder.java @@ -0,0 +1,160 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import com.lingniu.ingest.api.spi.DecodeException; +import com.lingniu.ingest.api.spi.FrameDecoder; +import com.lingniu.ingest.codec.BccChecksum; +import com.lingniu.ingest.protocol.gb32960.model.CommandBody; +import com.lingniu.ingest.protocol.gb32960.model.CommandType; +import com.lingniu.ingest.protocol.gb32960.model.EncryptType; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Header; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Message; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; +import com.lingniu.ingest.protocol.gb32960.model.ResponseFlag; + +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Collections; +import java.util.List; + +/** + * 完整帧 → {@link Gb32960Message} 的解码器。 + * + *

    支持 GB/T 32960.3 两个版本: + *

      + *
    • {@code 0x23 0x23 (##)} → 2016 版({@link ProtocolVersion#V2016}) + *
    • {@code 0x24 0x24 ($$)} → 2025 版({@link ProtocolVersion#V2025}) + *
    + * + *

    完整数据包结构(表 2 / 表 B.1): + *

    + *   offset 0:  起始符 (2B)
    + *   offset 2:  命令标识 (1B)
    + *   offset 3:  应答标志 (1B)
    + *   offset 4:  唯一识别码 VIN (17B ASCII)
    + *   offset 21: 数据单元加密方式 (1B)
    + *   offset 22: 数据单元长度 (2B WORD 大端)
    + *   offset 24: 数据单元 (dataLength 字节)
    + *   last byte: 校验码 (1B BCC)
    + * 
    + * + *

    BCC 校验范围:从命令单元的第一个字节开始(offset 2),同后一字节异或, + * 直到校验码前一字节为止。注意:当数据单元存在加密时,应先加密后校验,解析时先校验后解密。 + * + *

    上游 Netty 的 frame handler 已经保证 {@code buffer} 内是一条完整帧。 + */ +public final class Gb32960MessageDecoder implements FrameDecoder { + + /** 最小帧长:2(起始符)+1(cmd)+1(rsp)+17(vin)+1(enc)+2(len)+0(body)+1(bcc)。 */ + private static final int MIN_FRAME = 25; + private static final ZoneId ZONE_GMT8 = ZoneId.of("Asia/Shanghai"); + + private final Gb32960BodyParser bodyParser; + private final Gb32960CommandParser commandParser; + + public Gb32960MessageDecoder(Gb32960BodyParser bodyParser) { + this(bodyParser, new Gb32960CommandParser()); + } + + public Gb32960MessageDecoder(Gb32960BodyParser bodyParser, Gb32960CommandParser commandParser) { + this.bodyParser = bodyParser; + this.commandParser = commandParser; + } + + @Override + public Gb32960Message decode(ByteBuffer buffer) { + int frameLen = buffer.remaining(); + if (frameLen < MIN_FRAME) { + throw new DecodeException("frame too short: " + frameLen); + } + + byte[] frame = new byte[frameLen]; + buffer.get(frame); + + ProtocolVersion version = detectVersion(frame); + + // BCC 校验:从 cmd(offset 2) 开始到 BCC 前一字节 + byte expectedBcc = frame[frame.length - 1]; + if (!BccChecksum.verify(frame, 2, frame.length - 3, expectedBcc)) { + throw new DecodeException("BCC mismatch"); + } + + int commandCode = frame[2] & 0xFF; + int responseCode = frame[3] & 0xFF; + String vin = new String(frame, 4, 17, StandardCharsets.US_ASCII).trim(); + int encryptCode = frame[21] & 0xFF; + int dataLength = ((frame[22] & 0xFF) << 8) | (frame[23] & 0xFF); + + int bodyStart = 24; + if (bodyStart + dataLength + 1 != frame.length) { + throw new DecodeException("declared body length " + dataLength + + " does not match frame remainder " + (frame.length - bodyStart - 1)); + } + + CommandType cmdType = CommandType.of(commandCode); + ResponseFlag rspFlag = ResponseFlag.of(responseCode); + EncryptType encType = EncryptType.of(encryptCode); + + // 实时 / 补发上报:解析信息体(和 2025 版尾部签名) + if (cmdType == CommandType.REALTIME_REPORT || cmdType == CommandType.RESEND_REPORT) { + if (dataLength < 6) throw new DecodeException("report body missing timestamp"); + Instant eventTime = parseTimestamp(frame, bodyStart); + ByteBuffer body = ByteBuffer.wrap(frame, bodyStart + 6, dataLength - 6); + BodyParseResult result = bodyParser.parse(version, body); + Gb32960Header header = new Gb32960Header( + version, cmdType, rspFlag, vin, encType, dataLength, eventTime); + return new Gb32960Message(header, result.blocks(), null, result.signature()); + } + + // 其他命令:解析 command body + // 车辆/平台登入登出 body 首 6B 为采集时间(表 5),预解析并写入 header.eventTime, + // 以便 handler 构造应答帧时按 §6.3.2 保留原报文时间。 + Instant eventTime = null; + if (hasLeadingTimestamp(cmdType) && dataLength >= 6) { + eventTime = parseTimestamp(frame, bodyStart); + } + Gb32960Header headerStub = new Gb32960Header( + version, cmdType, rspFlag, vin, encType, dataLength, eventTime); + ByteBuffer body = ByteBuffer.wrap(frame, bodyStart, dataLength); + CommandBody cmdBody = commandParser.parse(cmdType, body); + return new Gb32960Message(headerStub, Collections.emptyList(), cmdBody, null); + } + + private static ProtocolVersion detectVersion(byte[] frame) { + if (frame[0] == 0x23 && frame[1] == 0x23) return ProtocolVersion.V2016; + if (frame[0] == 0x24 && frame[1] == 0x24) return ProtocolVersion.V2025; + throw new DecodeException("unknown start symbol: " + + String.format("%02x %02x", frame[0] & 0xFF, frame[1] & 0xFF)); + } + + private static boolean hasLeadingTimestamp(CommandType cmd) { + return cmd == CommandType.VEHICLE_LOGIN + || cmd == CommandType.VEHICLE_LOGOUT + || cmd == CommandType.PLATFORM_LOGIN + || cmd == CommandType.PLATFORM_LOGOUT; + } + + /** 时间定义(表 5):YY MM DD HH MM SS,各 1 字节,GMT+8。 */ + private static Instant parseTimestamp(byte[] frame, int offset) { + int year = 2000 + (frame[offset] & 0xFF); + int month = frame[offset + 1] & 0xFF; + int day = frame[offset + 2] & 0xFF; + int hour = frame[offset + 3] & 0xFF; + int minute = frame[offset + 4] & 0xFF; + int second = frame[offset + 5] & 0xFF; + try { + return LocalDateTime.of(year, month, day, hour, minute, second) + .atZone(ZONE_GMT8) + .toInstant(); + } catch (Exception e) { + throw new DecodeException("invalid timestamp " + year + "-" + month + "-" + day + + " " + hour + ":" + minute + ":" + second, e); + } + } + + /** 实时上报 body 解析结果:信息体列表 + 可选签名字节。 */ + public record BodyParseResult(List blocks, byte[] signature) {} +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/InfoBlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/InfoBlockParser.java new file mode 100644 index 00000000..e8bc5790 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/InfoBlockParser.java @@ -0,0 +1,34 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 单一信息体解析器 SPI。 + * + *

    替代旧代码里 2500 行 {@code informationReporting()} 巨方法。每个 + * {@code (ProtocolVersion, typeCode)} 组合对应一个独立实现。同一个协议 typeCode + * 在 2016 / 2025 可能语义不同(如 0x07),因此需要两个 Parser 分别声明 version。 + * + *

    实现约定: + *

      + *
    • {@link #parse(ByteBuffer)} 被调用时 buffer 的 position 已指向信息体第一个字节(不含 1 字节类型前缀) + *
    • 解析完成后 position 应恰好移动到信息体末尾 + *
    • 实现应无状态,可被单例复用 + *
    + */ +public interface InfoBlockParser { + + /** 本 Parser 适用的协议版本({@link ProtocolVersion#V2016} 或 {@link ProtocolVersion#V2025})。 */ + ProtocolVersion version(); + + /** 本 Parser 对应的协议信息类型标志字节(表 9)。 */ + int typeCode(); + + /** 信息体固定长度;变长类型返回 -1 并自行在 parse 中读取长度字段。 */ + int fixedLength(); + + InfoBlock parse(ByteBuffer buffer); +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/InfoBlockParserRegistry.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/InfoBlockParserRegistry.java new file mode 100644 index 00000000..ad9a1718 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/InfoBlockParserRegistry.java @@ -0,0 +1,34 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 双键策略注册中心:按 {@code (ProtocolVersion, typeCode)} 索引解析器。 + * + *

    同一 typeCode 在 2016 / 2025 版本可能语义不同(如 0x07 在 2016 是报警,在 2025 是 + * 动力蓄电池最小并联单元电压),必须按版本分派。 + */ +public final class InfoBlockParserRegistry { + + private final Map parsers = new HashMap<>(); + + public InfoBlockParserRegistry(List list) { + for (InfoBlockParser p : list) { + parsers.put(new Key(p.version(), p.typeCode()), p); + } + } + + public InfoBlockParser find(ProtocolVersion version, int typeCode) { + return parsers.get(new Key(version, typeCode)); + } + + public int size() { + return parsers.size(); + } + + private record Key(ProtocolVersion version, int typeCode) {} +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/ValueDecoder.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/ValueDecoder.java new file mode 100644 index 00000000..fc4f22e6 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/ValueDecoder.java @@ -0,0 +1,80 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import java.nio.ByteBuffer; + +/** + * 规范异常值处理辅助:GB/T 32960.3 约定 {@code 0xFE}/{@code 0xFFFE}/{@code 0xFFFFFFFE} 为异常, + * {@code 0xFF}/{@code 0xFFFF}/{@code 0xFFFFFFFF} 为无效。本类把字段读取 + 异常检查封装起来, + * 异常或无效时返回 {@code null},让 record 字段保持 {@link Integer}/{@link Double} 装箱类型。 + */ +public final class ValueDecoder { + + private ValueDecoder() {} + + // ------------ 1 字节无符号 ------------ + + public static Integer u8(ByteBuffer buf) { + int v = buf.get() & 0xFF; + if (v == 0xFE || v == 0xFF) return null; + return v; + } + + /** 原始值,不做异常处理(状态位等不能以 null 表达时用此方法)。 */ + public static int u8raw(ByteBuffer buf) { + return buf.get() & 0xFF; + } + + // ------------ 2 字节无符号大端 ------------ + + public static Integer u16(ByteBuffer buf) { + int v = buf.getShort() & 0xFFFF; + if (v == 0xFFFE || v == 0xFFFF) return null; + return v; + } + + public static int u16raw(ByteBuffer buf) { + return buf.getShort() & 0xFFFF; + } + + // ------------ 4 字节无符号大端 ------------ + + public static Long u32(ByteBuffer buf) { + long v = buf.getInt() & 0xFFFFFFFFL; + if (v == 0xFFFFFFFEL || v == 0xFFFFFFFFL) return null; + return v; + } + + public static long u32raw(ByteBuffer buf) { + return buf.getInt() & 0xFFFFFFFFL; + } + + // ------------ 业务标度辅助 ------------ + + /** 读 u16,scale 后返回(例如 0.1 转换)。异常/无效返回 null。 */ + public static Double scaledU16(ByteBuffer buf, double scale) { + Integer raw = u16(buf); + return raw == null ? null : raw * scale; + } + + /** 读 u16 + 偏移 + scale。例:读总电流 -> scaledU16WithOffset(buf, 0.1, -1000) */ + public static Double scaledU16WithOffset(ByteBuffer buf, double scale, double offset) { + Integer raw = u16(buf); + return raw == null ? null : raw * scale + offset; + } + + public static Double scaledU32(ByteBuffer buf, double scale) { + Long raw = u32(buf); + return raw == null ? null : raw * scale; + } + + public static Double scaledU32WithOffset(ByteBuffer buf, double scale, double offset) { + Long raw = u32(buf); + return raw == null ? null : raw * scale + offset; + } + + /** 温度字段:原始值 - 40 ℃,范围 -40~+210。 */ + public static Integer tempOffset40(ByteBuffer buf) { + Integer raw = u8(buf); + return raw == null ? null : raw - 40; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/AlarmV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/AlarmV2016BlockParser.java new file mode 100644 index 00000000..ca64e866 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/AlarmV2016BlockParser.java @@ -0,0 +1,45 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 报警数据 (0x07) —— GB/T 32960.3-2016 附录 B 表 B.17。变长。 + * maxAlarmLevel(1) + generalAlarmFlag(4) + 4 组故障列表(count(1)+entries(4*N))。 + * + *

    2025 版报警数据 typeCode 改为 0x06 且尾部多 N5 个 (flagBit,level) —— 见 v2025 包。 + */ +public final class AlarmV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x07; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Integer maxLevel = ValueDecoder.u8(buf); + long generalFlag = ValueDecoder.u32raw(buf); + List battery = readFaultList(buf); + List motor = readFaultList(buf); + List engine = readFaultList(buf); + List other = readFaultList(buf); + return new InfoBlock.Alarm( + ProtocolVersion.V2016, maxLevel, generalFlag, + battery, motor, engine, other, null); + } + + static List readFaultList(ByteBuffer buf) { + int count = buf.get() & 0xFF; + List out = new ArrayList<>(count); + for (int i = 0; i < count; i++) { + out.add(buf.getInt() & 0xFFFFFFFFL); + } + return out; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/DriveMotorV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/DriveMotorV2016BlockParser.java new file mode 100644 index 00000000..ffb8eab1 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/DriveMotorV2016BlockParser.java @@ -0,0 +1,45 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 驱动电机数据 (0x02) —— GB/T 32960.3-2016 表 B.16。变长。 + * 1 字节电机个数 + N × 12 字节电机: + * serialNo(1) state(1) ctrlTempC(1) rpm(2,offset -20000) + * torque(2,offset -20000,0.1 N·m) motorTempC(1) + * ctrlVoltageV(2,0.1V) ctrlCurrentA(2,0.1A,offset -1000)。 + */ +public final class DriveMotorV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x02; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int count = buf.get() & 0xFF; + List motors = new ArrayList<>(count); + for (int i = 0; i < count; i++) { + Integer serialNo = ValueDecoder.u8(buf); + Integer state = ValueDecoder.u8(buf); + Integer ctrlTempC = ValueDecoder.tempOffset40(buf); + Integer rawRpm = ValueDecoder.u16(buf); + Integer rpm = rawRpm == null ? null : rawRpm - 20_000; + Integer rawTq = ValueDecoder.u16(buf); + Double torque = rawTq == null ? null : (rawTq - 20_000) * 0.1; + Integer motorTempC = ValueDecoder.tempOffset40(buf); + Double ctrlVoltage = ValueDecoder.scaledU16(buf, 0.1); + Double ctrlCurrent = ValueDecoder.scaledU16WithOffset(buf, 0.1, -1000.0); + motors.add(new InfoBlock.DriveMotor.Motor( + serialNo, state, ctrlTempC, rpm, torque, motorTempC, ctrlVoltage, ctrlCurrent)); + } + return new InfoBlock.DriveMotor(motors); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/EngineV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/EngineV2016BlockParser.java new file mode 100644 index 00000000..6f453b5f --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/EngineV2016BlockParser.java @@ -0,0 +1,28 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 发动机数据 (0x04) —— GB/T 32960.3-2016 表 20。固定 5 字节: + * engineState(1) + crankshaftRpm(2) + fuelConsumptionRate(2,0.01 L/100km)。 + * 停车充电过程和增程式车辆纯电模式无需传输。 + */ +public final class EngineV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x04; } + @Override public int fixedLength() { return 5; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Integer engineState = ValueDecoder.u8(buf); + Integer crankshaftRpm = ValueDecoder.u16(buf); + Double fuelRate = ValueDecoder.scaledU16(buf, 0.01); + return new InfoBlock.Engine(engineState, crankshaftRpm, fuelRate); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/ExtremeValueV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/ExtremeValueV2016BlockParser.java new file mode 100644 index 00000000..f7a92f6b --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/ExtremeValueV2016BlockParser.java @@ -0,0 +1,40 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 动力蓄电池极值数据 (0x06) —— GB/T 32960.3-2016 表 B.16。固定 14 字节。 + * 2025 版 0x06 语义已变更为报警数据。 + */ +public final class ExtremeValueV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x06; } + @Override public int fixedLength() { return 14; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Integer maxVSub = ValueDecoder.u8(buf); + Integer maxVCell = ValueDecoder.u8(buf); + Double maxV = ValueDecoder.scaledU16(buf, 0.001); + Integer minVSub = ValueDecoder.u8(buf); + Integer minVCell = ValueDecoder.u8(buf); + Double minV = ValueDecoder.scaledU16(buf, 0.001); + Integer maxTSub = ValueDecoder.u8(buf); + Integer maxTProbe = ValueDecoder.u8(buf); + Integer maxT = ValueDecoder.tempOffset40(buf); + Integer minTSub = ValueDecoder.u8(buf); + Integer minTProbe = ValueDecoder.u8(buf); + Integer minT = ValueDecoder.tempOffset40(buf); + return new InfoBlock.Extreme( + maxVSub, maxVCell, maxV, + minVSub, minVCell, minV, + maxTSub, maxTProbe, maxT, + minTSub, minTProbe, minT); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/FuelCellV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/FuelCellV2016BlockParser.java new file mode 100644 index 00000000..74bbdf2c --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/FuelCellV2016BlockParser.java @@ -0,0 +1,54 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 燃料电池数据 (0x03) —— GB/T 32960.3-2016 表 B.13。变长。 + * fcVoltageV(2) + fcCurrentA(2) + hydrogenConsumption(2,0.01 kg/100km) + * + probeCount N(2) + probes[N](1B,-40 offset) + 后续氢系统 10 字节固定段。 + */ +public final class FuelCellV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x03; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Double fcVoltage = ValueDecoder.scaledU16(buf, 0.1); + Double fcCurrent = ValueDecoder.scaledU16(buf, 0.1); + Double consumption = ValueDecoder.scaledU16(buf, 0.01); + int probeCount = ValueDecoder.u16raw(buf); + + // 防御:probeCount 异常时回退为空列表避免吞 buffer + List probes = new ArrayList<>(); + int tailFixed = 2 + 1 + 2 + 1 + 2 + 1 + 1; // 尾部固定 10 字节 + if (probeCount >= 0 && probeCount <= buf.remaining() - tailFixed) { + for (int i = 0; i < probeCount; i++) { + Integer t = ValueDecoder.tempOffset40(buf); + if (t != null) probes.add(t); + } + } + Double maxHydrogenTempC = ValueDecoder.scaledU16WithOffset(buf, 0.1, -40.0); + Integer maxHydrogenTempProbeId = ValueDecoder.u8(buf); + Double maxHydrogenConcentration = ValueDecoder.scaledU16(buf, 0.000001); + Integer maxHydrogenConcentrationProbeId = ValueDecoder.u8(buf); + Double maxHydrogenPressure = ValueDecoder.scaledU16(buf, 0.1); + Integer maxHydrogenPressureProbeId = ValueDecoder.u8(buf); + Integer hvDcDcStatus = ValueDecoder.u8(buf); + + return new InfoBlock.FuelCellV2016( + fcVoltage, fcCurrent, consumption, probes, + maxHydrogenTempC, maxHydrogenTempProbeId, + maxHydrogenConcentration, maxHydrogenConcentrationProbeId, + maxHydrogenPressure, maxHydrogenPressureProbeId, + hvDcDcStatus); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/PositionV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/PositionV2016BlockParser.java new file mode 100644 index 00000000..b0228618 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/PositionV2016BlockParser.java @@ -0,0 +1,32 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 车辆位置数据 (0x05) —— GB/T 32960.3-2016 表 22。固定 9 字节: + * 状态位(1) + 经度(4,1e-6 度) + 纬度(4,1e-6 度)。 + * + *

    状态位 bit0 0=有效定位 / bit1 0=北纬 1=南纬 / bit2 0=东经 1=西经。 + */ +public final class PositionV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x05; } + @Override public int fixedLength() { return 9; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int statusFlag = buf.get() & 0xFF; + long lonRaw = buf.getInt() & 0xFFFFFFFFL; + long latRaw = buf.getInt() & 0xFFFFFFFFL; + double longitude = lonRaw / 1_000_000.0; + double latitude = latRaw / 1_000_000.0; + if ((statusFlag & 0b100) != 0) longitude = -longitude; + if ((statusFlag & 0b010) != 0) latitude = -latitude; + return new InfoBlock.Position(statusFlag, null, longitude, latitude); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/TemperatureV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/TemperatureV2016BlockParser.java new file mode 100644 index 00000000..4a8d742a --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/TemperatureV2016BlockParser.java @@ -0,0 +1,39 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 可充电储能装置温度数据 (0x09) —— GB/T 32960.3-2016 表 B.20。变长。 + * subSystemCount(1) + 每子系统 [batteryIndex(1) + probeCount(2) + probes(probeCount*1,-40 offset)]。 + * + *

    2025 版已删除该 typeCode(动力蓄电池温度改用 0x08)。 + */ +public final class TemperatureV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x09; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int subCount = buf.get() & 0xFF; + int maxT = Integer.MIN_VALUE; + int minT = Integer.MAX_VALUE; + for (int i = 0; i < subCount; i++) { + buf.get(); // batteryIndex + int probes = buf.getShort() & 0xFFFF; + for (int p = 0; p < probes; p++) { + int t = (buf.get() & 0xFF) - 40; + if (t > maxT) maxT = t; + if (t < minT) minT = t; + } + } + if (maxT == Integer.MIN_VALUE) maxT = 0; + if (minT == Integer.MAX_VALUE) minT = 0; + return new InfoBlock.Temperature(subCount, maxT, minT); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/VehicleV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/VehicleV2016BlockParser.java new file mode 100644 index 00000000..941c0140 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/VehicleV2016BlockParser.java @@ -0,0 +1,42 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 整车数据 (0x01) —— GB/T 32960.3-2016 表 B.10。固定 20 字节: + * vehicleState(1) + chargingState(1) + runningMode(1) + speedKmh(2) + * + totalMileageKm(4) + totalVoltageV(2) + totalCurrentA(2) + * + socPercent(1) + dcDcStatus(1) + gearRaw(1) + insulationKohm(2) + * + accelPedal(1) + brakePedal(1)。 + */ +public final class VehicleV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x01; } + @Override public int fixedLength() { return 20; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Integer vehicleState = ValueDecoder.u8(buf); + Integer chargingState = ValueDecoder.u8(buf); + Integer runningMode = ValueDecoder.u8(buf); + Double speedKmh = ValueDecoder.scaledU16(buf, 0.1); + Double mileageKm = ValueDecoder.scaledU32(buf, 0.1); + Double totalVoltageV = ValueDecoder.scaledU16(buf, 0.1); + Double totalCurrentA = ValueDecoder.scaledU16WithOffset(buf, 0.1, -1000.0); + Integer soc = ValueDecoder.u8(buf); + Integer dcDcStatus = ValueDecoder.u8(buf); + Integer gearRaw = ValueDecoder.u8raw(buf); + Integer insulation = ValueDecoder.u16(buf); + Integer accelPedal = ValueDecoder.u8(buf); + Integer brakePedal = ValueDecoder.u8(buf); + return new InfoBlock.Vehicle(vehicleState, chargingState, runningMode, speedKmh, mileageKm, + totalVoltageV, totalCurrentA, soc, dcDcStatus, gearRaw, insulation, + accelPedal, brakePedal); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/VoltageV2016BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/VoltageV2016BlockParser.java new file mode 100644 index 00000000..33733088 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2016/VoltageV2016BlockParser.java @@ -0,0 +1,49 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2016; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 可充电储能装置电压数据 (0x08) —— GB/T 32960.3-2016 表 B.18。变长。 + * subSystemCount(1) + 每子系统 [batteryIndex(1) + voltage(2,0.1V) + current(2,0.1A,offset -1000) + * + cellCount(2) + frameCellStart(2) + frameCellCount(1) + cellVoltages(frameCellCount*2,0.001V)]。 + * + *

    PoC 汇总:保留子系统数 + 总电压 + 单体最高/最低值。 + * 2025 版 0x08 语义已变更为动力蓄电池温度。 + */ +public final class VoltageV2016BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2016; } + @Override public int typeCode() { return 0x08; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int subCount = buf.get() & 0xFF; + double totalV = 0; + double maxCell = Double.MIN_VALUE; + double minCell = Double.MAX_VALUE; + for (int i = 0; i < subCount; i++) { + buf.get(); // batteryIndex + double voltage = (buf.getShort() & 0xFFFF) * 0.1; + totalV += voltage; + buf.getShort(); // current (skip) + int cellCount = buf.getShort() & 0xFFFF; + buf.getShort(); // frameCellStart + int frameCellCount = buf.get() & 0xFF; + int actual = Math.min(frameCellCount, cellCount); + for (int c = 0; c < actual; c++) { + double cellV = (buf.getShort() & 0xFFFF) * 0.001; + if (cellV > maxCell) maxCell = cellV; + if (cellV < minCell) minCell = cellV; + } + for (int c = actual; c < frameCellCount; c++) buf.getShort(); + } + if (maxCell == Double.MIN_VALUE) maxCell = 0; + if (minCell == Double.MAX_VALUE) minCell = 0; + return new InfoBlock.Voltage(subCount, maxCell, minCell, totalV); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/AlarmV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/AlarmV2025BlockParser.java new file mode 100644 index 00000000..6fce0e27 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/AlarmV2025BlockParser.java @@ -0,0 +1,52 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 报警数据 (0x06) —— GB/T 32960.3-2025 §7.2.4.9 表 23。变长。 + * 前半部分与 2016 版相同,尾部新增"通用报警故障总数(1) + N5×(flagBit(1)+level(1))"。 + */ +public final class AlarmV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x06; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Integer maxLevel = ValueDecoder.u8(buf); + long generalFlag = ValueDecoder.u32raw(buf); + List battery = readFaultList(buf); + List motor = readFaultList(buf); + List engine = readFaultList(buf); + List other = readFaultList(buf); + + int generalAlarmCount = buf.hasRemaining() ? (buf.get() & 0xFF) : 0; + List levels = new ArrayList<>(generalAlarmCount); + for (int i = 0; i < generalAlarmCount && buf.remaining() >= 2; i++) { + int bit = buf.get() & 0xFF; + int level = buf.get() & 0xFF; + levels.add(new InfoBlock.Alarm.GeneralAlarmEntry(bit, level)); + } + + return new InfoBlock.Alarm( + ProtocolVersion.V2025, maxLevel, generalFlag, + battery, motor, engine, other, levels); + } + + private static List readFaultList(ByteBuffer buf) { + int count = buf.get() & 0xFF; + List out = new ArrayList<>(count); + for (int i = 0; i < count; i++) { + out.add(buf.getInt() & 0xFFFFFFFFL); + } + return out; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/BatteryTemperatureV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/BatteryTemperatureV2025BlockParser.java new file mode 100644 index 00000000..6bf7ec40 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/BatteryTemperatureV2025BlockParser.java @@ -0,0 +1,37 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 动力蓄电池温度数据 (0x08) —— GB/T 32960.3-2025 §7.2.4.3。变长。 + * 2016 版 0x08 为可充电储能装置电压,由 v2016 包处理。 + */ +public final class BatteryTemperatureV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x08; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int subCount = buf.get() & 0xFF; + List packs = new ArrayList<>(subCount); + for (int i = 0; i < subCount; i++) { + int packNo = buf.get() & 0xFF; + int probeCount = buf.getShort() & 0xFFFF; + List temps = new ArrayList<>(probeCount); + int safeCount = Math.min(probeCount, buf.remaining()); + for (int k = 0; k < safeCount; k++) { + temps.add((buf.get() & 0xFF) - 40); + } + packs.add(new InfoBlock.BatteryTemperature.Pack(packNo, probeCount, temps)); + } + return new InfoBlock.BatteryTemperature(subCount, packs); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/DriveMotorV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/DriveMotorV2025BlockParser.java new file mode 100644 index 00000000..9a7abec9 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/DriveMotorV2025BlockParser.java @@ -0,0 +1,47 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 驱动电机数据 (0x02) —— GB/T 32960.3-2025 表 16。变长。 + * 1 字节电机个数 + N × 14 字节电机: + * serialNo(1) state(1) ctrlTempC(1) rpm(2,offset -32000) + * torque(4,offset -20000,0.1 N·m) motorTempC(1) + * ctrlVoltageV(2,0.1V) ctrlCurrentA(2,0.1A,offset -1000)。 + * + *

    相比 2016 版:rpm 偏移变为 -32000;torque 由 2 字节扩展为 4 字节。 + */ +public final class DriveMotorV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x02; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int count = buf.get() & 0xFF; + List motors = new ArrayList<>(count); + for (int i = 0; i < count; i++) { + Integer serialNo = ValueDecoder.u8(buf); + Integer state = ValueDecoder.u8(buf); + Integer ctrlTempC = ValueDecoder.tempOffset40(buf); + Integer rawRpm = ValueDecoder.u16(buf); + Integer rpm = rawRpm == null ? null : rawRpm - 32_000; + Long rawTq = ValueDecoder.u32(buf); + Double torque = rawTq == null ? null : (rawTq - 20_000L) * 0.1; + Integer motorTempC = ValueDecoder.tempOffset40(buf); + Double ctrlVoltage = ValueDecoder.scaledU16(buf, 0.1); + Double ctrlCurrent = ValueDecoder.scaledU16WithOffset(buf, 0.1, -1000.0); + motors.add(new InfoBlock.DriveMotor.Motor( + serialNo, state, ctrlTempC, rpm, torque, motorTempC, ctrlVoltage, ctrlCurrent)); + } + return new InfoBlock.DriveMotor(motors); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/EngineV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/EngineV2025BlockParser.java new file mode 100644 index 00000000..8f17f8a2 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/EngineV2025BlockParser.java @@ -0,0 +1,27 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 发动机数据 (0x04) —— GB/T 32960.3-2025。固定 5 字节。 + * 字段与 2016 版完全一致;保留独立类只为遵守"双版本不共用"原则。 + */ +public final class EngineV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x04; } + @Override public int fixedLength() { return 5; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Integer engineState = ValueDecoder.u8(buf); + Integer crankshaftRpm = ValueDecoder.u16(buf); + Double fuelRate = ValueDecoder.scaledU16(buf, 0.01); + return new InfoBlock.Engine(engineState, crankshaftRpm, fuelRate); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/FuelCellStackV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/FuelCellStackV2025BlockParser.java new file mode 100644 index 00000000..32aecb90 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/FuelCellStackV2025BlockParser.java @@ -0,0 +1,45 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 燃料电池电堆数据 (0x30) —— GB/T 32960.3-2025 §7.2.4.6 表 18/19。变长。 + * + *

    V2016 的同 typeCode 厂商扩展由 v2016 包独立处理。 + */ +public final class FuelCellStackV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x30; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int stackCount = buf.get() & 0xFF; + List stacks = new ArrayList<>(stackCount); + for (int i = 0; i < stackCount; i++) { + int stackNo = buf.get() & 0xFF; + Double voltage = ValueDecoder.scaledU16(buf, 0.1); + Double current = ValueDecoder.scaledU16(buf, 0.1); + Double h2InletPressure = ValueDecoder.scaledU16WithOffset(buf, 0.1, -100.0); + Double airInletPressure = ValueDecoder.scaledU16WithOffset(buf, 0.1, -100.0); + Integer airInletTemp = ValueDecoder.tempOffset40(buf); + int probeCount = buf.getShort() & 0xFFFF; + List temps = new ArrayList<>(probeCount); + int safeCount = Math.min(probeCount, buf.remaining()); + for (int k = 0; k < safeCount; k++) { + temps.add((buf.get() & 0xFF) - 40); + } + stacks.add(new InfoBlock.FuelCellStack.Stack( + stackNo, voltage, current, h2InletPressure, airInletPressure, airInletTemp, temps)); + } + return new InfoBlock.FuelCellStack(stackCount, stacks); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/FuelCellV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/FuelCellV2025BlockParser.java new file mode 100644 index 00000000..9adab4d8 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/FuelCellV2025BlockParser.java @@ -0,0 +1,36 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 燃料电池发动机及车载氢系统数据 (0x03) —— GB/T 32960.3-2025 §7.2.4.5 表 17。固定 13 字节。 + */ +public final class FuelCellV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x03; } + @Override public int fixedLength() { return 13; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Double maxTempC = ValueDecoder.scaledU16WithOffset(buf, 0.1, -40.0); + Integer maxTempProbeId = ValueDecoder.u8(buf); + Double maxConcentration = ValueDecoder.scaledU16(buf, 0.000001); + Integer maxConcentrationProbeId = ValueDecoder.u8(buf); + Double maxPressure = ValueDecoder.scaledU16(buf, 0.1); + Integer maxPressureProbeId = ValueDecoder.u8(buf); + Integer hvDcDcStatus = ValueDecoder.u8(buf); + Integer remainingH2Percent = ValueDecoder.u8(buf); + Integer hvDcDcControllerTempC = ValueDecoder.tempOffset40(buf); + return new InfoBlock.FuelCellV2025( + maxTempC, maxTempProbeId, + maxConcentration, maxConcentrationProbeId, + maxPressure, maxPressureProbeId, + hvDcDcStatus, remainingH2Percent, hvDcDcControllerTempC); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/MinParallelVoltageV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/MinParallelVoltageV2025BlockParser.java new file mode 100644 index 00000000..13db9676 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/MinParallelVoltageV2025BlockParser.java @@ -0,0 +1,41 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 动力蓄电池最小并联单元电压数据 (0x07) —— GB/T 32960.3-2025 §7.2.4.2。变长。 + * 2016 版 0x07 为报警,由 v2016 包处理。 + */ +public final class MinParallelVoltageV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x07; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int subCount = buf.get() & 0xFF; + List packs = new ArrayList<>(subCount); + for (int i = 0; i < subCount; i++) { + int packNo = buf.get() & 0xFF; + Double voltage = ValueDecoder.scaledU16(buf, 0.1); + Double current = ValueDecoder.scaledU16WithOffset(buf, 0.1, -3000.0); + int totalUnits = buf.getShort() & 0xFFFF; + List frameVoltages = new ArrayList<>(totalUnits); + int safeCount = Math.min(totalUnits, buf.remaining() / 2); + for (int k = 0; k < safeCount; k++) { + frameVoltages.add((buf.getShort() & 0xFFFF) * 0.001); + } + packs.add(new InfoBlock.MinParallelVoltage.Pack( + packNo, voltage, current, totalUnits, frameVoltages)); + } + return new InfoBlock.MinParallelVoltage(subCount, packs); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/PositionV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/PositionV2025BlockParser.java new file mode 100644 index 00000000..3611f85f --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/PositionV2025BlockParser.java @@ -0,0 +1,34 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 车辆位置数据 (0x05) —— GB/T 32960.3-2025。固定 10 字节, + * 比 2016 版多一个坐标系字节: + * 状态位(1) + 坐标系(1) + 经度(4) + 纬度(4)。 + * + *

    坐标系:0x01=WGS84 / 0x02=GCJ-02 / 0x03=其他。 + */ +public final class PositionV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x05; } + @Override public int fixedLength() { return 10; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int statusFlag = buf.get() & 0xFF; + int coordSystem = buf.get() & 0xFF; + long lonRaw = buf.getInt() & 0xFFFFFFFFL; + long latRaw = buf.getInt() & 0xFFFFFFFFL; + double longitude = lonRaw / 1_000_000.0; + double latitude = latRaw / 1_000_000.0; + if ((statusFlag & 0b100) != 0) longitude = -longitude; + if ((statusFlag & 0b010) != 0) latitude = -latitude; + return new InfoBlock.Position(statusFlag, coordSystem, longitude, latitude); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/SuperCapacitorExtremeV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/SuperCapacitorExtremeV2025BlockParser.java new file mode 100644 index 00000000..cd0f2b83 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/SuperCapacitorExtremeV2025BlockParser.java @@ -0,0 +1,39 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 超级电容器极值数据 (0x32) —— GB/T 32960.3-2025 §7.2.4.11 表 26。固定 18 字节。 + */ +public final class SuperCapacitorExtremeV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x32; } + @Override public int fixedLength() { return 18; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Integer maxVSys = ValueDecoder.u8(buf); + Integer maxVCell = ValueDecoder.u16(buf); + Double maxV = ValueDecoder.scaledU16(buf, 0.001); + Integer minVSys = ValueDecoder.u8(buf); + Integer minVCell = ValueDecoder.u16(buf); + Double minV = ValueDecoder.scaledU16(buf, 0.001); + Integer maxTSys = ValueDecoder.u8(buf); + Integer maxTProbe = ValueDecoder.u16(buf); + Integer maxT = ValueDecoder.tempOffset40(buf); + Integer minTSys = ValueDecoder.u8(buf); + Integer minTProbe = ValueDecoder.u16(buf); + Integer minT = ValueDecoder.tempOffset40(buf); + return new InfoBlock.SuperCapacitorExtreme( + maxVSys, maxVCell, maxV, + minVSys, minVCell, minV, + maxTSys, maxTProbe, maxT, + minTSys, minTProbe, minT); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/SuperCapacitorV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/SuperCapacitorV2025BlockParser.java new file mode 100644 index 00000000..b6411cf1 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/SuperCapacitorV2025BlockParser.java @@ -0,0 +1,40 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * 超级电容器数据 (0x31) —— GB/T 32960.3-2025 §7.2.4.10 表 25。变长。 + */ +public final class SuperCapacitorV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x31; } + @Override public int fixedLength() { return -1; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + int systemNo = buf.get() & 0xFF; + Double totalVoltage = ValueDecoder.scaledU16(buf, 0.1); + Double totalCurrent = ValueDecoder.scaledU16WithOffset(buf, 0.1, -3000.0); + int cellCount = buf.getShort() & 0xFFFF; + List cells = new ArrayList<>(cellCount); + int safeCellCount = Math.min(cellCount, buf.remaining() / 2); + for (int i = 0; i < safeCellCount; i++) { + cells.add((buf.getShort() & 0xFFFF) * 0.001); + } + int probeCount = buf.hasRemaining() ? (buf.getShort() & 0xFFFF) : 0; + List temps = new ArrayList<>(probeCount); + int safeProbeCount = Math.min(probeCount, buf.remaining()); + for (int i = 0; i < safeProbeCount; i++) { + temps.add((buf.get() & 0xFF) - 40); + } + return new InfoBlock.SuperCapacitor(systemNo, totalVoltage, totalCurrent, cells, temps); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/VehicleV2025BlockParser.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/VehicleV2025BlockParser.java new file mode 100644 index 00000000..5721bb71 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/codec/parser/v2025/VehicleV2025BlockParser.java @@ -0,0 +1,37 @@ +package com.lingniu.ingest.protocol.gb32960.codec.parser.v2025; + +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.ValueDecoder; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import com.lingniu.ingest.protocol.gb32960.model.ProtocolVersion; + +import java.nio.ByteBuffer; + +/** + * 整车数据 (0x01) —— GB/T 32960.3-2025。固定 18 字节。 + * 相比 2016 版删除加速踏板和制动踏板。 + */ +public final class VehicleV2025BlockParser implements InfoBlockParser { + + @Override public ProtocolVersion version() { return ProtocolVersion.V2025; } + @Override public int typeCode() { return 0x01; } + @Override public int fixedLength() { return 18; } + + @Override + public InfoBlock parse(ByteBuffer buf) { + Integer vehicleState = ValueDecoder.u8(buf); + Integer chargingState = ValueDecoder.u8(buf); + Integer runningMode = ValueDecoder.u8(buf); + Double speedKmh = ValueDecoder.scaledU16(buf, 0.1); + Double mileageKm = ValueDecoder.scaledU32(buf, 0.1); + Double totalVoltageV = ValueDecoder.scaledU16(buf, 0.1); + Double totalCurrentA = ValueDecoder.scaledU16WithOffset(buf, 0.1, -1000.0); + Integer soc = ValueDecoder.u8(buf); + Integer dcDcStatus = ValueDecoder.u8(buf); + Integer gearRaw = ValueDecoder.u8raw(buf); + Integer insulation = ValueDecoder.u16(buf); + return new InfoBlock.Vehicle(vehicleState, chargingState, runningMode, speedKmh, mileageKm, + totalVoltageV, totalCurrentA, soc, dcDcStatus, gearRaw, insulation, + null, null); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960AutoConfiguration.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960AutoConfiguration.java new file mode 100644 index 00000000..68fed881 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960AutoConfiguration.java @@ -0,0 +1,150 @@ +package com.lingniu.ingest.protocol.gb32960.config; + +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.protocol.gb32960.auth.Gb32960PlatformAuthorizer; +import com.lingniu.ingest.protocol.gb32960.auth.Gb32960VinAuthorizer; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960BodyParser; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960CommandParser; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder; +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParserRegistry; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.AlarmV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.DriveMotorV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.EngineV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.ExtremeValueV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.FuelCellV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.PositionV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.TemperatureV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VehicleV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VoltageV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.AlarmV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.BatteryTemperatureV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.DriveMotorV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.EngineV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.FuelCellStackV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.FuelCellV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.MinParallelVoltageV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.PositionV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.SuperCapacitorExtremeV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.SuperCapacitorV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.VehicleV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.handler.Gb32960RealtimeHandler; +import com.lingniu.ingest.protocol.gb32960.inbound.Gb32960NettyServer; +import com.lingniu.ingest.protocol.gb32960.mapper.Gb32960EventMapper; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +import java.util.List; + +/** + * GB/T 32960.3 协议接入模块的自动装配。 + * + *

    每个 Parser Bean 都会被 {@link InfoBlockParserRegistry} 按 + * {@code (ProtocolVersion, typeCode)} 注册。2016/2025 可同时加载。 + */ +@AutoConfiguration +@EnableConfigurationProperties(Gb32960Properties.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.gb32960", name = "enabled", havingValue = "true") +public class Gb32960AutoConfiguration { + + // ================= 2016 版信息体 Parser(com...parser.v2016 包) ================= + + @Bean public InfoBlockParser gb32960V2016Vehicle() { return new VehicleV2016BlockParser(); } + @Bean public InfoBlockParser gb32960V2016DriveMotor() { return new DriveMotorV2016BlockParser(); } + @Bean public InfoBlockParser gb32960V2016FuelCell() { return new FuelCellV2016BlockParser(); } + @Bean public InfoBlockParser gb32960V2016Engine() { return new EngineV2016BlockParser(); } + @Bean public InfoBlockParser gb32960V2016Position() { return new PositionV2016BlockParser(); } + @Bean public InfoBlockParser gb32960V2016Extreme() { return new ExtremeValueV2016BlockParser(); } + @Bean public InfoBlockParser gb32960V2016Alarm() { return new AlarmV2016BlockParser(); } + @Bean public InfoBlockParser gb32960V2016Voltage() { return new VoltageV2016BlockParser(); } + @Bean public InfoBlockParser gb32960V2016Temperature() { return new TemperatureV2016BlockParser(); } + // 注意:0x30~0x7F 在 GB/T 32960.3-2016 附录 B 表 B.3 是"预留"区段,没有任何字段定义。 + // peer 在 V2016 帧里发 0x30/0x31/0x32 是越界使用,强行用 2025 字段布局解读会得到非物理值。 + // 故 V2016 不注册任何 0x30+ parser;遇到时由 Gb32960BodyParser 走 Raw 兜底并打 WARN。 + + // ================= 2025 版信息体 Parser(com...parser.v2025 包) ================= + + @Bean public InfoBlockParser gb32960V2025Vehicle() { return new VehicleV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025DriveMotor() { return new DriveMotorV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025FuelCell() { return new FuelCellV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025Engine() { return new EngineV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025Position() { return new PositionV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025Alarm() { return new AlarmV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025MinParallelVoltage() { return new MinParallelVoltageV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025BatteryTemp() { return new BatteryTemperatureV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025FuelCellStack() { return new FuelCellStackV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025SuperCap() { return new SuperCapacitorV2025BlockParser(); } + @Bean public InfoBlockParser gb32960V2025SuperCapExtreme() { return new SuperCapacitorExtremeV2025BlockParser(); } + + // ================= Core components ================= + + @Bean + @ConditionalOnMissingBean + public InfoBlockParserRegistry gb32960InfoBlockParserRegistry(List parsers) { + return new InfoBlockParserRegistry(parsers); + } + + @Bean + @ConditionalOnMissingBean + public Gb32960BodyParser gb32960BodyParser(InfoBlockParserRegistry registry) { + return new Gb32960BodyParser(registry); + } + + @Bean + @ConditionalOnMissingBean + public Gb32960CommandParser gb32960CommandParser() { + return new Gb32960CommandParser(); + } + + @Bean + @ConditionalOnMissingBean + public Gb32960MessageDecoder gb32960MessageDecoder(Gb32960BodyParser bodyParser, + Gb32960CommandParser commandParser) { + return new Gb32960MessageDecoder(bodyParser, commandParser); + } + + @Bean + @ConditionalOnMissingBean + public Gb32960EventMapper gb32960EventMapper() { + return new Gb32960EventMapper(); + } + + @Bean + @ConditionalOnMissingBean + public Gb32960RealtimeHandler gb32960RealtimeHandler(Gb32960EventMapper mapper) { + return new Gb32960RealtimeHandler(mapper); + } + + @Bean + @ConditionalOnMissingBean + public Gb32960VinAuthorizer gb32960VinAuthorizer(Gb32960Properties props) { + return new Gb32960VinAuthorizer(props.getAuth()); + } + + @Bean + @ConditionalOnMissingBean + public Gb32960PlatformAuthorizer gb32960PlatformAuthorizer(Gb32960Properties props) { + return new Gb32960PlatformAuthorizer(props.getAuth().getPlatforms()); + } + + @Bean + @ConditionalOnMissingBean + public Gb32960NettyServer gb32960NettyServer(Gb32960Properties props, + Gb32960MessageDecoder decoder, + Dispatcher dispatcher, + Gb32960VinAuthorizer authorizer, + Gb32960PlatformAuthorizer platformAuthorizer) { + return new Gb32960NettyServer( + props.getPort(), + props.getWorkerThreads(), + props.getIdleReadSeconds(), + decoder, + dispatcher, + authorizer, + platformAuthorizer, + props.getTls()); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960Properties.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960Properties.java new file mode 100644 index 00000000..4c3f3e38 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960Properties.java @@ -0,0 +1,146 @@ +package com.lingniu.ingest.protocol.gb32960.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +@ConfigurationProperties(prefix = "lingniu.ingest.gb32960") +public class Gb32960Properties { + + private boolean enabled = false; + private int port = 9000; + private int workerThreads = 0; + + /** + * 读空闲告警阈值(秒)。连接在该时长内没有任何上行帧则打一条 WARN 日志,方便排查 + * "对端登入成功但不推数据"之类的静默场景。仅告警不断链;0 或负数禁用。 + */ + private int idleReadSeconds = 60; + + /** VIN 白名单认证。关闭时任何 VIN 都能登入。 */ + private Auth auth = new Auth(); + + /** TLS 双向认证。 */ + private Tls tls = new Tls(); + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public int getPort() { return port; } + public void setPort(int port) { this.port = port; } + public int getWorkerThreads() { return workerThreads; } + public void setWorkerThreads(int workerThreads) { this.workerThreads = workerThreads; } + public int getIdleReadSeconds() { return idleReadSeconds; } + public void setIdleReadSeconds(int idleReadSeconds) { this.idleReadSeconds = idleReadSeconds; } + public Auth getAuth() { return auth; } + public void setAuth(Auth auth) { this.auth = auth; } + public Tls getTls() { return tls; } + public void setTls(Tls tls) { this.tls = tls; } + + /** + * VIN 白名单认证。 + * + *

    GB/T 32960 协议没有设备账号密码,身份由报文头的 17 字节 VIN + 数据单元里的 ICCID + * 决定。此处通过内存白名单实现最小可用的接入控制: + *

      + *
    • {@code enabled=false}(默认):接受任意 VIN 接入,兼容未注册的测试终端 + *
    • {@code enabled=true}: + *
        + *
      • 车辆登入 0x01:VIN 不在白名单时返回 {@code 0x04 VIN_NOT_EXIST} 应答,关闭连接 + *
      • 实时上报 0x02 / 补发 0x03 / 登出 0x04 / 心跳 0x07:VIN 不在白名单时丢弃,关闭连接 + *
      + *
    + */ + public static class Auth { + private boolean enabled = false; + /** 是否大小写敏感比较 VIN。GB 16735 要求 VIN 大写,默认大小写不敏感以容错。 */ + private boolean caseSensitive = false; + private List whitelist = new ArrayList<>(); + + /** + * 平台登入 (0x05) 账号列表。GB/T 32960.3 表 29 规定平台登入携带 + * 12B 用户名 + 20B 密码 + 1B 加密规则。此处维护允许登入的账号集合, + * 收到 0x05 时比对 username / password: + *
      + *
    • 匹配且(可选)IP 在 {@code allowedIps} 内 → 返回 {@code SUCCESS} 并产出登入事件 + *
    • 不匹配 → 返回 {@code 0x02 OTHER_ERROR} 并关闭连接 + *
    + * 列表为空时默认放行所有平台登入(兼容旧行为)。 + */ + private List platforms = new ArrayList<>(); + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public boolean isCaseSensitive() { return caseSensitive; } + public void setCaseSensitive(boolean caseSensitive) { this.caseSensitive = caseSensitive; } + public List getWhitelist() { return whitelist; } + public void setWhitelist(List whitelist) { this.whitelist = whitelist; } + public List getPlatforms() { return platforms; } + public void setPlatforms(List platforms) { this.platforms = platforms; } + + /** 转换为规范化 Set 供 O(1) 查找。 */ + public Set normalizedWhitelist() { + Set out = new LinkedHashSet<>(whitelist.size()); + for (String v : whitelist) { + if (v == null || v.isBlank()) continue; + out.add(caseSensitive ? v.trim() : v.trim().toUpperCase()); + } + return out; + } + + /** + * 平台账号定义。对应 GB/T 32960.3 表 29 的字段。 + * + * @param username 12 字节以内的用户名 + * @param password 20 字节以内的密码(明文配置;推荐通过 env var 注入避免入库代码) + * @param allowedIps 可选:允许的客户端 IP 列表,为空不做 IP 限制 + * @param description 可选:平台描述(仅日志用) + */ + public static class Platform { + private String username; + private String password; + private List allowedIps = new ArrayList<>(); + private String description; + + public String getUsername() { return username; } + public void setUsername(String username) { this.username = username; } + public String getPassword() { return password; } + public void setPassword(String password) { this.password = password; } + public List getAllowedIps() { return allowedIps; } + public void setAllowedIps(List allowedIps) { this.allowedIps = allowedIps; } + public String getDescription() { return description; } + public void setDescription(String description) { this.description = description; } + } + } + + /** + * TLS 双向认证。 + * + *

    启用后 Netty pipeline 前置 {@code SslHandler},服务端加载自身证书+私钥, + * 强制要求客户端提供证书({@code NEED_CLIENT_AUTH})并使用 CA 证书验证。 + */ + public static class Tls { + private boolean enabled = false; + /** 服务端证书 PEM 路径。文件路径或 classpath 资源。 */ + private String certPath; + /** 服务端私钥 PEM 路径(PKCS#8 未加密)。 */ + private String keyPath; + /** 受信任的 CA 证书 PEM 路径。用于验证客户端证书。 */ + private String trustCertPath; + /** 是否要求客户端证书。默认 true(双向);false 则变成单向 TLS。 */ + private boolean requireClientAuth = true; + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public String getCertPath() { return certPath; } + public void setCertPath(String certPath) { this.certPath = certPath; } + public String getKeyPath() { return keyPath; } + public void setKeyPath(String keyPath) { this.keyPath = keyPath; } + public String getTrustCertPath() { return trustCertPath; } + public void setTrustCertPath(String trustCertPath) { this.trustCertPath = trustCertPath; } + public boolean isRequireClientAuth() { return requireClientAuth; } + public void setRequireClientAuth(boolean requireClientAuth) { this.requireClientAuth = requireClientAuth; } + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/handler/Gb32960RealtimeHandler.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/handler/Gb32960RealtimeHandler.java new file mode 100644 index 00000000..2a870318 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/handler/Gb32960RealtimeHandler.java @@ -0,0 +1,52 @@ +package com.lingniu.ingest.protocol.gb32960.handler; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.annotation.EventEmit; +import com.lingniu.ingest.api.annotation.MessageMapping; +import com.lingniu.ingest.api.annotation.ProtocolHandler; +import com.lingniu.ingest.api.annotation.RateLimited; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.protocol.gb32960.mapper.Gb32960EventMapper; +import com.lingniu.ingest.protocol.gb32960.model.CommandType; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Message; + +import java.util.List; + +/** + * 示例 Handler:演示注解驱动的消息路由与事件产出。 + * + *

    构造器注入 {@link Gb32960EventMapper},全部业务逻辑限制在纯函数里,不触碰数据库 / 不做 IO。 + * 产出的事件由 Dispatcher 统一投递到 Disruptor → Kafka。 + */ +@ProtocolHandler(protocol = ProtocolId.GB32960, version = "2017") +public class Gb32960RealtimeHandler { + + private final Gb32960EventMapper mapper; + + public Gb32960RealtimeHandler(Gb32960EventMapper mapper) { + this.mapper = mapper; + } + + /** 实时 + 补发上报。 */ + @MessageMapping(command = {0x02, 0x03}, desc = "实时/补发上报") + @RateLimited(perVin = 50) + @EventEmit({VehicleEvent.Realtime.class, VehicleEvent.Location.class}) + public List onReport(Gb32960Message msg) { + return mapper.toEvents(msg); + } + + /** 车辆登入 / 登出 / 心跳:统一映射为 session 事件。 */ + @MessageMapping(command = {0x01, 0x04, 0x07}, desc = "登入/登出/心跳") + @EventEmit({VehicleEvent.Login.class, VehicleEvent.Logout.class, VehicleEvent.Heartbeat.class}) + public List onSession(Gb32960Message msg) { + return mapper.toEvents(msg); + } + + /** 平台登入 / 登出:仅用于 OEM 平台间握手,不产出业务事件。 */ + @MessageMapping(command = {0x05, 0x06}, desc = "平台登入/登出") + public List onPlatform(Gb32960Message msg) { + CommandType cmd = msg.header().command(); + // 留个 hook:后续可在此触发 session-core 的平台会话事件 + return List.of(); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/inbound/Gb32960ChannelHandler.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/inbound/Gb32960ChannelHandler.java new file mode 100644 index 00000000..dfd3ab92 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/inbound/Gb32960ChannelHandler.java @@ -0,0 +1,297 @@ +package com.lingniu.ingest.protocol.gb32960.inbound; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.pipeline.RawFrame; +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.protocol.gb32960.auth.Gb32960PlatformAuthorizer; +import com.lingniu.ingest.protocol.gb32960.auth.Gb32960VinAuthorizer; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960FrameEncoder; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder; +import com.lingniu.ingest.protocol.gb32960.model.CommandBody; +import com.lingniu.ingest.protocol.gb32960.model.CommandType; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Message; +import com.lingniu.ingest.protocol.gb32960.model.ResponseFlag; +import io.netty.buffer.Unpooled; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.handler.timeout.IdleState; +import io.netty.handler.timeout.IdleStateEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; + +/** + * Netty 入站处理器:字节 → Gb32960Message → 认证 → RawFrame → Dispatcher。 + * + *

    认证逻辑: + *

      + *
    • {@link Gb32960VinAuthorizer#isEnforcing()} = false:放行所有 VIN + *
    • {@link Gb32960VinAuthorizer#isEnforcing()} = true: + *
        + *
      • 车辆登入 {@code 0x01}:VIN 在白名单则返回成功应答(保留原帧时间)并派发; + * 不在则返回 {@code 0x04 VIN_NOT_EXIST} 应答并关闭连接 + *
      • 其他命令:VIN 在白名单则派发;不在则 DEBUG 日志后关闭连接 + *
      + *
    + * 注意应答帧使用 {@link Gb32960FrameEncoder#buildResponse},由 Channel 直接写回。 + */ +public class Gb32960ChannelHandler extends SimpleChannelInboundHandler { + + private static final Logger log = LoggerFactory.getLogger(Gb32960ChannelHandler.class); + + /** 仅用于调试:把解析后的 Gb32960Message 序列化成 JSON 打到日志。 */ + private static final ObjectMapper DEBUG_JSON = new ObjectMapper() + .registerModule(new JavaTimeModule()) + .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + + private final Gb32960MessageDecoder decoder; + private final Dispatcher dispatcher; + private final Gb32960VinAuthorizer authorizer; + private final Gb32960PlatformAuthorizer platformAuthorizer; + + public Gb32960ChannelHandler(Gb32960MessageDecoder decoder, + Dispatcher dispatcher, + Gb32960VinAuthorizer authorizer, + Gb32960PlatformAuthorizer platformAuthorizer) { + this.decoder = decoder; + this.dispatcher = dispatcher; + this.authorizer = authorizer; + this.platformAuthorizer = platformAuthorizer; + } + + @Override + public void channelActive(ChannelHandlerContext ctx) { + log.info("[gb32960] connection opened peer={}", addr(ctx)); + } + + @Override + public void channelInactive(ChannelHandlerContext ctx) { + log.info("[gb32960] connection closed peer={}", addr(ctx)); + } + + /** + * 读空闲告警:仅记录日志,不断链。用于排查"对端登入成功后长时间不推数据"场景。 + * 由 pipeline 中的 {@link io.netty.handler.timeout.IdleStateHandler}(可选)触发。 + */ + @Override + public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { + if (evt instanceof IdleStateEvent idle && idle.state() == IdleState.READER_IDLE) { + log.warn("[gb32960] read idle peer={} noInboundFrameFor>=thresholdSeconds (see idleReadSeconds)", + addr(ctx)); + } + super.userEventTriggered(ctx, evt); + } + + @Override + protected void channelRead0(ChannelHandlerContext ctx, byte[] frame) { + Gb32960Message msg; + try { + msg = decoder.decode(ByteBuffer.wrap(frame)); + } catch (Exception e) { + log.warn("[gb32960] decode failed peer={} len={}", addr(ctx), frame.length, e); + return; + } + + String vin = msg.header().vin(); + CommandType cmd = msg.header().command(); + // 原样回显请求帧的 17 字节 VIN(frame[4..20]),避免平台登入 VIN 全 0 + // 被 vinPadded 重写为空格导致对端判定 VIN 不匹配。 + byte[] rawVin = new byte[17]; + System.arraycopy(frame, 4, rawVin, 0, 17); + + // 平台登入/登出(0x05/0x06)没有 VIN,不进 VIN 白名单校验 + boolean isPlatformCommand = cmd == CommandType.PLATFORM_LOGIN || cmd == CommandType.PLATFORM_LOGOUT; + if (!isPlatformCommand && !authorizer.isAllowed(vin)) { + handleUnauthorized(ctx, msg); + return; + } + + // 鉴权通过:对 0x01 登入主动下发成功应答(某些终端不收到应答会一直重发) + if (cmd == CommandType.VEHICLE_LOGIN) { + byte[] ack = Gb32960FrameEncoder.buildResponse( + msg.header().protocolVersion(), + CommandType.VEHICLE_LOGIN, + ResponseFlag.SUCCESS, + rawVin, + msg.header().eventTime() != null ? msg.header().eventTime() : Instant.now(), + null); + writeAck(ctx, ack, "vehicle-login-ack"); + log.info("[gb32960] vehicle login peer={} vin={} protocolVersion={}", + addr(ctx), vin, msg.header().protocolVersion()); + } else if (cmd == CommandType.VEHICLE_LOGOUT) { + log.info("[gb32960] vehicle logout peer={} vin={}", addr(ctx), vin); + writeAck(ctx, Gb32960FrameEncoder.buildResponse( + msg.header().protocolVersion(), + CommandType.VEHICLE_LOGOUT, + ResponseFlag.SUCCESS, + rawVin, + msg.header().eventTime() != null ? msg.header().eventTime() : Instant.now(), + null), "vehicle-logout-ack"); + } else if (cmd == CommandType.PLATFORM_LOGIN) { + // 平台登入 0x05(表 29):含 12B username + 20B password + 加密规则 + if (!(msg.commandBody() instanceof CommandBody.PlatformLogin pl)) { + log.warn("[gb32960] platform login peer={} body unparsed, closing", addr(ctx)); + ctx.close(); + return; + } + String peerIp = peerIp(ctx); + Gb32960PlatformAuthorizer.Result result = platformAuthorizer.authenticate( + pl.username(), pl.password(), peerIp); + if (!result.accepted()) { + log.warn("[gb32960] platform login REJECTED peer={} username={} reason={}", + addr(ctx), pl.username(), result); + byte[] nack = Gb32960FrameEncoder.buildResponse( + msg.header().protocolVersion(), + CommandType.PLATFORM_LOGIN, + ResponseFlag.OTHER_ERROR, + rawVin, + msg.header().eventTime() != null ? msg.header().eventTime() : Instant.now(), + null); + ctx.writeAndFlush(Unpooled.wrappedBuffer(nack)).addListener(f -> { + log.info("[gb32960] platform login NACK flushed success={} peer={}", + f.isSuccess(), addr(ctx)); + ctx.close(); + }); + return; + } + log.info("[gb32960] platform login peer={} username={} encryptRule={} serial={} time={} policy={}", + addr(ctx), pl.username(), pl.encryptRule(), pl.serialNo(), pl.loginTime(), result); + byte[] ack = Gb32960FrameEncoder.buildResponse( + msg.header().protocolVersion(), + CommandType.PLATFORM_LOGIN, + ResponseFlag.SUCCESS, + rawVin, + msg.header().eventTime() != null ? msg.header().eventTime() : Instant.now(), + null); + writeAck(ctx, ack, "platform-login-ack"); + } else if (cmd == CommandType.PLATFORM_LOGOUT) { + log.info("[gb32960] platform logout peer={}", addr(ctx)); + writeAck(ctx, Gb32960FrameEncoder.buildResponse( + msg.header().protocolVersion(), + CommandType.PLATFORM_LOGOUT, + ResponseFlag.SUCCESS, + rawVin, + msg.header().eventTime() != null ? msg.header().eventTime() : Instant.now(), + null), "platform-logout-ack"); + } else if (cmd == CommandType.REALTIME_REPORT + || cmd == CommandType.RESEND_REPORT + || cmd == CommandType.HEARTBEAT) { + // 实时 / 补发 / 心跳:按 §6.3.2 回应答帧,保留原帧采集时间,data 段仅 6B 时间。 + // 部分车端实现严格按规范,没收到应答会停止后续上报或重连。 + writeAck(ctx, Gb32960FrameEncoder.buildResponse( + msg.header().protocolVersion(), + cmd, + ResponseFlag.SUCCESS, + rawVin, + msg.header().eventTime() != null ? msg.header().eventTime() : Instant.now(), + null), "report-ack-0x" + Integer.toHexString(cmd.code())); + if (log.isDebugEnabled()) { + log.debug("[gb32960] frame peer={} vin={} cmd=0x{} infoBlocks={} json={}", + addr(ctx), vin, Integer.toHexString(cmd.code()), + msg.infoBlocks().size(), toJson(msg)); + } + } else if (cmd == CommandType.TIME_CALIBRATION) { + // 0x08 终端校时:平台应答 data 段为平台当前时间 6B(用 Instant.now())。 + writeAck(ctx, Gb32960FrameEncoder.buildResponse( + msg.header().protocolVersion(), + CommandType.TIME_CALIBRATION, + ResponseFlag.SUCCESS, + rawVin, + Instant.now(), + null), "time-calibration-ack"); + } else if (log.isDebugEnabled()) { + log.debug("[gb32960] frame peer={} vin={} cmd=0x{} infoBlocks={} json={}", + addr(ctx), vin, Integer.toHexString(cmd.code()), + msg.infoBlocks().size(), toJson(msg)); + } + + Map sourceMeta = new HashMap<>(4); + sourceMeta.put("vin", vin); + sourceMeta.put("peer", addr(ctx)); + RawFrame rf = new RawFrame( + ProtocolId.GB32960, + cmd.code(), + 0, + msg, + frame, + sourceMeta, + Instant.now()); + dispatcher.dispatch(rf); + } + + /** 统一的 ack 写出 + 日志确认(含完整 hex dump 便于排查对端行为)。 */ + private static void writeAck(ChannelHandlerContext ctx, byte[] ack, String tag) { + String hex = hex(ack); + ctx.writeAndFlush(Unpooled.wrappedBuffer(ack)).addListener(f -> { + if (f.isSuccess()) { + log.info("[gb32960] {} flushed peer={} len={} hex={}", tag, addr(ctx), ack.length, hex); + } else { + log.warn("[gb32960] {} flush FAILED peer={} len={} hex={}", tag, addr(ctx), ack.length, hex, f.cause()); + } + }); + } + + private static String toJson(Gb32960Message msg) { + try { + return DEBUG_JSON.writeValueAsString(msg); + } catch (Exception e) { + return ""; + } + } + + private static String hex(byte[] bytes) { + StringBuilder sb = new StringBuilder(bytes.length * 2); + for (byte b : bytes) sb.append(String.format("%02x", b)); + return sb.toString(); + } + + /** VIN 未授权:对登入命令下发 VIN_NOT_EXIST 应答;其他命令静默关闭。 */ + private void handleUnauthorized(ChannelHandlerContext ctx, Gb32960Message msg) { + String vin = msg.header().vin(); + CommandType cmd = msg.header().command(); + if (cmd == CommandType.VEHICLE_LOGIN) { + byte[] nack = Gb32960FrameEncoder.buildResponse( + msg.header().protocolVersion(), + CommandType.VEHICLE_LOGIN, + ResponseFlag.VIN_NOT_EXIST, + vin, + msg.header().eventTime() != null ? msg.header().eventTime() : Instant.now(), + null); + ctx.writeAndFlush(Unpooled.wrappedBuffer(nack)) + .addListener(f -> ctx.close()); + log.info("[gb32960] reject login peer={} vin={} (not in whitelist)", addr(ctx), vin); + } else { + log.debug("[gb32960] drop frame peer={} vin={} cmd=0x{} (not in whitelist)", + addr(ctx), vin, Integer.toHexString(cmd.code())); + ctx.close(); + } + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { + log.warn("[gb32960] channel error peer={}", addr(ctx), cause); + ctx.close(); + } + + private static String addr(ChannelHandlerContext ctx) { + if (ctx.channel().remoteAddress() instanceof InetSocketAddress i) { + return i.getAddress().getHostAddress() + ":" + i.getPort(); + } + return "unknown"; + } + + private static String peerIp(ChannelHandlerContext ctx) { + if (ctx.channel().remoteAddress() instanceof InetSocketAddress i) { + return i.getAddress().getHostAddress(); + } + return null; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/inbound/Gb32960NettyServer.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/inbound/Gb32960NettyServer.java new file mode 100644 index 00000000..f5bbe720 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/inbound/Gb32960NettyServer.java @@ -0,0 +1,173 @@ +package com.lingniu.ingest.protocol.gb32960.inbound; + +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.protocol.gb32960.auth.Gb32960PlatformAuthorizer; +import com.lingniu.ingest.protocol.gb32960.auth.Gb32960VinAuthorizer; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960FrameDecoder; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder; +import com.lingniu.ingest.protocol.gb32960.config.Gb32960Properties; +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; +import io.netty.handler.ssl.ClientAuth; +import io.netty.handler.ssl.SslContext; +import io.netty.handler.ssl.SslContextBuilder; +import io.netty.handler.timeout.IdleStateHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.beans.factory.InitializingBean; + +import java.io.File; +import java.io.InputStream; +import java.net.InetSocketAddress; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.concurrent.ThreadFactory; + +/** + * GB/T 32960 Netty Server 启动器。 + * + *

    EventLoop 只做解码与投递 {@link Dispatcher},业务处理由 Disruptor 侧的虚拟线程承担。 + * + *

    支持可选 TLS:{@link Gb32960Properties.Tls#isEnabled()} = true 时,pipeline 前置 + * {@code SslHandler},加载服务端证书 + 私钥 + 受信 CA,默认要求客户端证书(双向 TLS)。 + */ +public class Gb32960NettyServer implements InitializingBean, DisposableBean { + + private static final Logger log = LoggerFactory.getLogger(Gb32960NettyServer.class); + + private final int port; + private final int workerThreads; + private final int idleReadSeconds; + private final Gb32960MessageDecoder messageDecoder; + private final Dispatcher dispatcher; + private final Gb32960VinAuthorizer authorizer; + private final Gb32960PlatformAuthorizer platformAuthorizer; + private final Gb32960Properties.Tls tlsConfig; + + private EventLoopGroup boss; + private EventLoopGroup workers; + private Channel serverChannel; + private SslContext sslContext; + + public Gb32960NettyServer(int port, int workerThreads, int idleReadSeconds, + Gb32960MessageDecoder messageDecoder, + Dispatcher dispatcher, + Gb32960VinAuthorizer authorizer, + Gb32960PlatformAuthorizer platformAuthorizer, + Gb32960Properties.Tls tlsConfig) { + this.port = port; + this.workerThreads = workerThreads; + this.idleReadSeconds = idleReadSeconds; + this.messageDecoder = messageDecoder; + this.dispatcher = dispatcher; + this.authorizer = authorizer; + this.platformAuthorizer = platformAuthorizer; + this.tlsConfig = tlsConfig; + } + + @Override + public void afterPropertiesSet() throws Exception { + if (tlsConfig != null && tlsConfig.isEnabled()) { + this.sslContext = buildSslContext(tlsConfig); + log.info("[gb32960] TLS enabled cert={} clientAuth={}", + tlsConfig.getCertPath(), + tlsConfig.isRequireClientAuth() ? "REQUIRED" : "OPTIONAL"); + } + + ThreadFactory bossTf = runnable -> new Thread(runnable, "gb32960-boss"); + ThreadFactory wkTf = runnable -> new Thread(runnable, "gb32960-worker"); + this.boss = new NioEventLoopGroup(1, bossTf); + this.workers = new NioEventLoopGroup(workerThreads == 0 + ? Runtime.getRuntime().availableProcessors() * 2 : workerThreads, wkTf); + + ServerBootstrap b = new ServerBootstrap(); + b.group(boss, workers) + .channel(NioServerSocketChannel.class) + .option(ChannelOption.SO_BACKLOG, 1024) + .childOption(ChannelOption.TCP_NODELAY, true) + .childOption(ChannelOption.SO_KEEPALIVE, true) + .childHandler(new ChannelInitializer() { + @Override + protected void initChannel(SocketChannel ch) { + if (sslContext != null) { + ch.pipeline().addLast("ssl", sslContext.newHandler(ch.alloc())); + } + if (idleReadSeconds > 0) { + // 只监听读空闲:readerIdle=N,writerIdle=0,allIdle=0。 + // 触发后由 Gb32960ChannelHandler#userEventTriggered 仅打告警日志,不断链。 + ch.pipeline().addLast("idle", + new IdleStateHandler(idleReadSeconds, 0, 0)); + } + ch.pipeline() + .addLast("frame", new Gb32960FrameDecoder()) + .addLast("dispatch", + new Gb32960ChannelHandler(messageDecoder, dispatcher, + authorizer, platformAuthorizer)); + } + }); + this.serverChannel = b.bind(port).sync().channel(); + log.info("[gb32960] Netty server listening on :{} (tls={}, vinWhitelist={}, platformAuth={}, idleReadSeconds={})", + getBoundPort(), + sslContext != null, + authorizer.isEnforcing() ? authorizer.whitelistSize() : "DISABLED", + platformAuthorizer.isEnforcing() ? platformAuthorizer.size() : "DISABLED", + idleReadSeconds > 0 ? idleReadSeconds : "DISABLED"); + } + + /** 实际绑定端口(支持 port=0 随机分配后查询)。 */ + public int getBoundPort() { + if (serverChannel != null && serverChannel.localAddress() instanceof InetSocketAddress a) { + return a.getPort(); + } + return port; + } + + private static SslContext buildSslContext(Gb32960Properties.Tls cfg) throws Exception { + if (cfg.getCertPath() == null || cfg.getKeyPath() == null) { + throw new IllegalStateException("TLS enabled but cert-path/key-path not configured"); + } + SslContextBuilder builder = SslContextBuilder.forServer( + openPem(cfg.getCertPath()), + openPem(cfg.getKeyPath())); + if (cfg.getTrustCertPath() != null && !cfg.getTrustCertPath().isBlank()) { + try (InputStream trust = openPem(cfg.getTrustCertPath())) { + builder.trustManager(trust); + } + } + builder.clientAuth(cfg.isRequireClientAuth() ? ClientAuth.REQUIRE : ClientAuth.OPTIONAL); + return builder.build(); + } + + /** 读取 PEM 文件,支持 file:// 绝对路径或相对路径。 */ + private static InputStream openPem(String path) throws Exception { + String stripped = path.startsWith("file://") ? path.substring("file://".length()) : path; + File f = new File(stripped); + if (!f.isAbsolute()) { + f = Paths.get(System.getProperty("user.dir"), stripped).toFile(); + } + if (!f.exists()) { + throw new IllegalStateException("TLS PEM not found: " + f.getAbsolutePath()); + } + return Files.newInputStream(f.toPath()); + } + + @Override + public void destroy() { + try { + if (serverChannel != null) serverChannel.close().sync(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } finally { + if (boss != null) boss.shutdownGracefully(); + if (workers != null) workers.shutdownGracefully(); + log.info("[gb32960] Netty server stopped"); + } + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/mapper/Gb32960EventMapper.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/mapper/Gb32960EventMapper.java new file mode 100644 index 00000000..ce1a0a65 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/mapper/Gb32960EventMapper.java @@ -0,0 +1,235 @@ +package com.lingniu.ingest.protocol.gb32960.mapper; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.event.AlarmPayload; +import com.lingniu.ingest.api.event.LocationPayload; +import com.lingniu.ingest.api.event.RealtimePayload; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.spi.EventMapper; +import com.lingniu.ingest.protocol.gb32960.model.CommandBody; +import com.lingniu.ingest.protocol.gb32960.model.CommandType; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Message; +import com.lingniu.ingest.protocol.gb32960.model.GeneralAlarmFlagBit; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +/** + * 32960 → 领域事件 Adapter。 + * + *

    实时/补发上报产出 {@code Realtime + Location}(可选)+ {@code Alarm}(可选); + * 车辆登入/登出/心跳产出对应的会话事件。 + */ +public final class Gb32960EventMapper implements EventMapper { + + @Override + public List toEvents(Gb32960Message message) { + var header = message.header(); + Instant eventTime = header.eventTime() != null ? header.eventTime() : Instant.now(); + Instant ingestTime = Instant.now(); + + List out = new ArrayList<>(3); + Map baseMeta = Map.of( + "command", header.command().name(), + "protocolVersion", header.protocolVersion().name()); + + CommandType cmd = header.command(); + if (cmd == CommandType.REALTIME_REPORT || cmd == CommandType.RESEND_REPORT) { + buildRealtime(message, header, baseMeta, eventTime, ingestTime, out); + return out; + } + if (cmd == CommandType.VEHICLE_LOGIN) { + String iccid = ""; + if (message.commandBody() instanceof CommandBody.VehicleLogin vl) iccid = vl.iccid(); + out.add(new VehicleEvent.Login( + UUID.randomUUID().toString(), + header.vin(), ProtocolId.GB32960, eventTime, ingestTime, + null, baseMeta, iccid, header.protocolVersion().name())); + } else if (cmd == CommandType.VEHICLE_LOGOUT) { + out.add(new VehicleEvent.Logout( + UUID.randomUUID().toString(), + header.vin(), ProtocolId.GB32960, eventTime, ingestTime, + null, baseMeta)); + } else if (cmd == CommandType.HEARTBEAT) { + out.add(new VehicleEvent.Heartbeat( + UUID.randomUUID().toString(), + header.vin(), ProtocolId.GB32960, eventTime, ingestTime, + null, baseMeta)); + } else if (cmd == CommandType.PLATFORM_LOGIN) { + // 平台登入 0x05:映射为 VehicleEvent.Login + metadata.kind=platform。 + // 使用 "platform:" + username 作为 vin 字段,既能送到 vehicle.session topic + // 下游消费者又能靠 metadata.kind 区分车辆/平台登入。 + if (message.commandBody() instanceof CommandBody.PlatformLogin pl) { + Map meta = new java.util.HashMap<>(baseMeta); + meta.put("kind", "platform"); + meta.put("username", pl.username() == null ? "" : pl.username()); + meta.put("encryptRule", pl.encryptRule() == null ? "" : pl.encryptRule().name()); + meta.put("serial", String.valueOf(pl.serialNo())); + out.add(new VehicleEvent.Login( + UUID.randomUUID().toString(), + "platform:" + (pl.username() == null ? "" : pl.username()), + ProtocolId.GB32960, + pl.loginTime() != null ? pl.loginTime() : eventTime, + ingestTime, + null, meta, "", header.protocolVersion().name())); + } + } else if (cmd == CommandType.PLATFORM_LOGOUT) { + if (message.commandBody() instanceof CommandBody.PlatformLogout plo) { + Map meta = new java.util.HashMap<>(baseMeta); + meta.put("kind", "platform"); + meta.put("serial", String.valueOf(plo.serialNo())); + out.add(new VehicleEvent.Logout( + UUID.randomUUID().toString(), + "platform:unknown", + ProtocolId.GB32960, + plo.logoutTime() != null ? plo.logoutTime() : eventTime, + ingestTime, + null, meta)); + } + } + return out; + } + + private void buildRealtime(Gb32960Message message, + com.lingniu.ingest.protocol.gb32960.model.Gb32960Header header, + Map meta, + Instant eventTime, Instant ingestTime, + List out) { + InfoBlock.Vehicle v = message.findBlock(InfoBlock.Vehicle.class).orElse(null); + InfoBlock.Position p = message.findBlock(InfoBlock.Position.class).orElse(null); + InfoBlock.FuelCellV2016 fc16 = message.findBlock(InfoBlock.FuelCellV2016.class).orElse(null); + InfoBlock.FuelCellV2025 fc25 = message.findBlock(InfoBlock.FuelCellV2025.class).orElse(null); + InfoBlock.Alarm alarm = message.findBlock(InfoBlock.Alarm.class).orElse(null); + + if (v != null) { + Double fcVoltageV = fc16 != null ? fc16.fcVoltageV() : null; + Double fcCurrentA = fc16 != null ? fc16.fcCurrentA() : null; + Double fcTempC = fc16 != null ? fc16.maxHydrogenSystemTempC() + : (fc25 != null ? fc25.maxHydrogenSystemTempC() : null); + Double hydrogenHighPressure = fc16 != null ? fc16.maxHydrogenPressureMpa() + : (fc25 != null ? fc25.maxHydrogenPressureMpa() : null); + Double hydrogenRemaining = fc25 != null && fc25.remainingHydrogenPercent() != null + ? fc25.remainingHydrogenPercent().doubleValue() : null; + + RealtimePayload payload = new RealtimePayload( + v.speedKmh(), + v.totalMileageKm(), + v.socPercent() != null ? v.socPercent().doubleValue() : null, + v.totalVoltageV(), + v.totalCurrentA(), + fcVoltageV, + fcCurrentA, + fcTempC, + hydrogenRemaining, + hydrogenHighPressure, + null, + mapVehicleState(v.vehicleState()), + mapChargingState(v.chargingState()), + mapRunningMode(v.runningMode()), + extractGearLevel(v.gearRaw()), + v.acceleratorPedal() != null ? v.acceleratorPedal().doubleValue() : null, + v.brakePedal() != null ? v.brakePedal().doubleValue() : null, + p != null ? p.longitude() : null, + p != null ? p.latitude() : null, + null, + null, + null, + null); + out.add(new VehicleEvent.Realtime( + UUID.randomUUID().toString(), + header.vin(), ProtocolId.GB32960, eventTime, ingestTime, + null, meta, payload)); + } + if (p != null) { + LocationPayload loc = new LocationPayload( + p.longitude(), p.latitude(), 0.0, + v != null && v.speedKmh() != null ? v.speedKmh() : 0.0, + 0.0, 0, p.statusFlag()); + out.add(new VehicleEvent.Location( + UUID.randomUUID().toString(), + header.vin(), ProtocolId.GB32960, eventTime, ingestTime, + null, meta, loc)); + } + if (alarm != null && alarm.maxLevel() != null && alarm.maxLevel() > 0) { + List faultCodes = new ArrayList<>(); + addFaultCodes(faultCodes, "BAT", alarm.batteryFaults()); + addFaultCodes(faultCodes, "MOT", alarm.motorFaults()); + addFaultCodes(faultCodes, "ENG", alarm.engineFaults()); + addFaultCodes(faultCodes, "OTH", alarm.otherFaults()); + Set activeBits = GeneralAlarmFlagBit.parse(alarm.generalAlarmFlag()).stream() + .map(Enum::name) + .collect(Collectors.toCollection(java.util.LinkedHashSet::new)); + AlarmPayload ap = new AlarmPayload( + mapAlarmLevel(alarm.maxLevel()), + (int) (alarm.generalAlarmFlag() & 0xFFFF), + "GB32960_ALARM", + faultCodes, + activeBits, + p != null ? p.longitude() : null, + p != null ? p.latitude() : null); + out.add(new VehicleEvent.Alarm( + UUID.randomUUID().toString(), + header.vin(), ProtocolId.GB32960, eventTime, ingestTime, + null, meta, ap)); + } + } + + /** 挡位字节按附录 A.1 解析:低 4 位为挡位值 0000-1111。 */ + private static Integer extractGearLevel(Integer gearRaw) { + if (gearRaw == null) return null; + if ((gearRaw & 0x80) != 0) return null; // bit7: 挡位无效 + return gearRaw & 0x0F; + } + + private static RealtimePayload.VehicleState mapVehicleState(Integer code) { + if (code == null) return null; + return switch (code) { + case 0x01 -> RealtimePayload.VehicleState.STARTED; + case 0x02 -> RealtimePayload.VehicleState.SHUTDOWN; + case 0x03 -> RealtimePayload.VehicleState.OTHER; + default -> RealtimePayload.VehicleState.INVALID; + }; + } + + private static RealtimePayload.ChargingState mapChargingState(Integer code) { + if (code == null) return null; + return switch (code) { + case 0x01 -> RealtimePayload.ChargingState.PARKED_CHARGING; + case 0x02 -> RealtimePayload.ChargingState.DRIVING_CHARGING; + case 0x03 -> RealtimePayload.ChargingState.UNCHARGED; + case 0x04 -> RealtimePayload.ChargingState.CHARGED; + default -> RealtimePayload.ChargingState.INVALID; + }; + } + + private static RealtimePayload.RunningMode mapRunningMode(Integer code) { + if (code == null) return null; + return switch (code) { + case 0x01 -> RealtimePayload.RunningMode.ELECTRIC; + case 0x02 -> RealtimePayload.RunningMode.HYBRID; + case 0x03 -> RealtimePayload.RunningMode.FUEL; + default -> RealtimePayload.RunningMode.INVALID; + }; + } + + private static AlarmPayload.AlarmLevel mapAlarmLevel(int code) { + return switch (code) { + case 1 -> AlarmPayload.AlarmLevel.MINOR; + case 2 -> AlarmPayload.AlarmLevel.MAJOR; + case 3, 4 -> AlarmPayload.AlarmLevel.CRITICAL; + default -> AlarmPayload.AlarmLevel.INFO; + }; + } + + private static void addFaultCodes(List out, String prefix, List codes) { + if (codes == null || codes.isEmpty()) return; + for (Long c : codes) out.add(prefix + "-" + Long.toHexString(c)); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/CommandBody.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/CommandBody.java new file mode 100644 index 00000000..ca80804f --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/CommandBody.java @@ -0,0 +1,225 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +import java.time.Instant; +import java.util.List; +import java.util.Map; + +/** + * 命令数据单元(非实时上报)。sealed 集合;每个子类型对应一条 {@link CommandType}。 + * + *

    实时/补发上报的数据单元不走这里,而是产出 {@link InfoBlock} 列表。 + * + *

    上行类型(由车载终端发起):VehicleLogin/VehicleLogout/PlatformLogin/PlatformLogout/ + * Heartbeat/TimeCalibration/Activation/KeyExchange。 + * + *

    下行类型(由平台发起):QueryParams/SetParams/TerminalControl/ActivationResponse。 + * 参见 GB/T 32960.3-2025 附录 B 表 B.5~B.13。 + */ +public sealed interface CommandBody + permits CommandBody.VehicleLogin, + CommandBody.VehicleLogout, + CommandBody.PlatformLogin, + CommandBody.PlatformLogout, + CommandBody.Heartbeat, + CommandBody.TimeCalibration, + CommandBody.Activation, + CommandBody.ActivationResponse, + CommandBody.KeyExchange, + CommandBody.QueryParams, + CommandBody.QueryParamsResponse, + CommandBody.SetParams, + CommandBody.TerminalControl, + CommandBody.RawCommand { + + /** + * 车辆登入 0x01(表 6)。 + * + * @param loginTime 数据采集时间(表 5) + * @param serialNo 登入流水号 1~65531,按天循环累加 + * @param iccid 20 字节 SIM 卡 ICCID,终端从 SIM 卡获取 + * @param batterySystemCount 电池管理系统数 n (0~20,2025 版新增) + * @param batteryPackCounts 每个电池管理系统对应的动力蓄电池包个数 + * @param batteryCodes 动力蓄电池包编码列表(GB/T 34014,24 字节/个) + */ + record VehicleLogin( + Instant loginTime, + int serialNo, + String iccid, + int batterySystemCount, + List batteryPackCounts, + List batteryCodes + ) implements CommandBody {} + + /** 车辆登出 0x04(表 28)。 */ + record VehicleLogout(Instant logoutTime, int serialNo) implements CommandBody {} + + /** 平台登入 0x05(表 29)。 */ + record PlatformLogin( + Instant loginTime, + int serialNo, + String username, + String password, + EncryptType encryptRule + ) implements CommandBody {} + + /** 平台登出 0x06(表 30)。 */ + record PlatformLogout(Instant logoutTime, int serialNo) implements CommandBody {} + + /** 心跳 0x07:数据单元为空(B.3.5.10)。 */ + record Heartbeat() implements CommandBody {} + + /** 终端校时 0x08:信息标志及信息体为空(B.3.5.11)。 */ + record TimeCalibration() implements CommandBody {} + + /** 激活 0x09(表 B.3)。 */ + record Activation( + Instant collectTime, + String chipId, + byte[] publicKey, + String vin, + byte[] signature + ) implements CommandBody {} + + /** 激活结果应答 0x0A(表 B.4)。 */ + record ActivationResponse(int status, int info) implements CommandBody {} + + /** + * 数据单元加密密钥交换 0x0B(表 31)。 + * + * @param keyType 密钥类型({@link EncryptType}) + * @param key 密钥字节 + * @param activateAt 启用时间 + * @param expireAt 失效时间 + */ + record KeyExchange( + EncryptType keyType, + byte[] key, + Instant activateAt, + Instant expireAt + ) implements CommandBody {} + + // ======================================================================== + // 下行命令 0x80 / 0x81 / 0x82 —— 附录 B 表 B.5 ~ B.13 + // ======================================================================== + + /** + * 查询命令 0x80(表 B.5)。平台向车载终端发送,请求查询指定参数。 + * + * @param queryTime 参数查询时间 + * @param paramIds 待查询的参数 ID 列表(表 B.8:0x01-0x10,2025 版新增 0x0D-0x10) + */ + record QueryParams(Instant queryTime, List paramIds) implements CommandBody {} + + /** + * 参数查询返回 0x80 应答(表 B.6/B.7/B.8)。车载终端响应平台。 + * + * @param respondTime 返回查询参数时间 + * @param params 参数项键值对(key = paramId,value = bytes,需按表 B.8 解释) + */ + record QueryParamsResponse(Instant respondTime, Map params) implements CommandBody {} + + /** + * 设置命令 0x81(表 B.9)。平台向车载终端发送,修改车载终端参数。 + * + *

    参数 ID 范围见表 B.8,参数值定义见表 B.8 各字段说明。 + * 其中 0x07 硬件版本、0x08 固件版本为只读,不在 set 命令中出现。 + * + * @param setTime 参数设置时间 + * @param params 参数项键值对 + */ + record SetParams(Instant setTime, Map params) implements CommandBody {} + + /** + * 车载终端控制命令 0x82(表 B.10)。 + * + * @param time 时间 + * @param commandId 控制命令({@link ControlCommand}) + * @param payload 根据不同控制命令的负载 + */ + record TerminalControl( + Instant time, + ControlCommand commandId, + ControlPayload payload + ) implements CommandBody {} + + /** 控制命令枚举(表 B.11)。 */ + enum ControlCommand { + /** 0x01:远程升级,参数见表 B.12。 */ + REMOTE_UPGRADE(0x01), + /** 0x02:车载终端关机。 */ + SHUTDOWN(0x02), + /** 0x03:车载终端复位。 */ + RESET(0x03), + /** 0x04:车载终端恢复出厂设置。 */ + FACTORY_RESET(0x04), + /** 0x05:断开数据通信链路。 */ + DISCONNECT(0x05), + /** 0x06:车载终端报警/预警,参数见表 B.13。 */ + ALARM_COMMAND(0x06), + /** 0x07:开启抽样监测链路。 */ + SAMPLING_LINK_ON(0x07), + /** 未知命令 / 用户自定义 0x80-0xFE。 */ + UNKNOWN(-1); + + private final int code; + ControlCommand(int code) { this.code = code; } + public int code() { return code; } + + public static ControlCommand of(int code) { + for (ControlCommand c : values()) if (c.code == code) return c; + return UNKNOWN; + } + } + + /** 控制命令的负载。sealed:每种控制命令对应一种 payload 类型。 */ + sealed interface ControlPayload + permits ControlPayload.None, ControlPayload.RemoteUpgrade, ControlPayload.AlarmCommand, ControlPayload.RawPayload { + + /** 无参数(SHUTDOWN / RESET / FACTORY_RESET / DISCONNECT / SAMPLING_LINK_ON)。 */ + record None() implements ControlPayload {} + + /** + * 远程升级参数(表 B.12)。 + * + * @param apn 拨号点名称 + * @param dialUser 拨号用户名 + * @param dialPassword 拨号密码 + * @param serverAddress 升级服务器地址(IP 或域名,IPv4 时前 2 字节为 0) + * @param serverPort 升级服务器端口 + * @param manufacturerCode 车载终端制造商 ID(4 字节英文大写字母或数字) + * @param hardwareVersion 硬件版本(5 字节) + * @param firmwareVersion 固件版本(5 字节) + * @param upgradeUrl 升级 URL 地址(建议 FTP) + * @param connectTimeoutMinutes 连接到升级服务器时限(0~60000 分钟) + */ + record RemoteUpgrade( + String apn, + String dialUser, + String dialPassword, + byte[] serverAddress, + int serverPort, + String manufacturerCode, + String hardwareVersion, + String firmwareVersion, + String upgradeUrl, + int connectTimeoutMinutes + ) implements ControlPayload {} + + /** + * 报警/预警命令(表 B.13)。 + * + * @param warningLevel 警告等级:0x00 无报警 / 0x01-0x04 1-4 级报警 / 0xFF 无效 + * @param info 预留字节,可变长 + */ + record AlarmCommand(int warningLevel, byte[] info) implements ControlPayload {} + + /** 未解析的自定义 payload(0x80-0xFE 用户自定义等)。 */ + record RawPayload(byte[] bytes) implements ControlPayload {} + } + + /** + * 未解析或厂商自定义的命令体(0xC0~0xFE 等)。 + * 保留原始字节以便下游冷存分析。 + */ + record RawCommand(int commandCode, byte[] bytes) implements CommandBody {} +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/CommandType.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/CommandType.java new file mode 100644 index 00000000..0bcc3fb5 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/CommandType.java @@ -0,0 +1,60 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +/** + * 命令标识。GB/T 32960.3-2025 表 3 和附录 B 表 B.2 "命令标识定义"。 + * + *

    命令标识是发起方的唯一标识,区分数据传输的方向与种类。 + * + *

    方向约定: + *

      + *
    • 上行:车载终端 → 远程服务与管理平台 + *
    • 下行:远程服务与管理平台 → 车载终端 + *
    • 上行/下行:双向使用 + *
    + */ +public enum CommandType { + /** 0x01:车辆登入(上行)—— 见表 6。 */ + VEHICLE_LOGIN(0x01), + /** 0x02:实时信息上报(上行)—— 见表 7。 */ + REALTIME_REPORT(0x02), + /** 0x03:补发信息上报(上行)—— 数据格式与实时上报一致,用于通信链路恢复后补发 7d 内存储的数据。 */ + RESEND_REPORT(0x03), + /** 0x04:车辆登出(上行)—— 见表 28。 */ + VEHICLE_LOGOUT(0x04), + /** 0x05:平台登入(上行)—— 见表 29;2025 版附录 B.2 中 0x05/0x06 改为"平台传输数据占用,自定义"。 */ + PLATFORM_LOGIN(0x05), + /** 0x06:平台登出(上行)—— 见表 30。 */ + PLATFORM_LOGOUT(0x06), + /** 0x07:心跳(上行)—— 数据单元为空,见 B.3.5.10。 */ + HEARTBEAT(0x07), + /** 0x08:终端校时(上行)—— 信息标志及信息体为空,见 B.3.5.11。 */ + TIME_CALIBRATION(0x08), + /** 0x09:激活(上行)—— 见表 B.3。 */ + ACTIVATION(0x09), + /** 0x0A:激活应答(下行)—— 见表 B.4。 */ + ACTIVATION_RESPONSE(0x0A), + /** 0x0B:数据单元加密密钥交换(上行/下行)—— 见表 31。 */ + KEY_EXCHANGE(0x0B), + /** 0x80:查询命令(下行)—— 见表 B.5 ~ B.8。 */ + QUERY(0x80), + /** 0x81:设置命令(下行)—— 见表 B.9。 */ + SET_PARAMS(0x81), + /** 0x82:车载终端控制命令(下行)—— 见表 B.10 ~ B.13。 */ + TERMINAL_CONTROL(0x82); + + private final int code; + + CommandType(int code) { + this.code = code; + } + + public int code() { + return code; + } + + /** 按协议编码查找命令类型;未识别时抛异常以便 DLQ 路由。 */ + public static CommandType of(int code) { + for (CommandType c : values()) if (c.code == code) return c; + throw new IllegalArgumentException("unknown gb32960 command: 0x" + Integer.toHexString(code)); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/EncryptType.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/EncryptType.java new file mode 100644 index 00000000..769a0b5f --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/EncryptType.java @@ -0,0 +1,38 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +/** + * 数据单元加密方式。GB/T 32960.3-2025 表 2 "数据单元加密方式"。 + * + *

    当数据单元存在加密时,应先加密后校验,解析端先校验后解密。 + */ +public enum EncryptType { + /** 0x01:数据不加密。 */ + UNENCRYPTED(0x01), + /** 0x02:RSA 算法加密。 */ + RSA(0x02), + /** 0x03:AES(高级加密标准)算法加密。 */ + AES(0x03), + /** 0x04:SM2 算法加密(2025 版新增)。 */ + SM2(0x04), + /** 0x05:SM4 算法加密(2025 版新增)。 */ + SM4(0x05), + /** 0xFE:异常。 */ + ABNORMAL(0xFE), + /** 0xFF:无效。 */ + INVALID(0xFF); + + private final int code; + + EncryptType(int code) { + this.code = code; + } + + public int code() { + return code; + } + + public static EncryptType of(int code) { + for (EncryptType e : values()) if (e.code == code) return e; + return INVALID; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/Gb32960Header.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/Gb32960Header.java new file mode 100644 index 00000000..765e2880 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/Gb32960Header.java @@ -0,0 +1,36 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +import java.time.Instant; + +/** + * GB/T 32960.3 数据包报文头(含起始符/命令单元/VIN/加密方式/数据长度),见表 2 / 表 B.1。 + * + *

    完整数据包结构: + *

    + *   起始符 (2B)            ## (0x23 0x23) 或 $$ (0x24 0x24)
    + *   命令标识 (1B)          CommandType
    + *   应答标志 (1B)          ResponseFlag
    + *   唯一识别码 (17B STRING) VIN 或自定义编码
    + *   数据单元加密方式 (1B)   EncryptType
    + *   数据单元长度 (2B WORD)  0 ~ 65531
    + *   数据单元 (NB)          见 §7
    + *   校验码 (1B BCC)        对命令单元到数据单元结尾异或
    + * 
    + * + * @param protocolVersion 协议版本,由起始符推断 + * @param command 命令标识(表 3 / B.2) + * @param responseFlag 应答标志(表 4) + * @param vin 唯一识别码(17 字节 ASCII) + * @param encryptType 数据单元加密方式(表 2) + * @param dataLength 数据单元长度(字节) + * @param eventTime 数据采集时间。仅实时/补发上报携带,其它命令为 null + */ +public record Gb32960Header( + ProtocolVersion protocolVersion, + CommandType command, + ResponseFlag responseFlag, + String vin, + EncryptType encryptType, + int dataLength, + Instant eventTime +) {} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/Gb32960Message.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/Gb32960Message.java new file mode 100644 index 00000000..39ace8d5 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/Gb32960Message.java @@ -0,0 +1,43 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +/** + * 完整解析后的 32960 消息。一条消息要么是实时/补发上报(携带 {@link InfoBlock} 列表), + * 要么是登入/登出/平台/心跳/校时/激活/密钥交换等命令(携带 {@link CommandBody}), + * 二者互斥。 + * + * @param header 报文头 + * @param infoBlocks 实时/补发上报的信息体列表;其他命令为空列表 + * @param commandBody 非实时上报的命令数据单元;实时/补发上报为 null + * @param signature 实时上报尾部的签名原始字节(2025 版新增,2016 版为 null) + */ +public record Gb32960Message( + Gb32960Header header, + List infoBlocks, + CommandBody commandBody, + byte[] signature +) { + + /** 便捷构造:只含信息体(实时/补发上报,2016 版常用)。 */ + public Gb32960Message(Gb32960Header header, List infoBlocks) { + this(header, infoBlocks == null ? Collections.emptyList() : infoBlocks, null, null); + } + + /** 便捷构造:非实时命令。 */ + public Gb32960Message(Gb32960Header header, CommandBody commandBody) { + this(header, Collections.emptyList(), commandBody, null); + } + + public boolean isReport() { + return header.command() == CommandType.REALTIME_REPORT + || header.command() == CommandType.RESEND_REPORT; + } + + @SuppressWarnings("unchecked") + public Optional findBlock(Class type) { + return (Optional) infoBlocks.stream().filter(type::isInstance).findFirst(); + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/GeneralAlarmFlagBit.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/GeneralAlarmFlagBit.java new file mode 100644 index 00000000..0843becd --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/GeneralAlarmFlagBit.java @@ -0,0 +1,104 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.List; +import java.util.Set; + +/** + * 通用报警标志位定义(GB/T 32960.3-2025 表 24)。4 字节 32 位位图中的每个位对应一种报警, + * 2025 版将 2016 版 bit0-15 扩展到 bit0-27,新增了热事件、氢系统、超级电容等位定义。 + * + *

    "1" 表示报警,"0" 表示正常;标志维持到报警条件解除。 + */ +public enum GeneralAlarmFlagBit { + /** bit0:温度差异报警 */ + TEMP_DIFFERENCE(0), + /** bit1:电池高温报警 */ + BATTERY_HIGH_TEMP(1), + /** bit2:车载储能装置类型过压报警 */ + STORAGE_OVER_VOLTAGE(2), + /** bit3:车载储能装置类型欠压报警 */ + STORAGE_UNDER_VOLTAGE(3), + /** bit4:SOC 低报警 */ + SOC_LOW(4), + /** bit5:最小并联单元过压报警 */ + MIN_PARALLEL_UNIT_OVER_VOLTAGE(5), + /** bit6:最小并联单元欠压报警 */ + MIN_PARALLEL_UNIT_UNDER_VOLTAGE(6), + /** bit7:SOC 过高报警 */ + SOC_HIGH(7), + /** bit8:SOC 跳变报警 */ + SOC_JUMP(8), + /** bit9:可充电储能系统不匹配报警 */ + STORAGE_MISMATCH(9), + /** bit10:最小并联单元一致性差报警 */ + MIN_PARALLEL_UNIT_INCONSISTENT(10), + /** bit11:绝缘电阻失效报警 */ + INSULATION_FAILURE(11), + /** bit12:DC-DC 温度报警 */ + DCDC_TEMP(12), + /** bit13:制动系统报警 */ + BRAKE_SYSTEM(13), + /** bit14:DC-DC 状态报警 */ + DCDC_STATUS(14), + /** bit15:驱动电机控制器温度报警 */ + MOTOR_CONTROLLER_TEMP(15), + /** bit16:高压互锁状态报警 */ + HV_INTERLOCK(16), + /** bit17:驱动电机温度报警 */ + MOTOR_TEMP(17), + /** bit18:车载储能装置类型过充报警 */ + STORAGE_OVER_CHARGE(18), + /** bit19:驱动电机超速报警(2025 版新增) */ + MOTOR_OVER_SPEED(19), + /** bit20:驱动电机过流报警(2025 版新增) */ + MOTOR_OVER_CURRENT(20), + /** bit21:超级电容过温报警(2025 版新增) */ + SUPER_CAP_OVER_TEMP(21), + /** bit22:超级电容过压报警(2025 版新增) */ + SUPER_CAP_OVER_VOLTAGE(22), + /** bit23:可充电储能装置热事件报警(2025 版新增,出现即为 4 级故障) */ + STORAGE_THERMAL_EVENT(23), + /** bit24:氢气泄漏异常报警(2025 版新增) */ + HYDROGEN_LEAK(24), + /** bit25:车载氢系统压力异常报警(2025 版新增) */ + HYDROGEN_PRESSURE_ABNORMAL(25), + /** bit26:车载氢系统温度异常报警(2025 版新增) */ + HYDROGEN_TEMP_ABNORMAL(26), + /** bit27:燃料电池电堆超温报警(2025 版新增) */ + FUEL_CELL_STACK_OVER_TEMP(27); + + private final int bitIndex; + + GeneralAlarmFlagBit(int bitIndex) { + this.bitIndex = bitIndex; + } + + public int bitIndex() { + return bitIndex; + } + + /** 当前位是否在 flag 中置位。 */ + public boolean isSet(long flag) { + return (flag & (1L << bitIndex)) != 0; + } + + /** 从 32 位标志解出所有置位的报警。 */ + public static Set parse(long flag) { + EnumSet out = EnumSet.noneOf(GeneralAlarmFlagBit.class); + for (GeneralAlarmFlagBit bit : values()) { + if (bit.isSet(flag)) out.add(bit); + } + return out; + } + + /** 作为可读 fault code 列表(形如 {@code SOC_LOW, MOTOR_TEMP})。 */ + public static List asCodeList(long flag) { + List out = new ArrayList<>(); + for (GeneralAlarmFlagBit bit : values()) { + if (bit.isSet(flag)) out.add(bit.name()); + } + return out; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/InfoBlock.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/InfoBlock.java new file mode 100644 index 00000000..0660f48b --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/InfoBlock.java @@ -0,0 +1,417 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +import java.util.List; + +/** + * 已解析的信息体基接口。每种语义对应一种 record 实现。 + * + *

    规范来源:GB/T 32960.3-2016 附录 B 表 B.10-B.17,GB/T 32960.3-2025 §7.2.4 表 10-27。 + * 字段命名使用规范中的中文直译以便对照查阅。 + * + *

    异常值约定: + *

      + *
    • 单字节:{@code 0xFE} 异常、{@code 0xFF} 无效 + *
    • 双字节:{@code 0xFFFE} 异常、{@code 0xFFFF} 无效 + *
    • 四字节:{@code 0xFFFFFFFE} 异常、{@code 0xFFFFFFFF} 无效 + *
    + * 对外 record 使用 {@link Double}/{@link Integer} 等装箱类型,异常或无效时设为 {@code null}。 + */ +public sealed interface InfoBlock + permits InfoBlock.Vehicle, + InfoBlock.DriveMotor, + InfoBlock.FuelCellV2016, + InfoBlock.FuelCellV2025, + InfoBlock.Engine, + InfoBlock.Position, + InfoBlock.Extreme, + InfoBlock.Alarm, + InfoBlock.Voltage, + InfoBlock.Temperature, + InfoBlock.MinParallelVoltage, + InfoBlock.BatteryTemperature, + InfoBlock.FuelCellStack, + InfoBlock.SuperCapacitor, + InfoBlock.SuperCapacitorExtreme, + InfoBlock.Raw { + + InfoBlockType type(); + + // ======================================================================== + // 0x01 整车数据 —— 2016/2025 共享(表 10) + // ======================================================================== + + /** + * 整车数据。固定 21 字节(2025 版)/ 20 字节(2016 版,无 brake)。 + * + * @param vehicleState 车辆状态:0x01 启动 / 0x02 熄火 / 0x03 其他 + * @param chargingState 充电状态:0x01 停车充电 / 0x02 行驶充电 / 0x03 未充电 / 0x04 充电完成 + * @param runningMode 运行模式:0x01 纯电 / 0x02 混动 / 0x03 燃油 + * @param speedKmh 车速 km/h,0~500,最小计量 0.1 km/h + * @param totalMileageKm 累计里程 km,0~999999.9,最小计量 0.1 km + * @param totalVoltageV 总电压 V,0~6000,最小计量 0.1 V + * @param totalCurrentA 总电流 A,-3000~+3000(原始值偏移 3000 A),最小计量 0.1 A + * @param socPercent SOC 百分比,0~100 + * @param dcDcStatus DC-DC 状态:0x01 工作 / 0x02 断开 + * @param gearRaw 挡位原始字节,按附录 A.1 解析 + * @param insulationResistanceKohm 高压对地绝缘电阻 kΩ,0~60000 + * @param acceleratorPedal 加速踏板行程值 0~100(仅 2016 版) + * @param brakePedal 制动踏板状态 0~100(仅 2016 版) + */ + record Vehicle( + Integer vehicleState, + Integer chargingState, + Integer runningMode, + Double speedKmh, + Double totalMileageKm, + Double totalVoltageV, + Double totalCurrentA, + Integer socPercent, + Integer dcDcStatus, + Integer gearRaw, + Integer insulationResistanceKohm, + Integer acceleratorPedal, + Integer brakePedal + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.VEHICLE; } + } + + // ======================================================================== + // 0x02 驱动电机数据 —— 表 15/16 + // ======================================================================== + + /** 驱动电机数据。变长:1 字节电机个数 + N × 电机信息。 */ + record DriveMotor(List motors) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.DRIVE_MOTOR; } + + /** + * 单个驱动电机数据。 + * + *

    2016 版字段大小(表 B.16):转速 2 字节偏移 20000,转矩 2 字节偏移 20000 单位 0.1 N·m,共 12 字节。 + *

    2025 版字段大小(表 16):转速 2 字节偏移 32000,转矩 4 字节偏移 20000 N·m 单位 0.1 N·m,共 14 字节。 + * + * @param serialNo 电机顺序号 1~253 + * @param state 电机状态:0x01 耗电 / 0x02 发电 / 0x03 关闭 / 0x04 准备 + * @param controllerTempC 电机控制器温度 ℃,-40~+210 + * @param rpm 电机转速 r/min + * @param torqueNm 电机转矩 N·m,最小计量 0.1 N·m + * @param motorTempC 电机温度 ℃,-40~+210 + * @param controllerInputVoltageV 电机控制器输入电压 V,0~6000,最小计量 0.1 V + * @param controllerDcCurrentA 电机控制器直流母线电流 A,-1000~+5000,最小计量 0.1 A + */ + public record Motor( + Integer serialNo, + Integer state, + Integer controllerTempC, + Integer rpm, + Double torqueNm, + Integer motorTempC, + Double controllerInputVoltageV, + Double controllerDcCurrentA + ) {} + } + + // ======================================================================== + // 0x03 燃料电池数据(2016 版) + // ======================================================================== + + /** + * 燃料电池数据(2016 版)。变长。 + * + *

    2016 版字段顺序:燃料电池电压(2) + 电流(2) + 氢气消耗率(2) + 探针数(2) + * + N×探针温度(1) + 最高温度(2) + 最高温度探针代号(1) + 最高浓度(2) + 最高浓度代号(1) + * + 最高压力(2) + 最高压力代号(1) + DCDC 状态(1)。 + */ + record FuelCellV2016( + Double fcVoltageV, + Double fcCurrentA, + Double hydrogenConsumptionKgPer100km, + List probeTempC, + Double maxHydrogenSystemTempC, + Integer maxHydrogenSystemTempProbeId, + Double maxHydrogenConcentrationPercent, + Integer maxHydrogenConcentrationProbeId, + Double maxHydrogenPressureMpa, + Integer maxHydrogenPressureProbeId, + Integer hvDcDcStatus + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.FUEL_CELL_V2016; } + } + + // ======================================================================== + // 0x03 燃料电池发动机及车载氢系统数据(2025 版,表 17) + // ======================================================================== + + /** + * 燃料电池发动机及车载氢系统数据(2025 版)。固定 13 字节。 + * + *

    较 2016 版的差异(见 2025 规范前言 o): + *

      + *
    • 删除:燃料电池电压、燃料电池电流、氢气消耗率、温度探针列表 + *
    • 新增:剩余氢量百分比、高压 DC/DC 控制器温度 + *
    • 温度探针数据迁移至 0x30 燃料电池电堆 + *
    + */ + record FuelCellV2025( + Double maxHydrogenSystemTempC, + Integer maxHydrogenSystemTempProbeId, + Double maxHydrogenConcentrationPercent, + Integer maxHydrogenConcentrationProbeId, + Double maxHydrogenPressureMpa, + Integer maxHydrogenPressureProbeId, + Integer hvDcDcStatus, + Integer remainingHydrogenPercent, + Integer hvDcDcControllerTempC + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.FUEL_CELL_V2025; } + } + + // ======================================================================== + // 0x04 发动机数据 —— 表 20 + // ======================================================================== + + /** + * 发动机数据。固定 5 字节。 + * + * @param engineState 发动机状态:0x01 启动 / 0x02 关闭 + * @param crankshaftRpm 曲轴转速 r/min,0~60000 + * @param fuelConsumptionRate 燃料消耗率 L/100km,0~600,最小计量 0.01 + */ + record Engine( + Integer engineState, + Integer crankshaftRpm, + Double fuelConsumptionRate + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.ENGINE; } + } + + // ======================================================================== + // 0x05 车辆位置数据 —— 表 21 + // ======================================================================== + + /** + * 车辆位置数据。 + * + *

    2016 版固定 9 字节:{@code 状态位(1) + 经度(4) + 纬度(4)}。 + *

    2025 版固定 10 字节:{@code 状态位(1) + 坐标系(1) + 经度(4) + 纬度(4)}。 + * + * @param statusFlag 状态位:bit0 0=有效/1=无效;bit1 0=北纬/1=南纬;bit2 0=东经/1=西经 + * @param coordSystem 坐标系(2025 新增):0x01 WGS84 / 0x02 GCJ-02 / 0x03 其他;2016 版为 null + * @param longitude 经度(十进制度) + * @param latitude 纬度(十进制度) + */ + record Position( + int statusFlag, + Integer coordSystem, + double longitude, + double latitude + ) implements InfoBlock { + @Override public InfoBlockType type() { + return coordSystem == null ? InfoBlockType.POSITION_V2016 : InfoBlockType.POSITION_V2025; + } + } + + // ======================================================================== + // 0x06 动力蓄电池极值数据 —— 仅 2016 版 + // ======================================================================== + + /** 动力蓄电池极值数据(2016 版)。固定 14 字节。2025 版已删除。 */ + record Extreme( + Integer maxCellVoltageSubSysNo, + Integer maxCellVoltageCellId, + Double maxCellVoltageV, + Integer minCellVoltageSubSysNo, + Integer minCellVoltageCellId, + Double minCellVoltageV, + Integer maxTempSubSysNo, + Integer maxTempProbeId, + Integer maxTempC, + Integer minTempSubSysNo, + Integer minTempProbeId, + Integer minTempC + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.EXTREME_V2016; } + } + + // ======================================================================== + // 报警数据 —— 2016 的 0x07 / 2025 的 0x06(表 23) + // ======================================================================== + + /** + * 报警数据。 + * + *

    2016 版 typeCode=0x07,2025 版 typeCode=0x06。前半部分(maxLevel + generalAlarmFlag + * + 4 类故障代码列表)一致,2025 版在尾部额外增加"通用报警故障等级列表"。 + * + * @param protocolVersion 协议版本,决定 typeCode 映射 + * @param maxLevel 最高报警等级 0~4(0 无故障;4 热事件为最高级) + * @param generalAlarmFlag 通用报警标志(表 24 的 28 个位) + * @param batteryFaults 可充电储能装置故障代码列表 + * @param motorFaults 驱动电机故障代码列表 + * @param engineFaults 发动机故障代码列表 + * @param otherFaults 其他故障代码列表 + * @param generalAlarmLevels 2025 新增:{bit, level} 列表;2016 版为 null 或空列表 + */ + record Alarm( + ProtocolVersion protocolVersion, + Integer maxLevel, + long generalAlarmFlag, + List batteryFaults, + List motorFaults, + List engineFaults, + List otherFaults, + List generalAlarmLevels + ) implements InfoBlock { + @Override public InfoBlockType type() { + return protocolVersion == ProtocolVersion.V2025 + ? InfoBlockType.ALARM_V2025 : InfoBlockType.ALARM_V2016; + } + + /** 2025 版通用报警故障等级列表项(2 字节):bit 对应表 24 位序号,level 为故障等级。 */ + public record GeneralAlarmEntry(int bit, int level) {} + } + + // ======================================================================== + // 2016 版 0x08 可充电储能装置电压数据 + // ======================================================================== + + /** 可充电储能装置电压数据(2016 版)。变长。PoC 仅保留汇总。 */ + record Voltage( + int subSystemCount, + double maxCellVoltageV, + double minCellVoltageV, + double totalVoltageV + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.VOLTAGE_V2016; } + } + + // ======================================================================== + // 2016 版 0x09 可充电储能装置温度数据 + // ======================================================================== + + /** 可充电储能装置温度数据(2016 版)。变长。 */ + record Temperature( + int subSystemCount, + int maxTempC, + int minTempC + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.TEMPERATURE_V2016; } + } + + // ======================================================================== + // 2025 版 0x07 动力蓄电池最小并联单元电压数据(表 11/12) + // ======================================================================== + + /** 动力蓄电池最小并联单元电压数据(2025 版)。变长。 */ + record MinParallelVoltage(int subSystemCount, List packs) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.MIN_PARALLEL_VOLTAGE_V2025; } + + /** + * @param packNo 电池包号 1~50 + * @param packVoltageV 动力蓄电池包电压 V,0~6000,最小 0.1 V + * @param packCurrentA 动力蓄电池包电流 A,-3000~+3000,最小 0.1 A + * @param totalUnits 最小并联单元总数 1~65531 + * @param frameVoltages 本帧最小并联单元电压列表,0~60 V,最小 0.001 V + */ + public record Pack( + int packNo, + Double packVoltageV, + Double packCurrentA, + int totalUnits, + List frameVoltages + ) {} + } + + // ======================================================================== + // 2025 版 0x08 动力蓄电池温度数据(表 13/14) + // ======================================================================== + + /** 动力蓄电池温度数据(2025 版)。变长。 */ + record BatteryTemperature(int subSystemCount, List packs) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.BATTERY_TEMPERATURE_V2025; } + + /** + * @param packNo 电池包号 1~50 + * @param probeCount 温度探针个数 1~65531 + * @param probeTempsC 各探针温度 ℃,-40~+210 + */ + public record Pack(int packNo, int probeCount, List probeTempsC) {} + } + + // ======================================================================== + // 2025 版 0x30 燃料电池电堆数据(表 18/19) + // ======================================================================== + + /** 燃料电池电堆数据(2025 版)。变长:1 字节电堆个数 + N × 电堆信息。 */ + record FuelCellStack(int stackCount, List stacks) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.FUEL_CELL_STACK; } + + /** + * @param stackNo 电堆数据序号 1~253 + * @param voltageV 燃料电池电堆电压 V,0~2000,最小 0.1 V + * @param currentA 燃料电池电堆电流 A,0~2000,最小 0.1 A + * @param hydrogenInletPressureKpa 氢气入口压力 kPa,-100~+400(偏移 100 kPa),最小 0.1 kPa + * @param airInletPressureKpa 空气入口压力 kPa,-100~+400,最小 0.1 kPa + * @param airInletTempC 空气入口温度 ℃,-40~+210 + * @param coolantOutletProbeTempsC 冷却水出水口温度探针温度列表 ℃ + */ + public record Stack( + int stackNo, + Double voltageV, + Double currentA, + Double hydrogenInletPressureKpa, + Double airInletPressureKpa, + Integer airInletTempC, + List coolantOutletProbeTempsC + ) {} + } + + // ======================================================================== + // 2025 版 0x31 超级电容器数据(表 25) + // ======================================================================== + + /** 超级电容器数据(2025 版)。变长。 */ + record SuperCapacitor( + int systemNo, + Double totalVoltageV, + Double totalCurrentA, + List cellVoltages, + List probeTempsC + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.SUPER_CAPACITOR; } + } + + // ======================================================================== + // 2025 版 0x32 超级电容器极值数据(表 26) + // ======================================================================== + + /** 超级电容器极值数据(2025 版)。固定 14 字节。 */ + record SuperCapacitorExtreme( + Integer maxVoltageSystemNo, + Integer maxVoltageCellId, + Double maxCellVoltageV, + Integer minVoltageSystemNo, + Integer minVoltageCellId, + Double minCellVoltageV, + Integer maxTempSystemNo, + Integer maxTempProbeId, + Integer maxTempC, + Integer minTempSystemNo, + Integer minTempProbeId, + Integer minTempC + ) implements InfoBlock { + @Override public InfoBlockType type() { return InfoBlockType.SUPER_CAPACITOR_EXTREME; } + } + + // ======================================================================== + // Raw / Unknown + // ======================================================================== + + /** + * 尚未实现 Parser 的原始信息体(含自定义 0x80~0xFE),保留字节透传到冷存。 + * + * @param typeCode 触发兜底时的真实信息体类型字节,便于诊断未知段或确认 parser 漂移落点 + * @param type 枚举形态,目前固定 {@link InfoBlockType#RAW}(保留字段为后续真正分类预留) + * @param bytes 自该未知 type 字节之后到 body 结尾的剩余原始字节 + */ + record Raw(int typeCode, InfoBlockType type, byte[] bytes) implements InfoBlock {} +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/InfoBlockType.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/InfoBlockType.java new file mode 100644 index 00000000..d9d1f0b8 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/InfoBlockType.java @@ -0,0 +1,49 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +/** + * 信息体语义类型(逻辑分类)。不与协议 typeCode 一一对应。 + * + *

    因为 2016 和 2025 的 typeCode 0x06/0x07/0x08/0x09 语义不同,本枚举按逻辑含义 + * 分类,而不是按 typeCode。真正的协议 typeCode 路由由 {@link com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser#typeCode()} + * 和 {@link com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParserRegistry} 负责。 + */ +public enum InfoBlockType { + /** 整车数据(表 10)。 */ + VEHICLE, + /** 驱动电机数据(表 15/16)。 */ + DRIVE_MOTOR, + /** 燃料电池数据(2016 版,带电压/电流/温度探针列表)。 */ + FUEL_CELL_V2016, + /** 燃料电池发动机及车载氢系统数据(2025 版,表 17)。 */ + FUEL_CELL_V2025, + /** 发动机数据(表 20)。 */ + ENGINE, + /** 车辆位置数据(2016 版,表 B.15)。 */ + POSITION_V2016, + /** 车辆位置数据(2025 版,表 21,带坐标系字段)。 */ + POSITION_V2025, + /** 动力蓄电池极值数据(2016 版,仅 2016 存在)。 */ + EXTREME_V2016, + /** 报警数据(2016 版)。 */ + ALARM_V2016, + /** 报警数据(2025 版,表 23,新增通用报警故障等级列表)。 */ + ALARM_V2025, + /** 可充电储能装置电压数据(2016 版)。 */ + VOLTAGE_V2016, + /** 可充电储能装置温度数据(2016 版)。 */ + TEMPERATURE_V2016, + /** 动力蓄电池最小并联单元电压数据(2025 版,表 11/12)。 */ + MIN_PARALLEL_VOLTAGE_V2025, + /** 动力蓄电池温度数据(2025 版,表 13/14)。 */ + BATTERY_TEMPERATURE_V2025, + /** 燃料电池电堆数据(2025 版,表 18/19)。 */ + FUEL_CELL_STACK, + /** 超级电容器数据(2025 版,表 25)。 */ + SUPER_CAPACITOR, + /** 超级电容器极值数据(2025 版,表 26)。 */ + SUPER_CAPACITOR_EXTREME, + /** 自定义数据 0x80~0xFE(表 27)。 */ + USER_DEFINED, + /** 原始/未解析。 */ + RAW +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/ProtocolVersion.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/ProtocolVersion.java new file mode 100644 index 00000000..12a304b8 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/ProtocolVersion.java @@ -0,0 +1,37 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +/** + * GB/T 32960.3 协议版本。 + * + *

    通过数据包起始符区分: + *

      + *
    • {@code ## (0x23 0x23)} → {@link #V2016} 对应 GB/T 32960.3-2016 + *
    • {@code $$ (0x24 0x24)} → {@link #V2025} 对应 GB/T 32960.3-2025 + *
    + * + *

    两版核心差异(GB/T 32960.3-2025 前言): + *

      + *
    • 信息类型 0x06/0x07/0x08 语义重构: + * + * + * + * + * + * + *
      类型20162025
      0x06动力蓄电池极值报警数据
      0x07报警数据动力蓄电池最小并联单元电压
      0x08可充电储能装置电压动力蓄电池温度
      0x09可充电储能装置温度(已删除,合入 0x08)
      + *
    • 新增 0x30 燃料电池电堆 / 0x31 超级电容 / 0x32 超级电容极值 + *
    • 0x05 位置数据新增 1 字节坐标系(表 21) + *
    • 0x03 燃料电池数据字段重构:拆分为"燃料电池发动机及车载氢系统" + * + 独立 0x30"燃料电池电堆"(表 17/18/19) + *
    • 驱动电机 0x02 转速偏移由 {@code 20000} 改为 {@code 32000},转矩由 2 字节扩展为 4 字节 + *
    • 实时上报数据单元尾部增加签名信息(以类型 {@code 0xFF} 标识,表 8) + *
    • 加密方式新增 {@code 0x04 SM2} / {@code 0x05 SM4} + *
    • 命令标识新增 {@code 0x07 心跳 / 0x08 校时 / 0x09 激活 / 0x0A 激活应答 / 0x0B 密钥交换} + *
    + */ +public enum ProtocolVersion { + /** GB/T 32960.3-2016。起始符 {@code 0x23 0x23 (##)}。 */ + V2016, + /** GB/T 32960.3-2025。起始符 {@code 0x24 0x24 ($$)}。 */ + V2025 +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/ResponseFlag.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/ResponseFlag.java new file mode 100644 index 00000000..e58845a1 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/ResponseFlag.java @@ -0,0 +1,46 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +/** + * 应答标志。GB/T 32960.3-2025 表 4 "应答标志定义"。 + * + *

    命令的主动发起方应答标志为 {@code 0xFE}({@link #COMMAND}),表示此包为命令包; + * 当应答标志不是 {@code 0xFE} 时,此包表示为应答包。服务端发送应答时,应变更应答标志, + * 保留报文时间,删除其余报文内容,并重新计算校验位。 + */ +public enum ResponseFlag { + /** 0x01:成功 —— 接收到的信息正确。 */ + SUCCESS(0x01), + /** 0x02:其他错误 —— 其他收到的信息存在格式及内容错误。 */ + OTHER_ERROR(0x02), + /** 0x03:VIN 重复。 */ + VIN_DUPLICATED(0x03), + /** 0x04:VIN 不存在(2025 版新增)。 */ + VIN_NOT_EXIST(0x04), + /** 0x05:验签错误(2025 版新增)。 */ + SIGNATURE_ERROR(0x05), + /** 0x06:数据结构错误(2025 版新增)。 */ + STRUCTURE_ERROR(0x06), + /** 0x07:解密错误(2025 版新增)。 */ + DECRYPT_ERROR(0x07), + /** 0xFE:命令 —— 表示数据包为命令包,而非应答包。 */ + COMMAND(0xFE); + + private final int code; + + ResponseFlag(int code) { + this.code = code; + } + + public int code() { + return code; + } + + public boolean isCommand() { + return this == COMMAND; + } + + public static ResponseFlag of(int code) { + for (ResponseFlag r : values()) if (r.code == code) return r; + return OTHER_ERROR; + } +} diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/SignatureInfo.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/SignatureInfo.java new file mode 100644 index 00000000..2b961ed0 --- /dev/null +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/model/SignatureInfo.java @@ -0,0 +1,66 @@ +package com.lingniu.ingest.protocol.gb32960.model; + +import java.nio.ByteBuffer; + +/** + * 实时信息的车端数字签名(GB/T 32960.3-2025 表 8)。 + * + *

    签名信息出现在实时上报数据单元的末尾,紧跟在信息体循环后,由 {@code 0xFF} + * 作为"签名数据开始标识"引出(见表 9)。签名范围:从数据采集时间的第一字节到签名 + * 信息前一个字节的数字签名。 + * + *

    表 8 字段: + *

    + *   signType(1)    签名类型:0x01 SM2 / 0x02 RSA / 0x03 ECC,其他预留
    + *   rLen(2 WORD)   签名 R 值长度
    + *   r(rLen)        签名 R 值
    + *   sLen(2 WORD)   签名 S 值长度
    + *   s(sLen)        签名 S 值
    + * 
    + */ +public record SignatureInfo(SignType signType, byte[] r, byte[] s) { + + public enum SignType { + /** 0x01:SM2 国密签名。 */ + SM2(0x01), + /** 0x02:RSA 签名。 */ + RSA(0x02), + /** 0x03:ECC 签名。 */ + ECC(0x03), + /** 其他预留。 */ + UNKNOWN(0xFF); + + private final int code; + SignType(int code) { this.code = code; } + public int code() { return code; } + + public static SignType of(int code) { + for (SignType t : values()) if (t.code == code) return t; + return UNKNOWN; + } + } + + /** + * 尝试解析签名字节。非法数据时返回 null 并保留原始字节由冷存分析。 + * + * @param bytes 签名原始字节(不含前缀的 0xFF 签名开始标识) + */ + public static SignatureInfo tryParse(byte[] bytes) { + if (bytes == null || bytes.length < 5) return null; + ByteBuffer buf = ByteBuffer.wrap(bytes); + try { + SignType type = SignType.of(buf.get() & 0xFF); + int rLen = buf.getShort() & 0xFFFF; + if (rLen > buf.remaining() - 2) return null; + byte[] r = new byte[rLen]; + buf.get(r); + int sLen = buf.getShort() & 0xFFFF; + if (sLen > buf.remaining()) return null; + byte[] s = new byte[sLen]; + buf.get(s); + return new SignatureInfo(type, r, s); + } catch (Exception e) { + return null; + } + } +} diff --git a/protocol-gb32960/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/protocol-gb32960/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..2a10e523 --- /dev/null +++ b/protocol-gb32960/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.protocol.gb32960.config.Gb32960AutoConfiguration diff --git a/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960DecoderGoldenTest.java b/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960DecoderGoldenTest.java new file mode 100644 index 00000000..fcbe1a52 --- /dev/null +++ b/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960DecoderGoldenTest.java @@ -0,0 +1,106 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.AlarmV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.DriveMotorV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.EngineV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.ExtremeValueV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.FuelCellV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.PositionV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.TemperatureV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VehicleV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VoltageV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Message; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 黄金样本集回放测试:遍历 {@code src/test/resources/samples/gb32960/*.hex}, + * 逐帧解码并断言命令类型来自 {@link com.lingniu.ingest.protocol.gb32960.model.CommandType} 有效值。 + * + *

    样本文件目前为空,该测试会优雅地跳过。加入样本后会自动变为 N 条动态用例。 + */ +class Gb32960DecoderGoldenTest { + + private final Gb32960MessageDecoder decoder = new Gb32960MessageDecoder( + new Gb32960BodyParser(new InfoBlockParserRegistry(List.of( + new VehicleV2016BlockParser(), + new PositionV2016BlockParser(), + new DriveMotorV2016BlockParser(), + new FuelCellV2016BlockParser(), + new EngineV2016BlockParser(), + new ExtremeValueV2016BlockParser(), + new AlarmV2016BlockParser(), + new VoltageV2016BlockParser(), + new TemperatureV2016BlockParser())))); + + @TestFactory + Collection replaySamples() throws URISyntaxException, IOException { + var url = getClass().getClassLoader().getResource("samples/gb32960"); + if (url == null) return List.of(); + Path dir = Paths.get(url.toURI()); + try (Stream s = Files.list(dir)) { + return s.filter(p -> p.toString().endsWith(".hex")) + .sorted() + .map(this::toTest) + .collect(Collectors.toList()); + } + } + + private DynamicTest toTest(Path sample) { + return DynamicTest.dynamicTest(sample.getFileName().toString(), () -> { + byte[] frame = readHex(sample); + Gb32960Message msg = decoder.decode(ByteBuffer.wrap(frame)); + assertThat(msg.header().vin()).hasSize(17); + assertThat(msg.header().command()).isNotNull(); + // 749 字节真实生产帧(realtime_002/003/010/200):peer 在 V2016 帧里下发了 + // 0x30/0x31/0x32 等 typeCode,但这些在 GB/T 32960.3-2016 附录 B 表 B.3 是"预留"区, + // 没有任何字段定义。因此**期望产生 Raw 兜底块**——这是符合规范的正确行为。 + // 若未来对端切换到 V2025 (2424 起始) 或者迁移到 0x80~0xFE 用户自定义区,可再调整断言。 + String name = sample.getFileName().toString(); + boolean isRealProductionFrame = frame.length == 774; + if (isRealProductionFrame) { + assertThat(msg.findBlock(InfoBlock.Raw.class)) + .as("[%s] 749字节真实生产帧应有 Raw 兜底块(peer 越界使用 0x30+ 预留 typeCode)", name) + .isPresent(); + } + // 总电流必须落在协议规定的 -1000~+1000 A 区间,防回归到 -3000 偏移 + msg.findBlock(InfoBlock.Vehicle.class).ifPresent(v -> { + if (v.totalCurrentA() != null) { + assertThat(v.totalCurrentA()) + .as("[%s] vehicle.totalCurrentA 越界,疑似偏移常量回归", name) + .isBetween(-1000.0, 1000.0); + } + }); + }); + } + + private static byte[] readHex(Path path) throws IOException { + StringBuilder sb = new StringBuilder(); + for (String line : Files.readAllLines(path)) { + String trimmed = line.trim(); + if (trimmed.isEmpty() || trimmed.startsWith("#")) continue; + sb.append(trimmed); + } + String hex = sb.toString(); + int len = hex.length() / 2; + byte[] out = new byte[len]; + for (int i = 0; i < len; i++) { + out[i] = (byte) Integer.parseInt(hex.substring(i * 2, i * 2 + 2), 16); + } + return out; + } +} diff --git a/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960DecoderTest.java b/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960DecoderTest.java new file mode 100644 index 00000000..ca027018 --- /dev/null +++ b/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960DecoderTest.java @@ -0,0 +1,110 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import com.lingniu.ingest.codec.BccChecksum; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.PositionV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VehicleV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.model.CommandType; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Message; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 构造一条合成 32960 实时上报帧,跑通 Frame 解码 → Body 解析 → InfoBlock 的全链路。 + * + *

    样本无需外部文件:本测试既验证解码正确性,也作为 {@code samples/} 黄金样本的期望值参考实现。 + */ +public class Gb32960DecoderTest { + + @Test + void decodesSyntheticRealtimeReport() { + byte[] frame = buildRealtimeFrame("LTEST000000000001"); + + InfoBlockParserRegistry registry = new InfoBlockParserRegistry( + List.of(new VehicleV2016BlockParser(), new PositionV2016BlockParser())); + Gb32960BodyParser bodyParser = new Gb32960BodyParser(registry); + Gb32960MessageDecoder decoder = new Gb32960MessageDecoder(bodyParser); + + Gb32960Message msg = decoder.decode(ByteBuffer.wrap(frame)); + + assertThat(msg.header().command()).isEqualTo(CommandType.REALTIME_REPORT); + assertThat(msg.header().vin()).isEqualTo("LTEST000000000001"); + assertThat(msg.header().eventTime()).isNotNull(); + + InfoBlock.Vehicle v = msg.findBlock(InfoBlock.Vehicle.class).orElseThrow(); + assertThat(v.socPercent()).isEqualTo(70); + assertThat(v.speedKmh()).isEqualTo(52.3, org.assertj.core.data.Offset.offset(0.01)); + assertThat(v.gearRaw()).isEqualTo(0x0F); + + InfoBlock.Position p = msg.findBlock(InfoBlock.Position.class).orElseThrow(); + assertThat(p.longitude()).isEqualTo(116.397128, org.assertj.core.data.Offset.offset(0.000001)); + assertThat(p.latitude()).isEqualTo(39.916527, org.assertj.core.data.Offset.offset(0.000001)); + } + + /** + * 构造一条合法的 32960 实时上报帧: + * header + 6B 时间戳(2024-01-02 03:04:05) + 0x01 整车 + 0x05 位置 + BCC + */ + public static byte[] buildRealtimeFrame(String vin) { + ByteArrayOutputStream body = new ByteArrayOutputStream(); + // 时间戳 + body.write(24); body.write(1); body.write(2); body.write(3); body.write(4); body.write(5); + + // 0x01 整车 20 字节 + body.write(0x01); + body.write(0x01); // vehicle state = 启动 + body.write(0x03); // charging = 未充电 + body.write(0x01); // 纯电 + writeU16(body, 523); // 车速 52.3 km/h + writeU32(body, 1234567); // 里程 123456.7 km + writeU16(body, 6000); // 600.0 V + writeU16(body, 1100); // 110.0 A (110 - (1000-1000) = 10) 实际计算:1100*0.1 - 1000 = -890;此处只为结构测试 + body.write(70); // SOC + body.write(0x01); + body.write(0x0F); + writeU16(body, 500); + body.write(30); + body.write(0); + + // 0x05 位置 9 字节 + body.write(0x05); + body.write(0x00); // 有效 + 北纬 + 东经 + writeU32(body, 116_397_128L); + writeU32(body, 39_916_527L); + + byte[] bodyBytes = body.toByteArray(); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + out.write(0x23); out.write(0x23); + out.write(0x02); // 实时上报 + out.write(0xFE); // 应答 / 命令 + byte[] vinBytes = vin.getBytes(StandardCharsets.US_ASCII); + out.write(vinBytes, 0, 17); + out.write(0x01); // 不加密 + writeU16(out, bodyBytes.length); + out.write(bodyBytes, 0, bodyBytes.length); + + byte[] almost = out.toByteArray(); + byte bcc = BccChecksum.compute(almost, 2, almost.length - 2); + out.write(bcc & 0xFF); + return out.toByteArray(); + } + + private static void writeU16(ByteArrayOutputStream os, int v) { + os.write((v >> 8) & 0xFF); + os.write(v & 0xFF); + } + + private static void writeU32(ByteArrayOutputStream os, long v) { + os.write((int) ((v >> 24) & 0xFF)); + os.write((int) ((v >> 16) & 0xFF)); + os.write((int) ((v >> 8) & 0xFF)); + os.write((int) (v & 0xFF)); + } +} diff --git a/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FullBlocksTest.java b/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FullBlocksTest.java new file mode 100644 index 00000000..03e40c7c --- /dev/null +++ b/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/codec/Gb32960FullBlocksTest.java @@ -0,0 +1,152 @@ +package com.lingniu.ingest.protocol.gb32960.codec; + +import com.lingniu.ingest.codec.BccChecksum; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.AlarmV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.DriveMotorV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.PositionV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.TemperatureV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VehicleV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VoltageV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Message; +import com.lingniu.ingest.protocol.gb32960.model.InfoBlock; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 验证新增的变长信息体 Parser(0x02 驱动电机 / 0x07 报警 / 0x08 电压 / 0x09 温度) + * 与主解码器协同工作。 + */ +class Gb32960FullBlocksTest { + + private final Gb32960MessageDecoder decoder = new Gb32960MessageDecoder( + new Gb32960BodyParser(new InfoBlockParserRegistry(List.of( + new VehicleV2016BlockParser(), + new PositionV2016BlockParser(), + new DriveMotorV2016BlockParser(), + new AlarmV2016BlockParser(), + new VoltageV2016BlockParser(), + new TemperatureV2016BlockParser())))); + + @Test + void parsesDriveMotorBlock() { + byte[] frame = buildFrame(os -> { + os.write(0x02); // drive motor + os.write(1); // 1 motor + os.write(1); // serial + os.write(0x01); // state + os.write(100); // controllerTemp = 60 + writeU16(os, 23_000); // rpm = 3000 + writeU16(os, 21_000); // torque raw, actual = 100 Nm + os.write(90); // motorTemp = 50 + writeU16(os, 5400); // voltage 540.0V + writeU16(os, 11000); // current raw → 100 A + }); + Gb32960Message msg = decoder.decode(ByteBuffer.wrap(frame)); + InfoBlock.DriveMotor dm = msg.findBlock(InfoBlock.DriveMotor.class).orElseThrow(); + assertThat(dm.motors()).hasSize(1); + var m = dm.motors().get(0); + assertThat(m.rpm()).isEqualTo(3000); + assertThat(m.torqueNm()).isEqualTo(100.0); + assertThat(m.controllerInputVoltageV()).isEqualTo(540.0); + } + + @Test + void parsesAlarmBlock() { + byte[] frame = buildFrame(os -> { + os.write(0x07); // alarm + os.write(2); // max level + writeU32(os, 0x0000_0003L);// general flag + os.write(1); writeU32(os, 0xDEAD_BEEFL); // battery faults 1 + os.write(0); // motor faults 0 + os.write(0); // engine faults 0 + os.write(1); writeU32(os, 0xCAFE_BABEL); // other faults 1 + }); + Gb32960Message msg = decoder.decode(ByteBuffer.wrap(frame)); + InfoBlock.Alarm a = msg.findBlock(InfoBlock.Alarm.class).orElseThrow(); + assertThat(a.maxLevel()).isEqualTo(2); + assertThat(a.batteryFaults()).hasSize(1); + assertThat(a.otherFaults()).hasSize(1); + } + + @Test + void parsesVoltageBlock() { + byte[] frame = buildFrame(os -> { + os.write(0x08); // voltage + os.write(1); // 1 subsystem + os.write(1); // battery index + writeU16(os, 3800); // 380.0 V + writeU16(os, 11_000); // current raw + writeU16(os, 96); // total cells + writeU16(os, 1); // start + os.write(3); // frame cells + writeU16(os, 3500); // 3.5V + writeU16(os, 3600); // 3.6V + writeU16(os, 3300); // 3.3V + }); + Gb32960Message msg = decoder.decode(ByteBuffer.wrap(frame)); + InfoBlock.Voltage v = msg.findBlock(InfoBlock.Voltage.class).orElseThrow(); + assertThat(v.subSystemCount()).isEqualTo(1); + assertThat(v.maxCellVoltageV()).isEqualTo(3.6, org.assertj.core.data.Offset.offset(0.001)); + assertThat(v.minCellVoltageV()).isEqualTo(3.3, org.assertj.core.data.Offset.offset(0.001)); + } + + @Test + void parsesTemperatureBlock() { + byte[] frame = buildFrame(os -> { + os.write(0x09); // temperature + os.write(1); // subsystems + os.write(1); // battery index + writeU16(os, 4); // probes + os.write(60); // actual 20 + os.write(65); // actual 25 + os.write(70); // actual 30 + os.write(55); // actual 15 + }); + Gb32960Message msg = decoder.decode(ByteBuffer.wrap(frame)); + InfoBlock.Temperature t = msg.findBlock(InfoBlock.Temperature.class).orElseThrow(); + assertThat(t.maxTempC()).isEqualTo(30); + assertThat(t.minTempC()).isEqualTo(15); + } + + // ===== frame builder helpers ===== + + private static byte[] buildFrame(java.util.function.Consumer bodyWriter) { + ByteArrayOutputStream body = new ByteArrayOutputStream(); + // 时间戳 + body.write(24); body.write(1); body.write(2); body.write(3); body.write(4); body.write(5); + bodyWriter.accept(body); + + byte[] bodyBytes = body.toByteArray(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + out.write(0x23); out.write(0x23); + out.write(0x02); // cmd: realtime + out.write(0xFE); // response flag + byte[] vin = "LTEST000000000010".getBytes(StandardCharsets.US_ASCII); + out.write(vin, 0, 17); + out.write(0x01); // not encrypted + writeU16(out, bodyBytes.length); + out.write(bodyBytes, 0, bodyBytes.length); + byte[] almost = out.toByteArray(); + byte bcc = BccChecksum.compute(almost, 2, almost.length - 2); + out.write(bcc & 0xFF); + return out.toByteArray(); + } + + private static void writeU16(ByteArrayOutputStream os, int v) { + os.write((v >> 8) & 0xFF); + os.write(v & 0xFF); + } + + private static void writeU32(ByteArrayOutputStream os, long v) { + os.write((int) ((v >> 24) & 0xFF)); + os.write((int) ((v >> 16) & 0xFF)); + os.write((int) ((v >> 8) & 0xFF)); + os.write((int) (v & 0xFF)); + } +} diff --git a/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/mapper/Gb32960EventMapperTest.java b/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/mapper/Gb32960EventMapperTest.java new file mode 100644 index 00000000..8fe4a847 --- /dev/null +++ b/protocol-gb32960/src/test/java/com/lingniu/ingest/protocol/gb32960/mapper/Gb32960EventMapperTest.java @@ -0,0 +1,37 @@ +package com.lingniu.ingest.protocol.gb32960.mapper; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960BodyParser; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960DecoderTest; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder; +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParserRegistry; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.PositionV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VehicleV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.model.Gb32960Message; +import org.junit.jupiter.api.Test; + +import java.nio.ByteBuffer; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class Gb32960EventMapperTest { + + @Test + void realtimeReportProducesRealtimeAndLocationEvents() { + byte[] frame = Gb32960DecoderTest.buildRealtimeFrame("LTEST000000000002"); + + Gb32960BodyParser body = new Gb32960BodyParser(new InfoBlockParserRegistry( + List.of(new VehicleV2016BlockParser(), new PositionV2016BlockParser()))); + Gb32960Message msg = new Gb32960MessageDecoder(body).decode(ByteBuffer.wrap(frame)); + + List events = new Gb32960EventMapper().toEvents(msg); + + assertThat(events).hasSize(2); + assertThat(events).anyMatch(e -> e instanceof VehicleEvent.Realtime); + assertThat(events).anyMatch(e -> e instanceof VehicleEvent.Location); + assertThat(events).allMatch(e -> e.source() == ProtocolId.GB32960); + assertThat(events).allMatch(e -> e.vin().equals("LTEST000000000002")); + } +} diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/README.md b/protocol-gb32960/src/test/resources/samples/gb32960/README.md new file mode 100644 index 00000000..1b3628c4 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/README.md @@ -0,0 +1,41 @@ +# GB/T 32960 黄金样本集 + +> 本目录用于回放测试与双跑对账。所有样本从旧服务 `lingniu-vehicle-data-reception` 线上抓包后脱敏(VIN 替换为 `LTEST<序号>XXXXXXXX`)。 + +## 文件命名 + +``` +<命令类型>_<场景>_<序号>.hex +``` + +命令类型取自 `CommandType` 枚举: +- `vehicle_login` (0x01) +- `realtime_report` (0x02) +- `resend_report` (0x03) +- `vehicle_logout` (0x04) +- `heartbeat` (0x07) + +## 文件格式 + +每个 `.hex` 文件是一行紧凑十六进制,字节之间**无分隔符**。 +行首允许以 `#` 开头写注释,测试代码忽略注释行与空行。 + +示例 `realtime_report_basic_001.hex`: +``` +# 2017-05-21 10:00:00 宇通 YT01,SOC 70%,车速 52.3 km/h +2323020000010203040506070809101112131415160100352016051510000001010012350000037102710000A064010505050A0005010A00102003E8... +``` + +## 新增样本步骤 + +1. 从生产抓包工具(tcpdump / rg-samples)导出一帧完整字节(含 `0x23 0x23` 起始和 BCC 尾) +2. VIN 替换为测试段:`LTEST0000<9位序号>` +3. 放入本目录,文件名按规范 +4. 在 `Gb32960DecoderGoldenTest` 中添加断言(期望 VIN / 命令 / 关键字段) +5. 运行 `mvn -pl protocol-gb32960 test` + +## 验证目标 + +- 100% 解析一致性(新服务解析结果 === 旧服务解析结果) +- BCC 校验通过 +- 事件映射字段单位一致(车速 km/h、里程 km、经纬度十进制度) diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/heartbeat_001.hex b/protocol-gb32960/src/test/resources/samples/gb32960/heartbeat_001.hex new file mode 100644 index 00000000..f827bd45 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/heartbeat_001.hex @@ -0,0 +1 @@ +232307fe4c54455354303030303030303030303131010000a2 diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/heartbeat_002.hex b/protocol-gb32960/src/test/resources/samples/gb32960/heartbeat_002.hex new file mode 100644 index 00000000..d9711570 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/heartbeat_002.hex @@ -0,0 +1 @@ +232307fe4c54455354303030303030303030303231010000a1 diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/realtime_001.hex b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_001.hex new file mode 100644 index 00000000..5d175a1f --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_001.hex @@ -0,0 +1 @@ +232302fe4c544553543030303030303030303030310102101a040d0c213901010302037a000531c2157825fb44012e27103400020101025575304eca6b157a288b030c82050a00aa0002686c02940200000100630101050006c4f414015eedea06018c0f0701310ebf01014a01054907000000000000000000080101157825fb00900001900eea0eea0eea0ee60ee60ee60ef00eef0ef10eeb0eec0eeb0eed0eee0eee0eeb0eed0eea0ed30ed20ed20ed30ed50ed40ecc0ecd0ecc0ece0ece0ece0ed40ed40ed40ed30ed10ed00ed20ed10ed00ece0ece0ecf0ed40ed40ed40eda0eda0edb0ebf0ed40ed30ed60ed60ed50ed40ed50ede0edf0ede0ede0eee0eed0eec0ee80ee80ee50ef00eef0eef0ee80ee90eea0ee40ee70ee80eeb0eeb0eea0eee0eef0eef0ef60ef60ef50ef80ef70ef50ef60ef50ef60eef0ef00ef10ef60ef80ef90efa0ef70ef90efa0ef80ef80efc0efc0efc0ef50ef50ef50ef20ef30ef40ef50ef50ef40ef50ef50ef70ef40ef40ef50ef80ef80ef70ef70ef50ef40ef70ef70ef70efa0efd0efc0ef70ef80ef70ef80ef60ef50f050f070f070ef00eed0ef009010100084a4a4a4a494a4a493001026c08fcffffff0003003a02ee02e402e5000000000031010c800006ffffffff0c80ffffffff0088320c8004c2159002c35333ffffffffff34ffffffffff001c8000096c0c802742ffffffff8300250019000e0b002300020000000000014f00ffffffffffff00000282ffffffff1ffe1fedff1fa0 diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/realtime_002.hex b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_002.hex new file mode 100644 index 00000000..8eb90545 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_002.hex @@ -0,0 +1 @@ +232302fe4c544553543030303030303030303030320102ed1a040d0c213a01010302013600036758162826284c012e2710010002010101485bf84de44b165526ec030da9017400d200026a6b023a0200000100b101010402ffff0015050107373d6c01d2e6880601020f8701520efe010141010540070000000000000000000801011628262800900001900f860f870f860f6d0f6c0f6c0f870f860f870f6d0f700f6e0f7e0f7d0f710f640f630f650f6e0f800f7e0f260f250f250f810f810f820f620f660f670f810f820f830f670f680f670f780f770f770f670f660f670f640f630f620f1a0f1c0f1c0f500f500f4d0f690f6b0f690f540f530f5a0f420f440f440f6e0f6e0f6d0f460f450f450f720f6c0f6b0f650f640f670f500f4f0f4c0f150f140f150f780f760f780efe0eff0eff0f7b0f7c0f7d0f640f640f640f6e0f6d0f6e0f360f390f390f5c0f5e0f5c0f650f660f660f7e0f800f800f640f620f640f810f800f800f300f330f2f0f800f820f830f670f660f680f820f840f820f650f670f660f820f840f830f680f660f660f820f810f810f680f660f660f720f720f710f680f670f67090101000841414141404040403001026b092eff00ff000100730ca80c800ca4006c00016c0ca40ca80ca30ca30ca30ca30ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca40ca431010dc00005ffffffff0dc0ffffffff008a320dc000ff15e7009e4833ffffffffff34ffffffffff002f8000096b0dc02715000d000e83002402040100002700080000000000c900000000ffffffffffffffffffffffff1ffe15c8631f18 diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/realtime_003.hex b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_003.hex new file mode 100644 index 00000000..b038497c --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_003.hex @@ -0,0 +1 @@ +232302fe4c544553543030303030303030303030330102ed1a040d0c2200010203010000000418d914ed27103a020007d0000002010104454e204e204814be2710030006000000b400024a4902bc02000001006701000400ffff0012050006be89500161217106013d0e91012c0e860101470105460700000000000000000008010114ed271000900001900e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e8a0e870e870e880e880e880e880e880e880e880e880e880e870e860e860e880e880e8a0e880e880e880e880e880e880e880e880e880e880e880e880e910e900e900e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e88090101000847474747464746463001004907c6ff00ff00000039000000000004006c00016c00000004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400000004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040005000500050005000500050005000531010eb00005ffffffff0eb0ffffffff0081320eb01b3b14e613234733ffffffffff34ffffffffff001d800009490eb02710000d000e83002402040100002700080000000000d500000000ffffffffffffffffffffffff1ffe167c021f7b diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/realtime_010.hex b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_010.hex new file mode 100644 index 00000000..43eab7b3 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_010.hex @@ -0,0 +1 @@ +232302fe4c544553543030303030303030303031300102ed1a040d0c220501020301006400049992163027df4f012e27101e00020101015952da51365215f4279f030005000000000002625f02a80200000100a801000400ffff0000050106c3d5cf016240a406010b0f90015b0f4001014a01054907000000000000000000080101163027df00900001900f8c0f8d0f8d0f8d0f8e0f8e0f8f0f8f0f8e0f8f0f900f900f8f0f900f7a0f7c0f800f800f7f0f7c0f7c0f7c0f7e0f7e0f810f7f0f7f0f7e0f820f830f500f500f500f840f850f840f840f820f850f850f820f820f730f750f730f690f6a0f680f620f5f0f600f500f500f500f630f5a0f6d0f6c0f6c0f6d0f500f500f500f6b0f6b0f6c0f6a0f5d0f5f0f5c0f5f0f610f5c0f5e0f5a0f5c0f5c0f610f630f630f640f510f520f540f500f500f500f610f550f500f400f430f410f500f510f500f4e0f4f0f530f500f500f4f0f550f550f560f550f570f560f540f570f560f510f540f530f540f560f5a0f5a0f590f570f7e0f7e0f810f580f4e0f530f570f550f510f500f480f4d0f870f7e0f7e0f7c0f7e0f7f0f7c0f7b0f810f7d0f7e0f7f09010100084a4a4a4a494949493001005f07daff00ff00000038000000000004006c00016c0000000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400000004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000500050005000500050005000500053101003c0005ffffffff003cffffffff008a32003c00000000ffff4f33ffffffffff34ffffffffff002c8000095f003c2710000d000e830024020401000027000800000000000000000000ffffffffffffffffffffffff1ffe17ae631ff9 diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/realtime_020.hex b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_020.hex new file mode 100644 index 00000000..d07198d2 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_020.hex @@ -0,0 +1 @@ +232302fe4c544553543030303030303030303032330101d61a040d0c22070101030203010004c1ee17fc261337012e271032000201010157705a4fe26e17f2260c0309d50bba021a00027f6e022b030000010106010105000733a7d401d832920601840eda011c0ebf01044b0101480700000000000000000008010117fc261300a20001a20ecc0eca0ec30ecb0ec90ec70eca0ec90ec20ec20ec40ec20ec70eca0eca0ec90ece0ecd0ec80ecd0eca0ecc0ec90ec80ece0ec70ec50ebf0ed40ed20ed40ed30ed40ed30ed50ed40ed30ed50ed20ed50ed50ed30ecc0ecb0ec80ecf0ec90ed00ec70ecd0ec70ec50ec70ece0eca0eca0ec90eca0ed10ec90ed00ecf0eca0ed10ed30ed10ecf0ed20ed00ed20ed40ed50ed20ed20ed60ed20ed30ed20ed50ed50ed70ed40ed10ed40ed30ed20ed30ed20ecc0ed00ed10ecc0ed30ed10ed00ecb0ec90ecd0ec80ed10ec50ec80ed20ec10ec90ec50ec90ec30ec50ed40ed40ed40ed40ed40ed40ed60ed50ed30ed50ed50ed50ed50ed40ed50ed40ed30ed20ed20ed30ed60ed50eda0ed00ed70ed80ed60ed70ed50ed60ece0ed50ed40ed60ed40ed10ed30ed20ed40ed40ed40ecf0ed80ed60ed50ed60ed70ed60ed60ed40ed50ed70eda0901010020484a4a4b4b4b4b4a484b4b4b4b4b4b4a484a4b4b4b4b4b4a484a4b4b4b4b4b4acc diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/realtime_100.hex b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_100.hex new file mode 100644 index 00000000..25de83e9 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_100.hex @@ -0,0 +1 @@ +232302fe4c544553543030303030303030303130370101ae1a040d0c39263001016908fc09c4410003007403200320032001b000c9c803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e8cb diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/realtime_200.hex b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_200.hex new file mode 100644 index 00000000..0069f5b0 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/realtime_200.hex @@ -0,0 +1 @@ +232302fe4c544553543030303030303030303231310102ed1a040d0c3a120101030200000002533c150727203e01002710000002010104464e204e204814fc2710030004000200be00025353023a01000001010201010402ffff00130500072eb49401de012e06013f0ea7012a0e9301014001033f070000000000000000000801011507272000900001900ea60ea60ea60ea60ea60ea60ea50ea60ea60ea60ea60ea60ea60ea50e960e990e960e980e980e990e970e990e970e960e980e980e990e980e950e970e950e940e950e960e970e940e990e960e960e950e950e930e960e9b0e9c0e9c0e990e9b0e940e950e930e980e9a0e9a0e940e950ea50ea50ea50ea50ea50ea60ea70ea60ea50ea50ea50e9d0e9e0e9e0e9e0e990e970e970e990e980e9a0e9d0e9a0e9c0e9a0e990e9a0e9a0e9b0e9c0e9c0e980e950e980e990e990e990e980e970e970e980e970e970e990e990e9a0e990e990e990e9a0e980e960e960e990e970e970e970e970e980e950e930e9b0e980e9a0e990e9a0e990e940e940e950e940e950e950e990e990e9b0e9a0e9b0e9b0e960e950e960e950e950e950e950e940e99090101000840403f403f3f3f3f300102530708ff00ff00000037000000000000006c00016c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031010e880005ffffffff0e88ffffffff008a320e880002150e00014733ffffffffff34ffffffffff0044800009530e882710000d000e830024020401000027000800000000005401000000ffffffffffffffffffffffff1ffe1d7b011fdd diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/resend_001.hex b/protocol-gb32960/src/test/resources/samples/gb32960/resend_001.hex new file mode 100644 index 00000000..bf30e283 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/resend_001.hex @@ -0,0 +1 @@ +232303fe4c544553543030303030303030303032320102101a040d0d0b0a010203010000000532ad156d271c45011007d0006502010103514e204e205c003f27100300070000000000025e5c03b601000001014d0100050106c3aa530160540f0601010ee301120ede01014801054707000000000000000000080101156d271c00900001900ee30ee30ee30ee00ee20ee20ee20ee10ee20ee30ee20ee20ee20ee10ee30ee10ee10ede0ee10ee10ee10ee00ee10ee10ee10ee00ee00ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee10ee1090101000848484848474848473001005c0816ffffff0000003a000a0000000100000000003101003c0005ffffffff003cffffffff008b32003c00000000ffff5233ffffffffff34ffffffffff004c8000095c003c2710ffffffff8300250019000e0b002300020000000000000000ffffffffffff0000000affffffff1ffe1fedff0089 diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/resend_005.hex b/protocol-gb32960/src/test/resources/samples/gb32960/resend_005.hex new file mode 100644 index 00000000..55197f67 --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/resend_005.hex @@ -0,0 +1 @@ +232303fe4c544553543030303030303030303230390101ae1a040d0c391b3001005307ee09c4410037000100000000000001b000c9c803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e803e8be diff --git a/protocol-gb32960/src/test/resources/samples/gb32960/vehicle_login_001.hex b/protocol-gb32960/src/test/resources/samples/gb32960/vehicle_login_001.hex new file mode 100644 index 00000000..0583697c --- /dev/null +++ b/protocol-gb32960/src/test/resources/samples/gb32960/vehicle_login_001.hex @@ -0,0 +1 @@ +232301fe4c5445535430303030303030303030313901001e1a040d0d0b1a000c38393836303332313435323039303735363530390100bd diff --git a/protocol-jsatl12/pom.xml b/protocol-jsatl12/pom.xml new file mode 100644 index 00000000..5e6a7baa --- /dev/null +++ b/protocol-jsatl12/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + protocol-jsatl12 + protocol-jsatl12 + + 苏标(JSATL12)主动安全报警附件上传协议。独立 TCP 端口(默认 7612), + 与 JT808 使用相同的转义规则,但数据帧带 01cd 魔数前缀,用于大文件分块上传。 + + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + ingest-core + + + com.lingniu.ingest + protocol-jt808 + + + com.lingniu.ingest + sink-archive + + + org.springframework.boot + spring-boot-starter + + + io.netty + netty-all + + + com.github.ben-manes.caffeine + caffeine + + + diff --git a/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/codec/Jsatl12FrameDecoder.java b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/codec/Jsatl12FrameDecoder.java new file mode 100644 index 00000000..8afc2820 --- /dev/null +++ b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/codec/Jsatl12FrameDecoder.java @@ -0,0 +1,80 @@ +package com.lingniu.ingest.protocol.jsatl12.codec; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; + +import java.util.List; + +/** + * 苏标报警附件协议分帧。 + * + *

    两种帧并存: + *

      + *
    1. 标准 JT/T 808 帧:以 {@code 0x7e} 为分界,承载 0x1210 / 0x1211 / 0x9212 等信令 + *
    2. 数据帧:以 {@code 0x30 0x31 0x63 0x64}(即 ASCII "01cd")为魔数,后续 4 字节大端长度 + 数据 + *
    + * + *

    本 decoder 合并处理:根据第一个字节决定分帧策略,输出带类型标记的 {@link Jsatl12RawFrame}。 + */ +public class Jsatl12FrameDecoder extends ByteToMessageDecoder { + + private static final byte[] DATA_MAGIC = {0x30, 0x31, 0x63, 0x64}; + private static final int MAX_FRAME = 1024 * 65; + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { + while (in.readableBytes() >= 1) { + byte first = in.getByte(in.readerIndex()); + if (first == 0x7e) { + if (!decodeJtFrame(in, out)) return; + } else if (first == DATA_MAGIC[0]) { + if (!decodeDataFrame(in, out)) return; + } else { + in.skipBytes(1); + } + } + } + + private boolean decodeJtFrame(ByteBuf in, List out) { + if (in.readableBytes() < 2) return false; + int endIdx = in.indexOf(in.readerIndex() + 1, in.writerIndex(), (byte) 0x7e); + if (endIdx < 0) { + if (in.readableBytes() > MAX_FRAME) in.skipBytes(in.readableBytes() - 1); + return false; + } + int len = endIdx - (in.readerIndex() + 1); + if (len <= 0) { + in.skipBytes(1); + return true; + } + byte[] raw = new byte[len]; + in.skipBytes(1); + in.readBytes(raw); + in.skipBytes(1); + out.add(new Jsatl12RawFrame(Jsatl12RawFrame.Type.JT_MESSAGE, raw)); + return true; + } + + private boolean decodeDataFrame(ByteBuf in, List out) { + if (in.readableBytes() < DATA_MAGIC.length + 4) return false; + for (int i = 0; i < DATA_MAGIC.length; i++) { + if (in.getByte(in.readerIndex() + i) != DATA_MAGIC[i]) { + in.skipBytes(1); + return true; + } + } + // 4B length (big-endian) 之后是负载 + long dataLen = in.getUnsignedInt(in.readerIndex() + DATA_MAGIC.length); + if (dataLen > MAX_FRAME) { + in.skipBytes(1); + return true; + } + int totalFrameLen = DATA_MAGIC.length + 4 + (int) dataLen; + if (in.readableBytes() < totalFrameLen) return false; + byte[] frame = new byte[totalFrameLen]; + in.readBytes(frame); + out.add(new Jsatl12RawFrame(Jsatl12RawFrame.Type.DATA_CHUNK, frame)); + return true; + } +} diff --git a/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/codec/Jsatl12RawFrame.java b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/codec/Jsatl12RawFrame.java new file mode 100644 index 00000000..7960b249 --- /dev/null +++ b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/codec/Jsatl12RawFrame.java @@ -0,0 +1,8 @@ +package com.lingniu.ingest.protocol.jsatl12.codec; + +/** + * JSATL12 原始帧:区分信令帧与数据帧。 + */ +public record Jsatl12RawFrame(Type type, byte[] bytes) { + public enum Type { JT_MESSAGE, DATA_CHUNK } +} diff --git a/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/config/Jsatl12AutoConfiguration.java b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/config/Jsatl12AutoConfiguration.java new file mode 100644 index 00000000..923f22df --- /dev/null +++ b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/config/Jsatl12AutoConfiguration.java @@ -0,0 +1,23 @@ +package com.lingniu.ingest.protocol.jsatl12.config; + +import com.lingniu.ingest.protocol.jsatl12.inbound.Jsatl12NettyServer; +import com.lingniu.ingest.sink.archive.ArchiveStore; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +@AutoConfiguration +@EnableConfigurationProperties(Jsatl12Properties.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.jsatl12", name = "enabled", havingValue = "true") +@ConditionalOnBean(ArchiveStore.class) +public class Jsatl12AutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Jsatl12NettyServer jsatl12NettyServer(Jsatl12Properties props, ArchiveStore archive) { + return new Jsatl12NettyServer(props.getPort(), archive); + } +} diff --git a/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/config/Jsatl12Properties.java b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/config/Jsatl12Properties.java new file mode 100644 index 00000000..5afebbf4 --- /dev/null +++ b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/config/Jsatl12Properties.java @@ -0,0 +1,21 @@ +package com.lingniu.ingest.protocol.jsatl12.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * JSATL12 配置。实现尚在 TODO 状态,当前只做 Bean 占位避免空依赖。 + */ +@ConfigurationProperties(prefix = "lingniu.ingest.jsatl12") +public class Jsatl12Properties { + private boolean enabled = false; + private int port = 7612; + /** 附件落盘根目录,支持 file:// / s3:// / oss:// 形式,由 sink-archive 解析。 */ + private String fileStore = "file:///var/lingniu/alarm-files"; + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public int getPort() { return port; } + public void setPort(int port) { this.port = port; } + public String getFileStore() { return fileStore; } + public void setFileStore(String fileStore) { this.fileStore = fileStore; } +} diff --git a/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/inbound/Jsatl12ChannelHandler.java b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/inbound/Jsatl12ChannelHandler.java new file mode 100644 index 00000000..e5d612d2 --- /dev/null +++ b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/inbound/Jsatl12ChannelHandler.java @@ -0,0 +1,89 @@ +package com.lingniu.ingest.protocol.jsatl12.inbound; + +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; +import com.lingniu.ingest.protocol.jsatl12.codec.Jsatl12RawFrame; +import com.lingniu.ingest.sink.archive.ArchiveStore; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.time.Duration; +import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +/** + * JSATL12 入站处理器。 + * + *

    当前实现:把 DATA_CHUNK 帧写入 {@link ArchiveStore},文件名按日期 + 对端 IP + + * 时间戳生成;JT_MESSAGE 帧暂仅打日志(后续批次可接入 jt808 的 BodyParserRegistry 做完整解析)。 + * + *

    路径模板:{@code yyyy/MM/dd//.bin}。 + */ +public class Jsatl12ChannelHandler extends SimpleChannelInboundHandler { + + private static final Logger log = LoggerFactory.getLogger(Jsatl12ChannelHandler.class); + private static final DateTimeFormatter DAY_FMT = DateTimeFormatter.ofPattern("yyyy/MM/dd").withZone(ZoneId.systemDefault()); + + /** 为每个 Channel 持久化一个文件 key,保证同一次传输追加到同一个文件。 */ + private static final Cache KEYS = Caffeine.newBuilder() + .expireAfterAccess(Duration.ofMinutes(30)) + .maximumSize(10_000) + .build(); + + private final ArchiveStore archive; + + public Jsatl12ChannelHandler(ArchiveStore archive) { + this.archive = archive; + } + + @Override + protected void channelRead0(ChannelHandlerContext ctx, Jsatl12RawFrame frame) { + switch (frame.type()) { + case JT_MESSAGE -> { + // 信令帧:打印摘要。完整解析留到 protocol-jt808 BodyParserRegistry 接入后完成。 + log.info("[jsatl12] signaling frame peer={} len={}", addr(ctx), frame.bytes().length); + } + case DATA_CHUNK -> { + String key = KEYS.get(ctx, k -> { + String day = DAY_FMT.format(Instant.now()); + return "jsatl12/" + day + "/" + addr(ctx).replace(':', '_') + + "/" + Instant.now().toEpochMilli() + ".bin"; + }); + try { + // 去除 4B 魔数 + 4B 长度的 header,仅写真实数据 + byte[] all = frame.bytes(); + int payloadOffset = 8; + int payloadLen = all.length - payloadOffset; + if (payloadLen > 0) { + byte[] payload = new byte[payloadLen]; + System.arraycopy(all, payloadOffset, payload, 0, payloadLen); + archive.append(key, payload); + } + } catch (IOException e) { + log.warn("[jsatl12] write chunk failed key={}", key, e); + } + } + } + } + + @Override + public void channelInactive(ChannelHandlerContext ctx) { + String key = KEYS.getIfPresent(ctx); + if (key != null) { + log.info("[jsatl12] channel closed, archived key={}", key); + KEYS.invalidate(ctx); + } + } + + private static String addr(ChannelHandlerContext ctx) { + if (ctx.channel().remoteAddress() instanceof InetSocketAddress i) { + return i.getAddress().getHostAddress() + ":" + i.getPort(); + } + return "unknown"; + } +} diff --git a/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/inbound/Jsatl12NettyServer.java b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/inbound/Jsatl12NettyServer.java new file mode 100644 index 00000000..7c2c3eae --- /dev/null +++ b/protocol-jsatl12/src/main/java/com/lingniu/ingest/protocol/jsatl12/inbound/Jsatl12NettyServer.java @@ -0,0 +1,76 @@ +package com.lingniu.ingest.protocol.jsatl12.inbound; + +import com.lingniu.ingest.protocol.jsatl12.codec.Jsatl12FrameDecoder; +import com.lingniu.ingest.sink.archive.ArchiveStore; +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.beans.factory.InitializingBean; + +import java.util.concurrent.ThreadFactory; + +/** + * 苏标报警附件 Netty 服务端。独立端口(默认 7612)。 + */ +public final class Jsatl12NettyServer implements InitializingBean, DisposableBean { + + private static final Logger log = LoggerFactory.getLogger(Jsatl12NettyServer.class); + + private final int port; + private final ArchiveStore archive; + + private EventLoopGroup boss; + private EventLoopGroup workers; + private Channel serverChannel; + + public Jsatl12NettyServer(int port, ArchiveStore archive) { + this.port = port; + this.archive = archive; + } + + @Override + public void afterPropertiesSet() throws Exception { + ThreadFactory bossTf = r -> new Thread(r, "jsatl12-boss"); + ThreadFactory wkTf = r -> new Thread(r, "jsatl12-worker"); + this.boss = new NioEventLoopGroup(1, bossTf); + this.workers = new NioEventLoopGroup(Runtime.getRuntime().availableProcessors(), wkTf); + + ServerBootstrap b = new ServerBootstrap(); + b.group(boss, workers) + .channel(NioServerSocketChannel.class) + .option(ChannelOption.SO_BACKLOG, 256) + .childOption(ChannelOption.TCP_NODELAY, true) + .childOption(ChannelOption.SO_KEEPALIVE, true) + .childHandler(new ChannelInitializer() { + @Override + protected void initChannel(SocketChannel ch) { + ch.pipeline() + .addLast("frame", new Jsatl12FrameDecoder()) + .addLast("dispatch", new Jsatl12ChannelHandler(archive)); + } + }); + this.serverChannel = b.bind(port).sync().channel(); + log.info("jsatl12 Netty server listening on :{}", port); + } + + @Override + public void destroy() { + try { + if (serverChannel != null) serverChannel.close().sync(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } finally { + if (boss != null) boss.shutdownGracefully(); + if (workers != null) workers.shutdownGracefully(); + log.info("jsatl12 Netty server stopped"); + } + } +} diff --git a/protocol-jsatl12/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/protocol-jsatl12/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..1080dfb0 --- /dev/null +++ b/protocol-jsatl12/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.protocol.jsatl12.config.Jsatl12AutoConfiguration diff --git a/protocol-jt1078/pom.xml b/protocol-jt1078/pom.xml new file mode 100644 index 00000000..ded61a56 --- /dev/null +++ b/protocol-jt1078/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + protocol-jt1078 + protocol-jt1078 + + JT/T 1078 音视频信令接入。复用 protocol-jt808 的 Netty server 与会话, + 只通过注册新的 BodyParser 热插拔扩展消息集(0x1003 / 0x1005 / 0x1205 / 0x1206)。 + + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + ingest-core + + + com.lingniu.ingest + protocol-jt808 + + + org.springframework.boot + spring-boot-starter + + + diff --git a/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/codec/parser/FileUploadCompleteBodyParser.java b/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/codec/parser/FileUploadCompleteBodyParser.java new file mode 100644 index 00000000..0d08106b --- /dev/null +++ b/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/codec/parser/FileUploadCompleteBodyParser.java @@ -0,0 +1,20 @@ +package com.lingniu.ingest.protocol.jt1078.codec.parser; + +import com.lingniu.ingest.protocol.jt1078.model.Jt1078MessageId; +import com.lingniu.ingest.protocol.jt808.codec.BodyParser; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; + +import java.nio.ByteBuffer; + +/** 0x1206 文件上传完成通知。PoC 只取 raw。 */ +public final class FileUploadCompleteBodyParser implements BodyParser { + @Override public int messageId() { return Jt1078MessageId.TERMINAL_FILE_UPLOAD_DONE; } + + @Override + public Jt808Body parse(Jt808Header header, ByteBuffer body) { + byte[] raw = new byte[body.remaining()]; + body.get(raw); + return new Jt808Body.Raw(messageId(), raw); + } +} diff --git a/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/codec/parser/MediaAttributesBodyParser.java b/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/codec/parser/MediaAttributesBodyParser.java new file mode 100644 index 00000000..34ace26d --- /dev/null +++ b/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/codec/parser/MediaAttributesBodyParser.java @@ -0,0 +1,23 @@ +package com.lingniu.ingest.protocol.jt1078.codec.parser; + +import com.lingniu.ingest.protocol.jt1078.model.Jt1078MessageId; +import com.lingniu.ingest.protocol.jt808.codec.BodyParser; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; + +import java.nio.ByteBuffer; + +/** + * 0x1003 终端上传音视频属性 —— PoC 阶段先返回原始字节由下游分析。 + * 真实解析字段:音视频编码 / 音频通道数 / 采样率 / 位深 / 最大音视频通道数 / 视频编码 / 分辨率 等。 + */ +public final class MediaAttributesBodyParser implements BodyParser { + @Override public int messageId() { return Jt1078MessageId.TERMINAL_MEDIA_ATTRS_REPORT; } + + @Override + public Jt808Body parse(Jt808Header header, ByteBuffer body) { + byte[] raw = new byte[body.remaining()]; + body.get(raw); + return new Jt808Body.Raw(messageId(), raw); + } +} diff --git a/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/config/Jt1078AutoConfiguration.java b/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/config/Jt1078AutoConfiguration.java new file mode 100644 index 00000000..9aacaf29 --- /dev/null +++ b/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/config/Jt1078AutoConfiguration.java @@ -0,0 +1,28 @@ +package com.lingniu.ingest.protocol.jt1078.config; + +import com.lingniu.ingest.protocol.jt1078.codec.parser.FileUploadCompleteBodyParser; +import com.lingniu.ingest.protocol.jt1078.codec.parser.MediaAttributesBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.BodyParser; +import com.lingniu.ingest.protocol.jt808.config.Jt808AutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; + +/** + * jt1078 在 jt808 之前装配它自己的 Parser Bean,Spring 会把它们注入到 jt808 的 + * {@code BodyParserRegistry} 里,实现"同一个 Netty 端口复用、消息集热插拔"。 + */ +@AutoConfiguration(before = Jt808AutoConfiguration.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.jt1078", name = "enabled", havingValue = "true") +public class Jt1078AutoConfiguration { + + @Bean + public BodyParser jt1078MediaAttributesBodyParser() { + return new MediaAttributesBodyParser(); + } + + @Bean + public BodyParser jt1078FileUploadCompleteBodyParser() { + return new FileUploadCompleteBodyParser(); + } +} diff --git a/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/model/Jt1078MessageId.java b/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/model/Jt1078MessageId.java new file mode 100644 index 00000000..7f8557d9 --- /dev/null +++ b/protocol-jt1078/src/main/java/com/lingniu/ingest/protocol/jt1078/model/Jt1078MessageId.java @@ -0,0 +1,12 @@ +package com.lingniu.ingest.protocol.jt1078.model; + +/** JT/T 1078 消息 ID 常量(上行部分核心子集)。 */ +public final class Jt1078MessageId { + + private Jt1078MessageId() {} + + public static final int TERMINAL_MEDIA_ATTRS_REPORT = 0x1003; + public static final int TERMINAL_PASSENGER_VOLUME = 0x1005; + public static final int TERMINAL_FILE_LIST = 0x1205; + public static final int TERMINAL_FILE_UPLOAD_DONE = 0x1206; +} diff --git a/protocol-jt1078/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/protocol-jt1078/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..236a8ad5 --- /dev/null +++ b/protocol-jt1078/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.protocol.jt1078.config.Jt1078AutoConfiguration diff --git a/protocol-jt808/pom.xml b/protocol-jt808/pom.xml new file mode 100644 index 00000000..6f4f1eee --- /dev/null +++ b/protocol-jt808/pom.xml @@ -0,0 +1,54 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + protocol-jt808 + protocol-jt808 + JT/T 808 协议接入(Netty Server,默认 TCP 10808)。 + + + + com.lingniu.ingest + ingest-api + + + com.lingniu.ingest + ingest-core + + + com.lingniu.ingest + ingest-codec-common + + + com.lingniu.ingest + session-core + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-configuration-processor + true + + + io.netty + netty-all + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/BodyParser.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/BodyParser.java new file mode 100644 index 00000000..c8ed4678 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/BodyParser.java @@ -0,0 +1,19 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; + +import java.nio.ByteBuffer; + +/** + * 单一消息体解析器 SPI。每个消息 ID 一个实现,替代旧代码里的巨型 switch。 + * + *

    约定:{@code parse} 调用时 buffer.position 指向 body 第 0 字节, + * 解析完成后 position 停在 body 末尾(不消费校验码)。 + */ +public interface BodyParser { + + int messageId(); + + Jt808Body parse(Jt808Header header, ByteBuffer body); +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/BodyParserRegistry.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/BodyParserRegistry.java new file mode 100644 index 00000000..ea4751c2 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/BodyParserRegistry.java @@ -0,0 +1,25 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * JT808 消息体解析器注册中心。 + */ +public final class BodyParserRegistry { + + private final Map parsers = new HashMap<>(); + + public BodyParserRegistry(List list) { + for (BodyParser p : list) parsers.put(p.messageId(), p); + } + + public BodyParser find(int messageId) { + return parsers.get(messageId); + } + + public int size() { + return parsers.size(); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808Escape.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808Escape.java new file mode 100644 index 00000000..75f00215 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808Escape.java @@ -0,0 +1,59 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +/** + * JT/T 808 转义规则: + *

    + *   0x7e → 0x7d 0x02
    + *   0x7d → 0x7d 0x01
    + * 
    + * 转义仅作用于 消息头 + 消息体 + 校验码,不包含首尾的 0x7e 标识位。 + */ +public final class Jt808Escape { + + private Jt808Escape() {} + + /** 反转义:从 framed 字节数组中剥除 0x7e 首尾后,恢复原始字节。 */ + public static byte[] unescape(byte[] framed, int offset, int length) { + byte[] out = new byte[length]; + int outLen = 0; + for (int i = offset; i < offset + length; i++) { + byte b = framed[i]; + if (b == 0x7d && i + 1 < offset + length) { + byte next = framed[i + 1]; + if (next == 0x02) { + out[outLen++] = 0x7e; + i++; + continue; + } else if (next == 0x01) { + out[outLen++] = 0x7d; + i++; + continue; + } + } + out[outLen++] = b; + } + byte[] trimmed = new byte[outLen]; + System.arraycopy(out, 0, trimmed, 0, outLen); + return trimmed; + } + + /** 转义:在原始字节上应用 7d/7e 替换,结果不含首尾 0x7e。 */ + public static byte[] escape(byte[] raw) { + byte[] out = new byte[raw.length * 2]; + int outLen = 0; + for (byte b : raw) { + if (b == 0x7e) { + out[outLen++] = 0x7d; + out[outLen++] = 0x02; + } else if (b == 0x7d) { + out[outLen++] = 0x7d; + out[outLen++] = 0x01; + } else { + out[outLen++] = b; + } + } + byte[] trimmed = new byte[outLen]; + System.arraycopy(out, 0, trimmed, 0, outLen); + return trimmed; + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameDecoder.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameDecoder.java new file mode 100644 index 00000000..47c1186b --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameDecoder.java @@ -0,0 +1,51 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; + +import java.util.List; + +/** + * Netty 层 JT808 分帧 + 反转义。 + * + *

    寻找配对的 {@code 0x7e ... 0x7e},提取中间字节并调用 {@link Jt808Escape#unescape} 还原, + * 输出到 pipeline 的是 {@code byte[]}(反转义后的原始数据,不含首尾 0x7e)。 + */ +public class Jt808FrameDecoder extends ByteToMessageDecoder { + + private static final int MAX_FRAME = 16 * 1024; + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { + while (in.readableBytes() >= 2) { + int startIdx = in.indexOf(in.readerIndex(), in.writerIndex(), (byte) 0x7e); + if (startIdx < 0) { + in.skipBytes(in.readableBytes()); + return; + } + if (startIdx != in.readerIndex()) { + in.skipBytes(startIdx - in.readerIndex()); + } + int endIdx = in.indexOf(in.readerIndex() + 1, in.writerIndex(), (byte) 0x7e); + if (endIdx < 0) { + if (in.readableBytes() > MAX_FRAME) { + in.skipBytes(in.readableBytes() - 1); + } + return; + } + int rawLen = endIdx - (in.readerIndex() + 1); + if (rawLen == 0) { + // 两个相邻 0x7e:视作空帧,跳过一个 + in.skipBytes(1); + continue; + } + byte[] raw = new byte[rawLen]; + in.skipBytes(1); + in.readBytes(raw); + in.skipBytes(1); // 结束 0x7e + byte[] unescaped = Jt808Escape.unescape(raw, 0, raw.length); + out.add(unescaped); + } + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameEncoder.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameEncoder.java new file mode 100644 index 00000000..af8fe0c3 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameEncoder.java @@ -0,0 +1,81 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import com.lingniu.ingest.codec.BccChecksum; +import com.lingniu.ingest.codec.BcdCodec; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; + +import java.io.ByteArrayOutputStream; + +/** + * JT/T 808 下行帧编码器:把 header + body 字节拼装 → 加 XOR 校验 → 转义 → 外包 0x7e。 + * + *

    只支持 2013 版(6 字节 BCD phone)。分包暂不支持(PoC 阶段下行多数是短命令)。 + */ +public final class Jt808FrameEncoder { + + private Jt808FrameEncoder() {} + + public static byte[] encode(int messageId, String phone, int serialNo, byte[] body) { + return encode(messageId, phone, serialNo, body, Jt808Header.ProtocolVersion.V2013); + } + + public static byte[] encode(int messageId, String phone, int serialNo, byte[] body, + Jt808Header.ProtocolVersion version) { + byte[] raw = buildRaw(messageId, phone, serialNo, body, version); + byte bcc = BccChecksum.compute(raw, 0, raw.length); + + ByteArrayOutputStream almost = new ByteArrayOutputStream(raw.length + 1); + almost.write(raw, 0, raw.length); + almost.write(bcc & 0xFF); + + byte[] escaped = Jt808Escape.escape(almost.toByteArray()); + byte[] out = new byte[escaped.length + 2]; + out[0] = 0x7e; + System.arraycopy(escaped, 0, out, 1, escaped.length); + out[out.length - 1] = 0x7e; + return out; + } + + private static byte[] buildRaw(int messageId, String phone, int serialNo, byte[] body, + Jt808Header.ProtocolVersion version) { + boolean v2019 = version == Jt808Header.ProtocolVersion.V2019; + int phoneLen = v2019 ? 10 : 6; + int len = 2 /* msgId */ + 2 /* attrs */ + (v2019 ? 1 : 0) + phoneLen + 2 /* serial */ + body.length; + ByteArrayOutputStream os = new ByteArrayOutputStream(len); + + // msgId + os.write((messageId >> 8) & 0xFF); + os.write(messageId & 0xFF); + + // attrs: 2019 版 bit14 置 1 + int attrs = body.length & 0x03FF; + if (v2019) attrs |= 0x4000; + os.write((attrs >> 8) & 0xFF); + os.write(attrs & 0xFF); + + // 2019 版多一个 protocolVersion 字节(值 1) + if (v2019) os.write(0x01); + + // phone BCD + String padded = padLeft(phone, phoneLen * 2); + byte[] bcd = BcdCodec.encode(padded); + os.write(bcd, 0, phoneLen); + + // serial + os.write((serialNo >> 8) & 0xFF); + os.write(serialNo & 0xFF); + + // body + os.write(body, 0, body.length); + return os.toByteArray(); + } + + private static String padLeft(String s, int len) { + if (s == null) s = ""; + if (s.length() >= len) return s.substring(s.length() - len); + StringBuilder sb = new StringBuilder(len); + for (int i = s.length(); i < len; i++) sb.append('0'); + sb.append(s); + return sb.toString(); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808MessageDecoder.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808MessageDecoder.java new file mode 100644 index 00000000..fa1d199e --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/Jt808MessageDecoder.java @@ -0,0 +1,93 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import com.lingniu.ingest.api.spi.DecodeException; +import com.lingniu.ingest.api.spi.FrameDecoder; +import com.lingniu.ingest.codec.BccChecksum; +import com.lingniu.ingest.codec.BcdCodec; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; + +import java.nio.ByteBuffer; +import java.util.Arrays; + +/** + * JT808 完整帧(已反转义、含校验码,不含首尾 0x7e) → {@link Jt808Message}。 + * + *

    入参 {@link ByteBuffer} 的生命周期由调用方管理,本类只读取。 + */ +public final class Jt808MessageDecoder implements FrameDecoder { + + private static final int HEADER_LEN_2013 = 12; + private static final int HEADER_LEN_2019 = 16; // + phone 延长 4 字节 + + private final BodyParserRegistry registry; + + public Jt808MessageDecoder(BodyParserRegistry registry) { + this.registry = registry; + } + + @Override + public Jt808Message decode(ByteBuffer buffer) { + byte[] bytes = new byte[buffer.remaining()]; + buffer.get(bytes); + + if (bytes.length < HEADER_LEN_2013 + 1) { + throw new DecodeException("jt808 frame too short: " + bytes.length); + } + + // 校验码:从 msgId 开始到校验码前一字节 + byte expected = bytes[bytes.length - 1]; + if (!BccChecksum.verify(bytes, 0, bytes.length - 1, expected)) { + throw new DecodeException("jt808 XOR checksum mismatch"); + } + + int messageId = ((bytes[0] & 0xFF) << 8) | (bytes[1] & 0xFF); + int attrs = ((bytes[2] & 0xFF) << 8) | (bytes[3] & 0xFF); + int bodyLength = attrs & 0x03FF; + int encryptType = (attrs >> 10) & 0x07; + boolean subpacket = (attrs & 0x2000) != 0; + boolean v2019 = (attrs & 0x4000) != 0; + + Jt808Header.ProtocolVersion version = v2019 + ? Jt808Header.ProtocolVersion.V2019 + : Jt808Header.ProtocolVersion.V2013; + int phoneLen = v2019 ? 10 : 6; + int headerLen = 4 /* msgId+attrs */ + (v2019 ? 1 : 0) /* protocol version */ + phoneLen + 2 /* serial */; + int phoneOffset = 4 + (v2019 ? 1 : 0); + + String phone = BcdCodec.decode(Arrays.copyOfRange(bytes, phoneOffset, phoneOffset + phoneLen)) + .replaceAll("^0+", ""); + int serial = ((bytes[phoneOffset + phoneLen] & 0xFF) << 8) + | (bytes[phoneOffset + phoneLen + 1] & 0xFF); + + int totalPkgs = 0, pkgSeq = 0; + int bodyStart = headerLen; + if (subpacket) { + totalPkgs = ((bytes[bodyStart] & 0xFF) << 8) | (bytes[bodyStart + 1] & 0xFF); + pkgSeq = ((bytes[bodyStart + 2] & 0xFF) << 8) | (bytes[bodyStart + 3] & 0xFF); + bodyStart += 4; + } + + int bodyEnd = bodyStart + bodyLength; + if (bodyEnd > bytes.length - 1) { + throw new DecodeException("jt808 body length " + bodyLength + " exceeds frame"); + } + + Jt808Header header = new Jt808Header( + messageId, bodyLength, encryptType, subpacket, version, + phone, serial, totalPkgs, pkgSeq); + + ByteBuffer bodyBuf = ByteBuffer.wrap(bytes, bodyStart, bodyLength); + BodyParser parser = registry.find(messageId); + Jt808Body body; + if (parser == null) { + byte[] raw = new byte[bodyLength]; + bodyBuf.get(raw); + body = new Jt808Body.Raw(messageId, raw); + } else { + body = parser.parse(header, bodyBuf); + } + return new Jt808Message(header, body); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/HeartbeatBodyParser.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/HeartbeatBodyParser.java new file mode 100644 index 00000000..e1133fc5 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/HeartbeatBodyParser.java @@ -0,0 +1,14 @@ +package com.lingniu.ingest.protocol.jt808.codec.parser; + +import com.lingniu.ingest.protocol.jt808.codec.BodyParser; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; + +import java.nio.ByteBuffer; + +/** 0x0002 心跳,无 body。 */ +public final class HeartbeatBodyParser implements BodyParser { + @Override public int messageId() { return Jt808MessageId.TERMINAL_HEARTBEAT; } + @Override public Jt808Body parse(Jt808Header header, ByteBuffer body) { return new Jt808Body.Heartbeat(); } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/LocationBodyParser.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/LocationBodyParser.java new file mode 100644 index 00000000..df0ee8fa --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/LocationBodyParser.java @@ -0,0 +1,66 @@ +package com.lingniu.ingest.protocol.jt808.codec.parser; + +import com.lingniu.ingest.codec.BcdCodec; +import com.lingniu.ingest.protocol.jt808.codec.BodyParser; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; + +import java.nio.ByteBuffer; +import java.time.LocalDateTime; +import java.time.ZoneId; + +/** + * 0x0200 位置信息汇报。 + * + *

    固定 28 字节 + 可选附加项(本 PoC 先忽略附加项)。 + *

    + *   alarmFlag(4)
    + *   statusFlag(4)
    + *   latitude(4)   // 1/1000000 度
    + *   longitude(4)  // 1/1000000 度
    + *   altitudeM(2)
    + *   speed(2)      // 1/10 km/h
    + *   direction(2)
    + *   time(6 BCD, YYMMDDHHMMSS)
    + * 
    + */ +public final class LocationBodyParser implements BodyParser { + + @Override + public int messageId() { + return Jt808MessageId.TERMINAL_LOCATION; + } + + @Override + public Jt808Body parse(Jt808Header header, ByteBuffer buf) { + long alarmFlag = buf.getInt() & 0xFFFFFFFFL; + long statusFlag = buf.getInt() & 0xFFFFFFFFL; + long latRaw = buf.getInt() & 0xFFFFFFFFL; + long lonRaw = buf.getInt() & 0xFFFFFFFFL; + int altitudeM = buf.getShort(); + double speed = (buf.getShort() & 0xFFFF) * 0.1; + int direction = buf.getShort() & 0xFFFF; + + byte[] timeBcd = new byte[6]; + buf.get(timeBcd); + String ts = BcdCodec.decode(timeBcd); + + LocalDateTime ldt = LocalDateTime.of( + 2000 + Integer.parseInt(ts.substring(0, 2)), + Integer.parseInt(ts.substring(2, 4)), + Integer.parseInt(ts.substring(4, 6)), + Integer.parseInt(ts.substring(6, 8)), + Integer.parseInt(ts.substring(8, 10)), + Integer.parseInt(ts.substring(10, 12))); + + // 跳过剩余附加项 + if (buf.hasRemaining()) buf.position(buf.limit()); + + return new Jt808Body.Location( + alarmFlag, statusFlag, + lonRaw / 1_000_000.0, latRaw / 1_000_000.0, + altitudeM, speed, direction, + ldt.atZone(ZoneId.of("Asia/Shanghai")).toInstant()); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/RegisterBodyParser.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/RegisterBodyParser.java new file mode 100644 index 00000000..bdd76ca4 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/codec/parser/RegisterBodyParser.java @@ -0,0 +1,54 @@ +package com.lingniu.ingest.protocol.jt808.codec.parser; + +import com.lingniu.ingest.protocol.jt808.codec.BodyParser; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; + +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; + +/** + * 0x0100 终端注册。 + * + *

    2013 body 格式: + *

    + *   provinceId(2)
    + *   cityId(2)
    + *   makerId(5 ASCII)
    + *   deviceType(20 ASCII) -- 2011 版为 8
    + *   deviceId(7 ASCII)
    + *   plateColor(1)
    + *   plate(GBK, 剩余全部字节)
    + * 
    + */ +public final class RegisterBodyParser implements BodyParser { + + private static final Charset GBK = Charset.forName("GBK"); + + @Override + public int messageId() { + return Jt808MessageId.TERMINAL_REGISTER; + } + + @Override + public Jt808Body parse(Jt808Header header, ByteBuffer buf) { + int province = buf.getShort() & 0xFFFF; + int city = buf.getShort() & 0xFFFF; + String maker = readAscii(buf, 5); + String deviceType = readAscii(buf, 20); + String deviceId = readAscii(buf, 7); + int plateColor = buf.get() & 0xFF; + byte[] plateBytes = new byte[buf.remaining()]; + buf.get(plateBytes); + String plate = new String(plateBytes, GBK).trim(); + return new Jt808Body.Register(province, city, maker, deviceType, deviceId, plateColor, plate); + } + + private static String readAscii(ByteBuffer buf, int len) { + byte[] b = new byte[len]; + buf.get(b); + return new String(b, StandardCharsets.US_ASCII).trim(); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/config/Jt808AutoConfiguration.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/config/Jt808AutoConfiguration.java new file mode 100644 index 00000000..cdae3b4c --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/config/Jt808AutoConfiguration.java @@ -0,0 +1,96 @@ +package com.lingniu.ingest.protocol.jt808.config; + +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.protocol.jt808.codec.BodyParser; +import com.lingniu.ingest.protocol.jt808.codec.BodyParserRegistry; +import com.lingniu.ingest.protocol.jt808.codec.Jt808MessageDecoder; +import com.lingniu.ingest.protocol.jt808.codec.parser.HeartbeatBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.parser.LocationBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.parser.RegisterBodyParser; +import com.lingniu.ingest.protocol.jt808.downlink.Jt808CommandDispatcher; +import com.lingniu.ingest.protocol.jt808.handler.Jt808LocationHandler; +import com.lingniu.ingest.protocol.jt808.inbound.Jt808NettyServer; +import com.lingniu.ingest.protocol.jt808.mapper.Jt808EventMapper; +import com.lingniu.ingest.protocol.jt808.session.Jt808ChannelRegistry; +import com.lingniu.ingest.protocol.jt808.session.Jt808PendingRequests; +import com.lingniu.ingest.session.CommandDispatcher; +import com.lingniu.ingest.session.SessionStore; +import com.lingniu.ingest.session.config.SessionCoreAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +import java.util.List; + +@AutoConfiguration(before = SessionCoreAutoConfiguration.class) +@EnableConfigurationProperties(Jt808Properties.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.jt808", name = "enabled", havingValue = "true") +public class Jt808AutoConfiguration { + + @Bean public BodyParser jt808RegisterBodyParser() { return new RegisterBodyParser(); } + @Bean public BodyParser jt808LocationBodyParser() { return new LocationBodyParser(); } + @Bean public BodyParser jt808HeartbeatBodyParser() { return new HeartbeatBodyParser(); } + + @Bean + @ConditionalOnMissingBean + public BodyParserRegistry jt808BodyParserRegistry(List parsers) { + return new BodyParserRegistry(parsers); + } + + @Bean + @ConditionalOnMissingBean + public Jt808MessageDecoder jt808MessageDecoder(BodyParserRegistry registry) { + return new Jt808MessageDecoder(registry); + } + + @Bean + @ConditionalOnMissingBean + public Jt808EventMapper jt808EventMapper() { + return new Jt808EventMapper(); + } + + @Bean + @ConditionalOnMissingBean + public Jt808LocationHandler jt808LocationHandler(Jt808EventMapper mapper) { + return new Jt808LocationHandler(mapper); + } + + @Bean + @ConditionalOnMissingBean + public Jt808ChannelRegistry jt808ChannelRegistry() { + return new Jt808ChannelRegistry(); + } + + @Bean + @ConditionalOnMissingBean + public Jt808PendingRequests jt808PendingRequests() { + return new Jt808PendingRequests(); + } + + /** + * JT808 模块启用时抢占 {@link CommandDispatcher} Bean。 + * 通过 {@code @AutoConfiguration(before = SessionCoreAutoConfiguration.class)} 确保本 Bean + * 先注册,session-core 的 {@code @ConditionalOnMissingBean} 会因此跳过 Noop 默认实现。 + */ + @Bean + @ConditionalOnMissingBean + public CommandDispatcher jt808CommandDispatcher(SessionStore sessions, + Jt808ChannelRegistry channelRegistry, + Jt808PendingRequests pendingRequests) { + return new Jt808CommandDispatcher(sessions, channelRegistry, pendingRequests); + } + + @Bean + @ConditionalOnMissingBean + public Jt808NettyServer jt808NettyServer(Jt808Properties props, + Jt808MessageDecoder decoder, + Dispatcher dispatcher, + SessionStore sessions, + Jt808ChannelRegistry channelRegistry, + Jt808PendingRequests pendingRequests) { + return new Jt808NettyServer(props.getPort(), props.getWorkerThreads(), + decoder, dispatcher, sessions, channelRegistry, pendingRequests); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/config/Jt808Properties.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/config/Jt808Properties.java new file mode 100644 index 00000000..53502be8 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/config/Jt808Properties.java @@ -0,0 +1,17 @@ +package com.lingniu.ingest.protocol.jt808.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties(prefix = "lingniu.ingest.jt808") +public class Jt808Properties { + private boolean enabled = false; + private int port = 10808; + private int workerThreads = 0; + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public int getPort() { return port; } + public void setPort(int port) { this.port = port; } + public int getWorkerThreads() { return workerThreads; } + public void setWorkerThreads(int workerThreads) { this.workerThreads = workerThreads; } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/downlink/Jt808CommandDispatcher.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/downlink/Jt808CommandDispatcher.java new file mode 100644 index 00000000..b203db56 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/downlink/Jt808CommandDispatcher.java @@ -0,0 +1,115 @@ +package com.lingniu.ingest.protocol.jt808.downlink; + +import com.lingniu.ingest.protocol.jt808.codec.Jt808FrameEncoder; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import com.lingniu.ingest.protocol.jt808.session.Jt808ChannelRegistry; +import com.lingniu.ingest.protocol.jt808.session.Jt808PendingRequests; +import com.lingniu.ingest.session.CommandDispatcher; +import com.lingniu.ingest.session.DeviceSession; +import com.lingniu.ingest.session.SessionStore; +import io.netty.buffer.Unpooled; +import io.netty.channel.Channel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.Duration; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.concurrent.TimeUnit; + +/** + * JT808 侧的 {@link CommandDispatcher} 实现:把 session-core 的调用桥接到具体 Netty Channel。 + * + *

    {@link #notify(String, Object)} 异步下发后立即返回; + * {@link #request(String, Object, Class, Duration)} 通过 {@link Jt808PendingRequests} 等待设备应答。 + * + *

    入参 {@code command} 必须是 {@link Jt808Commands.DownlinkCommand},其他类型返回失败 future。 + */ +public final class Jt808CommandDispatcher implements CommandDispatcher { + + private static final Logger log = LoggerFactory.getLogger(Jt808CommandDispatcher.class); + + private final SessionStore sessions; + private final Jt808ChannelRegistry channelRegistry; + private final Jt808PendingRequests pendingRequests; + + public Jt808CommandDispatcher(SessionStore sessions, + Jt808ChannelRegistry channelRegistry, + Jt808PendingRequests pendingRequests) { + this.sessions = sessions; + this.channelRegistry = channelRegistry; + this.pendingRequests = pendingRequests; + } + + @Override + public CompletableFuture notify(String sessionId, Object command) { + CommandContext ctx; + try { + ctx = resolve(sessionId, command); + } catch (IllegalArgumentException e) { + return CompletableFuture.failedFuture(e); + } + byte[] frame = Jt808FrameEncoder.encode(ctx.cmd.messageId(), ctx.phone, ctx.serial, ctx.cmd.body()); + CompletableFuture cf = new CompletableFuture<>(); + ctx.channel.writeAndFlush(Unpooled.wrappedBuffer(frame)).addListener(f -> { + if (f.isSuccess()) cf.complete(null); + else cf.completeExceptionally(f.cause()); + }); + return cf; + } + + @Override + public CompletableFuture request(String sessionId, Object command, + Class responseType, Duration timeout) { + CommandContext ctx; + try { + ctx = resolve(sessionId, command); + } catch (IllegalArgumentException e) { + return CompletableFuture.failedFuture(e); + } + + CompletableFuture pending = pendingRequests.await(ctx.phone, ctx.serial); + byte[] frame = Jt808FrameEncoder.encode(ctx.cmd.messageId(), ctx.phone, ctx.serial, ctx.cmd.body()); + ctx.channel.writeAndFlush(Unpooled.wrappedBuffer(frame)).addListener(f -> { + if (!f.isSuccess()) { + pendingRequests.cancel(ctx.phone, ctx.serial); + pending.completeExceptionally(f.cause()); + } + }); + + return pending.orTimeout(timeout.toMillis(), TimeUnit.MILLISECONDS) + .whenComplete((r, ex) -> { + if (ex != null) pendingRequests.cancel(ctx.phone, ctx.serial); + }) + .thenApply(msg -> { + if (responseType.isInstance(msg)) return responseType.cast(msg); + throw new CompletionException(new ClassCastException( + "jt808 response type mismatch, expect=" + responseType.getSimpleName() + + " actual=" + msg.getClass().getSimpleName())); + }); + } + + private CommandContext resolve(String sessionId, Object command) { + if (!(command instanceof Jt808Commands.DownlinkCommand cmd)) { + throw new IllegalArgumentException( + "expected Jt808Commands.DownlinkCommand, got " + command.getClass().getName()); + } + String phone = resolvePhone(sessionId); + Channel channel = channelRegistry.find(phone) + .orElseThrow(() -> new IllegalStateException("no active channel for phone=" + phone)); + int serial = channelRegistry.nextSerial(phone); + return new CommandContext(phone, serial, channel, cmd); + } + + private String resolvePhone(String sessionId) { + Optional s = sessions.findBySessionId(sessionId) + .or(() -> sessions.findByPhone(sessionId)) + .or(() -> sessions.findByVin(sessionId)); + return s.map(DeviceSession::phone) + .filter(p -> p != null && !p.isBlank()) + .orElse(sessionId); // 回落:直接把 sessionId 当 phone + } + + private record CommandContext(String phone, int serial, Channel channel, Jt808Commands.DownlinkCommand cmd) {} +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/downlink/Jt808Commands.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/downlink/Jt808Commands.java new file mode 100644 index 00000000..41e12d13 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/downlink/Jt808Commands.java @@ -0,0 +1,91 @@ +package com.lingniu.ingest.protocol.jt808.downlink; + +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; + +import java.io.ByteArrayOutputStream; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; + +/** + * 常用下行命令 body 构造器。返回的是 body 字节,外层由 {@link com.lingniu.ingest.protocol.jt808.codec.Jt808FrameEncoder} 包装。 + */ +public final class Jt808Commands { + + private static final Charset GBK = Charset.forName("GBK"); + + private Jt808Commands() {} + + /** 0x8001 平台通用应答(ack 一条终端上行)。 */ + public static DownlinkCommand platformAck(int ackSerial, int ackMsgId, int result) { + ByteArrayOutputStream os = new ByteArrayOutputStream(5); + writeU16(os, ackSerial); + writeU16(os, ackMsgId); + os.write(result & 0xFF); + return new DownlinkCommand(Jt808MessageId.PLATFORM_GENERAL_RESPONSE, os.toByteArray()); + } + + /** 0x8100 注册应答(result=0 成功)。 */ + public static DownlinkCommand registerAck(int ackSerial, int result, String token) { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + writeU16(os, ackSerial); + os.write(result & 0xFF); + if (result == 0 && token != null) { + byte[] tokenBytes = token.getBytes(StandardCharsets.US_ASCII); + os.write(tokenBytes, 0, tokenBytes.length); + } + return new DownlinkCommand(Jt808MessageId.PLATFORM_REGISTER_ACK, os.toByteArray()); + } + + /** 0x8201 位置信息查询。 */ + public static DownlinkCommand queryLocation() { + return new DownlinkCommand(Jt808MessageId.PLATFORM_QUERY_LOCATION, new byte[0]); + } + + /** 0x8104 查询终端参数(全量)。 */ + public static DownlinkCommand queryParameters() { + return new DownlinkCommand(Jt808MessageId.PLATFORM_QUERY_PARAMS, new byte[0]); + } + + /** + * 0x8103 设置终端参数:参数项列表格式。 + * + *

    body 形如 {@code count(1) + N*paramItem},每个 paramItem 为 {@code paramId(4) + length(1) + value}。 + */ + public static DownlinkCommand setParameters(java.util.List items) { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + os.write(items.size() & 0xFF); + for (ParamItem item : items) { + writeU32(os, item.paramId()); + os.write(item.value().length & 0xFF); + os.write(item.value(), 0, item.value().length); + } + return new DownlinkCommand(Jt808MessageId.PLATFORM_SET_PARAMS, os.toByteArray()); + } + + /** 0x8105 终端控制:命令字(1) + 命令参数(GBK)。 */ + public static DownlinkCommand terminalControl(int commandWord, String commandParams) { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + os.write(commandWord & 0xFF); + if (commandParams != null) { + byte[] bytes = commandParams.getBytes(GBK); + os.write(bytes, 0, bytes.length); + } + return new DownlinkCommand(Jt808MessageId.PLATFORM_TERMINAL_CONTROL, os.toByteArray()); + } + + public record DownlinkCommand(int messageId, byte[] body) {} + + public record ParamItem(long paramId, byte[] value) {} + + private static void writeU16(ByteArrayOutputStream os, int v) { + os.write((v >> 8) & 0xFF); + os.write(v & 0xFF); + } + + private static void writeU32(ByteArrayOutputStream os, long v) { + os.write((int) ((v >> 24) & 0xFF)); + os.write((int) ((v >> 16) & 0xFF)); + os.write((int) ((v >> 8) & 0xFF)); + os.write((int) (v & 0xFF)); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/handler/Jt808LocationHandler.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/handler/Jt808LocationHandler.java new file mode 100644 index 00000000..d348b48b --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/handler/Jt808LocationHandler.java @@ -0,0 +1,55 @@ +package com.lingniu.ingest.protocol.jt808.handler; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.annotation.AsyncBatch; +import com.lingniu.ingest.api.annotation.EventEmit; +import com.lingniu.ingest.api.annotation.MessageMapping; +import com.lingniu.ingest.api.annotation.ProtocolHandler; +import com.lingniu.ingest.api.annotation.RateLimited; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.protocol.jt808.mapper.Jt808EventMapper; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; + +import java.util.ArrayList; +import java.util.List; + +/** + * JT808 示例 Handler:演示注解驱动的路由与事件产出。 + * + *

    位置上报使用 {@code @AsyncBatch} 批量聚合(对标旧代码里的 4000/1s 批量落库)。 + * 带 {@code @AsyncBatch} 的方法签名约定为 {@code List}。 + */ +@ProtocolHandler(protocol = ProtocolId.JT808) +public class Jt808LocationHandler { + + private final Jt808EventMapper mapper; + + public Jt808LocationHandler(Jt808EventMapper mapper) { + this.mapper = mapper; + } + + @MessageMapping(command = Jt808MessageId.TERMINAL_LOCATION, desc = "位置信息汇报(批量)") + @RateLimited(perVin = 20) + @AsyncBatch(size = 4000, waitMs = 1000, poolSize = 2) + @EventEmit(VehicleEvent.Location.class) + public List onLocationBatch(List batch) { + List all = new ArrayList<>(batch.size()); + for (Jt808Message msg : batch) { + all.addAll(mapper.toEvents(msg)); + } + return all; + } + + @MessageMapping(command = {Jt808MessageId.TERMINAL_REGISTER, Jt808MessageId.TERMINAL_AUTH}, desc = "注册/鉴权") + @EventEmit(VehicleEvent.Login.class) + public List onLogin(Jt808Message msg) { + return mapper.toEvents(msg); + } + + @MessageMapping(command = Jt808MessageId.TERMINAL_HEARTBEAT, desc = "心跳") + @EventEmit(VehicleEvent.Heartbeat.class) + public List onHeartbeat(Jt808Message msg) { + return mapper.toEvents(msg); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/inbound/Jt808ChannelHandler.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/inbound/Jt808ChannelHandler.java new file mode 100644 index 00000000..908b904b --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/inbound/Jt808ChannelHandler.java @@ -0,0 +1,165 @@ +package com.lingniu.ingest.protocol.jt808.inbound; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.pipeline.RawFrame; +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.protocol.jt808.codec.Jt808FrameEncoder; +import com.lingniu.ingest.protocol.jt808.codec.Jt808MessageDecoder; +import com.lingniu.ingest.protocol.jt808.downlink.Jt808Commands; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; +import com.lingniu.ingest.protocol.jt808.session.Jt808ChannelRegistry; +import com.lingniu.ingest.protocol.jt808.session.Jt808PendingRequests; +import com.lingniu.ingest.session.DeviceSession; +import com.lingniu.ingest.session.SessionStore; +import io.netty.buffer.Unpooled; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * JT808 Netty 入站处理器。职责: + *

      + *
    1. 解码 → 构造 RawFrame → 交给 {@link Dispatcher} + *
    2. 对 0x0100 注册 / 0x0102 鉴权 → 创建 / 更新 {@link DeviceSession} 并绑定 Channel + *
    3. 对 0x0001 终端通用应答 → 唤醒 {@link Jt808PendingRequests} 里等待的 future + *
    4. 对 0x0002 心跳 → 下发 0x8001 通用应答(若平台要求) + *
    5. 连接断开 → 清理 Channel 绑定 + *
    + */ +public class Jt808ChannelHandler extends SimpleChannelInboundHandler { + + private static final Logger log = LoggerFactory.getLogger(Jt808ChannelHandler.class); + + private final Jt808MessageDecoder decoder; + private final Dispatcher dispatcher; + private final SessionStore sessions; + private final Jt808ChannelRegistry channelRegistry; + private final Jt808PendingRequests pendingRequests; + + public Jt808ChannelHandler(Jt808MessageDecoder decoder, Dispatcher dispatcher, + SessionStore sessions, Jt808ChannelRegistry channelRegistry, + Jt808PendingRequests pendingRequests) { + this.decoder = decoder; + this.dispatcher = dispatcher; + this.sessions = sessions; + this.channelRegistry = channelRegistry; + this.pendingRequests = pendingRequests; + } + + @Override + protected void channelRead0(ChannelHandlerContext ctx, byte[] frame) { + Jt808Message msg; + try { + msg = decoder.decode(ByteBuffer.wrap(frame)); + } catch (Exception e) { + log.warn("[jt808] decode failed peer={} len={}", addr(ctx), frame.length, e); + return; + } + + // ====== 会话维护 & 同步应答匹配 ====== + String phone = msg.header().phone(); + switch (msg.header().messageId()) { + case Jt808MessageId.TERMINAL_REGISTER -> { + DeviceSession session = upsertSession(ctx, msg); + channelRegistry.bind(phone, ctx.channel()); + byte[] registerAck = Jt808FrameEncoder.encode( + Jt808Commands.registerAck(msg.header().serialNo(), 0, session.token()).messageId(), + phone, + channelRegistry.nextSerial(phone), + Jt808Commands.registerAck(msg.header().serialNo(), 0, session.token()).body()); + ctx.writeAndFlush(Unpooled.wrappedBuffer(registerAck)); + } + case Jt808MessageId.TERMINAL_AUTH -> { + upsertSession(ctx, msg); + channelRegistry.bind(phone, ctx.channel()); + ackTerminal(ctx, phone, msg.header().serialNo(), msg.header().messageId(), 0); + } + case Jt808MessageId.TERMINAL_HEARTBEAT -> { + channelRegistry.bind(phone, ctx.channel()); + ackTerminal(ctx, phone, msg.header().serialNo(), msg.header().messageId(), 0); + } + case Jt808MessageId.TERMINAL_GENERAL_RESPONSE -> { + // body: ackSerial(2) + ackMsgId(2) + result(1) + if (msg.body() instanceof Jt808Body.Raw raw && raw.bytes().length >= 5) { + int ackSerial = ((raw.bytes()[0] & 0xFF) << 8) | (raw.bytes()[1] & 0xFF); + pendingRequests.complete(phone, ackSerial, msg); + } + } + default -> { + // 定位/其他上行:也可能是对同步命令的应答 + pendingRequests.complete(phone, msg.header().serialNo(), msg); + } + } + + // ====== 派发到 Dispatcher ====== + Map meta = new HashMap<>(4); + meta.put("vin", phone); + meta.put("seq", Integer.toString(msg.header().serialNo())); + meta.put("peer", addr(ctx)); + RawFrame rf = new RawFrame( + ProtocolId.JT808, + msg.header().messageId(), + 0, + msg, + frame, + meta, + Instant.now()); + dispatcher.dispatch(rf); + } + + private DeviceSession upsertSession(ChannelHandlerContext ctx, Jt808Message msg) { + String phone = msg.header().phone(); + String sessionId = "jt808-" + phone; + DeviceSession session = sessions.findBySessionId(sessionId) + .map(s -> s.touch(Instant.now())) + .orElseGet(() -> new DeviceSession( + sessionId, ProtocolId.JT808, null, phone, + generateToken(phone), + addr(ctx), + Instant.now(), Instant.now(), + Map.of("protocolVersion", msg.header().version().name()))); + if (msg.body() instanceof Jt808Body.Register reg && reg.plate() != null) { + session = session.withVin(reg.deviceId()); // 没有 VIN 则用 deviceId 占位 + } + sessions.put(session); + return session; + } + + private void ackTerminal(ChannelHandlerContext ctx, String phone, int ackSerial, int ackMsgId, int result) { + var cmd = Jt808Commands.platformAck(ackSerial, ackMsgId, result); + byte[] frame = Jt808FrameEncoder.encode(cmd.messageId(), phone, channelRegistry.nextSerial(phone), cmd.body()); + ctx.writeAndFlush(Unpooled.wrappedBuffer(frame)); + } + + private static String generateToken(String phone) { + return UUID.nameUUIDFromBytes(("jt808:" + phone).getBytes()).toString().replace("-", "").substring(0, 16); + } + + @Override + public void channelInactive(ChannelHandlerContext ctx) { + channelRegistry.unbind(ctx.channel()); + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { + log.warn("[jt808] channel error peer={}", addr(ctx), cause); + ctx.close(); + } + + private static String addr(ChannelHandlerContext ctx) { + if (ctx.channel().remoteAddress() instanceof InetSocketAddress i) { + return i.getAddress().getHostAddress() + ":" + i.getPort(); + } + return "unknown"; + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/inbound/Jt808NettyServer.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/inbound/Jt808NettyServer.java new file mode 100644 index 00000000..0c456f54 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/inbound/Jt808NettyServer.java @@ -0,0 +1,95 @@ +package com.lingniu.ingest.protocol.jt808.inbound; + +import com.lingniu.ingest.core.dispatcher.Dispatcher; +import com.lingniu.ingest.protocol.jt808.codec.Jt808FrameDecoder; +import com.lingniu.ingest.protocol.jt808.codec.Jt808MessageDecoder; +import com.lingniu.ingest.protocol.jt808.session.Jt808ChannelRegistry; +import com.lingniu.ingest.protocol.jt808.session.Jt808PendingRequests; +import com.lingniu.ingest.session.SessionStore; +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.beans.factory.InitializingBean; + +import java.util.concurrent.ThreadFactory; + +public class Jt808NettyServer implements InitializingBean, DisposableBean { + + private static final Logger log = LoggerFactory.getLogger(Jt808NettyServer.class); + + private final int port; + private final int workerThreads; + private final Jt808MessageDecoder messageDecoder; + private final Dispatcher dispatcher; + private final SessionStore sessions; + private final Jt808ChannelRegistry channelRegistry; + private final Jt808PendingRequests pendingRequests; + + private EventLoopGroup boss; + private EventLoopGroup workers; + private Channel serverChannel; + + public Jt808NettyServer(int port, int workerThreads, + Jt808MessageDecoder messageDecoder, Dispatcher dispatcher, + SessionStore sessions, + Jt808ChannelRegistry channelRegistry, + Jt808PendingRequests pendingRequests) { + this.port = port; + this.workerThreads = workerThreads; + this.messageDecoder = messageDecoder; + this.dispatcher = dispatcher; + this.sessions = sessions; + this.channelRegistry = channelRegistry; + this.pendingRequests = pendingRequests; + } + + @Override + public void afterPropertiesSet() throws Exception { + ThreadFactory bossTf = r -> new Thread(r, "jt808-boss"); + ThreadFactory wkTf = r -> new Thread(r, "jt808-worker"); + this.boss = new NioEventLoopGroup(1, bossTf); + this.workers = new NioEventLoopGroup( + workerThreads == 0 ? Runtime.getRuntime().availableProcessors() * 2 : workerThreads, + wkTf); + + ServerBootstrap b = new ServerBootstrap(); + b.group(boss, workers) + .channel(NioServerSocketChannel.class) + .option(ChannelOption.SO_BACKLOG, 1024) + .childOption(ChannelOption.TCP_NODELAY, true) + .childOption(ChannelOption.SO_KEEPALIVE, true) + .childHandler(new ChannelInitializer() { + @Override + protected void initChannel(SocketChannel ch) { + ch.pipeline() + .addLast("frame", new Jt808FrameDecoder()) + .addLast("dispatch", new Jt808ChannelHandler( + messageDecoder, dispatcher, sessions, + channelRegistry, pendingRequests)); + } + }); + this.serverChannel = b.bind(port).sync().channel(); + log.info("[jt808] Netty server listening on :{}", port); + } + + @Override + public void destroy() { + try { + if (serverChannel != null) serverChannel.close().sync(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } finally { + if (boss != null) boss.shutdownGracefully(); + if (workers != null) workers.shutdownGracefully(); + log.info("[jt808] Netty server stopped"); + } + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/mapper/Jt808EventMapper.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/mapper/Jt808EventMapper.java new file mode 100644 index 00000000..abcbc4a0 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/mapper/Jt808EventMapper.java @@ -0,0 +1,58 @@ +package com.lingniu.ingest.protocol.jt808.mapper; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.event.LocationPayload; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.spi.EventMapper; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; + +import java.time.Instant; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * JT808 消息 → 领域事件映射。sealed body 允许 switch 穷尽处理。 + * + *

    备注:JT808 里没有强制的 VIN 字段 —— 我们用 {@code phone}(终端手机号/设备号) + * 作为 VIN 占位,真实 VIN 需要通过后续的 session-core 从注册消息里补齐。 + */ +public final class Jt808EventMapper implements EventMapper { + + @Override + public List toEvents(Jt808Message message) { + var header = message.header(); + Instant ingestTime = Instant.now(); + Map meta = Map.of( + "messageId", "0x" + Integer.toHexString(header.messageId()), + "protocolVersion", header.version().name(), + "phone", header.phone()); + String vin = header.phone(); // TODO: 由 session-core 注入真实 VIN + + return switch (message.body()) { + case Jt808Body.Location loc -> List.of(new VehicleEvent.Location( + UUID.randomUUID().toString(), + vin, ProtocolId.JT808, loc.deviceTime(), ingestTime, null, meta, + new LocationPayload(loc.longitude(), loc.latitude(), + loc.altitudeM(), loc.speedKmh(), loc.directionDeg(), + loc.alarmFlag(), loc.statusFlag()))); + + case Jt808Body.Register reg -> List.of(new VehicleEvent.Login( + UUID.randomUUID().toString(), + vin, ProtocolId.JT808, ingestTime, ingestTime, null, meta, + reg.deviceId(), header.version().name())); + + case Jt808Body.Auth auth -> List.of(new VehicleEvent.Login( + UUID.randomUUID().toString(), + vin, ProtocolId.JT808, ingestTime, ingestTime, null, meta, + auth.imei() == null ? "" : auth.imei(), header.version().name())); + + case Jt808Body.Heartbeat _ -> List.of(new VehicleEvent.Heartbeat( + UUID.randomUUID().toString(), + vin, ProtocolId.JT808, ingestTime, ingestTime, null, meta)); + + case Jt808Body.Raw _ -> List.of(); // 未解析的消息体:暂不产出事件 + }; + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Body.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Body.java new file mode 100644 index 00000000..e9334bb5 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Body.java @@ -0,0 +1,43 @@ +package com.lingniu.ingest.protocol.jt808.model; + +import java.time.Instant; + +/** + * 已解析的消息体。sealed,新增消息体时必须同步新增子类型与 Parser。 + */ +public sealed interface Jt808Body + permits Jt808Body.Register, Jt808Body.Auth, Jt808Body.Location, + Jt808Body.Heartbeat, Jt808Body.Raw { + + /** 终端注册 0x0100。 */ + record Register( + int province, + int city, + String maker, + String deviceType, + String deviceId, + int plateColor, + String plate + ) implements Jt808Body {} + + /** 终端鉴权 0x0102。 */ + record Auth(String token, String imei, String softwareVersion) implements Jt808Body {} + + /** 位置信息汇报 0x0200。 */ + record Location( + long alarmFlag, + long statusFlag, + double longitude, + double latitude, + int altitudeM, + double speedKmh, + int directionDeg, + Instant deviceTime + ) implements Jt808Body {} + + /** 心跳 0x0002(无 body)。 */ + record Heartbeat() implements Jt808Body {} + + /** 未实现 Parser 的消息体,透传原始字节。 */ + record Raw(int messageId, byte[] bytes) implements Jt808Body {} +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Header.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Header.java new file mode 100644 index 00000000..e1ce252b --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Header.java @@ -0,0 +1,28 @@ +package com.lingniu.ingest.protocol.jt808.model; + +/** + * JT/T 808 消息头。 + * + * @param messageId 消息 ID + * @param bodyLength 消息体长度(从 attrs 低 10 位解出) + * @param encryptType 加密类型(0=不加密 / 1=RSA) + * @param subpacket 是否分包 + * @param version 协议版本(2013 或 2019) + * @param phone 终端手机号 / 设备识别号(2013:12 位,2019:20 位) + * @param serialNo 消息流水号 + * @param totalPackets 分包总数(不分包时为 0) + * @param packetSeq 分包序号(从 1 开始) + */ +public record Jt808Header( + int messageId, + int bodyLength, + int encryptType, + boolean subpacket, + ProtocolVersion version, + String phone, + int serialNo, + int totalPackets, + int packetSeq +) { + public enum ProtocolVersion { V2013, V2019 } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Message.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Message.java new file mode 100644 index 00000000..61a60bb2 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808Message.java @@ -0,0 +1,6 @@ +package com.lingniu.ingest.protocol.jt808.model; + +/** + * 完整解析后的 JT808 消息。 + */ +public record Jt808Message(Jt808Header header, Jt808Body body) {} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808MessageId.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808MessageId.java new file mode 100644 index 00000000..90b45866 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/model/Jt808MessageId.java @@ -0,0 +1,36 @@ +package com.lingniu.ingest.protocol.jt808.model; + +/** + * JT/T 808 消息 ID 常量集(节选核心消息,按需继续扩展)。 + * + *

    使用常量类而非 enum:808 消息种类多(超过 80 个),新增高频,常量类比 enum 维护成本更低。 + */ +public final class Jt808MessageId { + + private Jt808MessageId() {} + + // ===== 终端上行 ===== + public static final int TERMINAL_GENERAL_RESPONSE = 0x0001; + public static final int TERMINAL_HEARTBEAT = 0x0002; + public static final int TERMINAL_UNREGISTER = 0x0003; + public static final int TERMINAL_REGISTER = 0x0100; + public static final int TERMINAL_AUTH = 0x0102; + public static final int TERMINAL_PARAMS_REPORT = 0x0104; + public static final int TERMINAL_ATTRS_REPORT = 0x0107; + public static final int TERMINAL_LOCATION = 0x0200; + public static final int TERMINAL_LOCATION_BATCH = 0x0704; + public static final int TERMINAL_EVENT_REPORT = 0x0301; + public static final int TERMINAL_CAN_DATA_REPORT = 0x0705; + public static final int TERMINAL_MEDIA_EVENT = 0x0800; + public static final int TERMINAL_MEDIA_UPLOAD = 0x0801; + public static final int TERMINAL_PASSTHROUGH = 0x0900; + + // ===== 平台下行 ===== + public static final int PLATFORM_GENERAL_RESPONSE = 0x8001; + public static final int PLATFORM_REGISTER_ACK = 0x8100; + public static final int PLATFORM_SET_PARAMS = 0x8103; + public static final int PLATFORM_QUERY_PARAMS = 0x8104; + public static final int PLATFORM_TERMINAL_CONTROL = 0x8105; + public static final int PLATFORM_QUERY_LOCATION = 0x8201; + public static final int PLATFORM_TRACK_CONTROL = 0x8202; +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/session/Jt808ChannelRegistry.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/session/Jt808ChannelRegistry.java new file mode 100644 index 00000000..6b38c2d9 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/session/Jt808ChannelRegistry.java @@ -0,0 +1,62 @@ +package com.lingniu.ingest.protocol.jt808.session; + +import io.netty.channel.Channel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * JT808 终端 Channel 注册表。按 {@code phone} 索引,一个 phone 对应一个活跃 Channel。 + * + *

    {@link Jt808CommandDispatcher} 通过本类查 Channel;{@code Jt808ChannelHandler} 在 + * 连接建立 / 断开 / 鉴权完成时维护映射。 + * + *

    线程安全:{@link ConcurrentHashMap}。 + */ +public final class Jt808ChannelRegistry { + + private static final Logger log = LoggerFactory.getLogger(Jt808ChannelRegistry.class); + + private final ConcurrentMap byPhone = new ConcurrentHashMap<>(); + private final ConcurrentMap reverse = new ConcurrentHashMap<>(); + private final ConcurrentMap serials = new ConcurrentHashMap<>(); + + public void bind(String phone, Channel channel) { + if (phone == null || phone.isBlank() || channel == null) return; + Channel old = byPhone.put(phone, channel); + reverse.put(channel, phone); + if (old != null && old != channel) { + reverse.remove(old); + old.close(); + log.info("channel rebound phone={} oldChannel={} newChannel={}", phone, old.id(), channel.id()); + } + } + + public Optional find(String phone) { + if (phone == null) return Optional.empty(); + Channel c = byPhone.get(phone); + if (c == null || !c.isActive()) { + if (c != null) unbind(c); + return Optional.empty(); + } + return Optional.of(c); + } + + public void unbind(Channel channel) { + String phone = reverse.remove(channel); + if (phone != null) byPhone.remove(phone, channel); + } + + public int nextSerial(String phone) { + return serials.computeIfAbsent(phone, k -> new AtomicInteger()) + .updateAndGet(i -> (i + 1) & 0xFFFF); + } + + public int size() { + return byPhone.size(); + } +} diff --git a/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/session/Jt808PendingRequests.java b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/session/Jt808PendingRequests.java new file mode 100644 index 00000000..58b57f93 --- /dev/null +++ b/protocol-jt808/src/main/java/com/lingniu/ingest/protocol/jt808/session/Jt808PendingRequests.java @@ -0,0 +1,51 @@ +package com.lingniu.ingest.protocol.jt808.session; + +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * 下行命令的请求/应答同步匹配表。 + * + *

    调用 {@link #await(String, int)} 时注册一个 {@link CompletableFuture}, + * 对应 key = {@code phone + ':' + serial};当 {@code Jt808ChannelHandler} 收到 0x0001 通用应答 + * 或其它同步应答消息时调用 {@link #complete(String, int, Jt808Message)} 触发 future 完成。 + */ +public final class Jt808PendingRequests { + + private static final Logger log = LoggerFactory.getLogger(Jt808PendingRequests.class); + + private final ConcurrentMap> pending = new ConcurrentHashMap<>(); + + public CompletableFuture await(String phone, int serial) { + CompletableFuture cf = new CompletableFuture<>(); + pending.put(key(phone, serial), cf); + return cf; + } + + public void complete(String phone, int serial, Jt808Message response) { + CompletableFuture cf = pending.remove(key(phone, serial)); + if (cf != null) { + cf.complete(response); + } else { + log.debug("no pending request for phone={} serial={}", phone, serial); + } + } + + public void cancel(String phone, int serial) { + CompletableFuture cf = pending.remove(key(phone, serial)); + if (cf != null) cf.cancel(true); + } + + public int size() { + return pending.size(); + } + + private static String key(String phone, int serial) { + return phone + ":" + serial; + } +} diff --git a/protocol-jt808/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/protocol-jt808/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..9af2ea7e --- /dev/null +++ b/protocol-jt808/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.protocol.jt808.config.Jt808AutoConfiguration diff --git a/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808DecoderGoldenTest.java b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808DecoderGoldenTest.java new file mode 100644 index 00000000..94c366fb --- /dev/null +++ b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808DecoderGoldenTest.java @@ -0,0 +1,79 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import com.lingniu.ingest.protocol.jt808.codec.parser.HeartbeatBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.parser.LocationBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.parser.RegisterBodyParser; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * JT808 黄金样本集回放测试:遍历 {@code src/test/resources/samples/jt808/*.hex}。 + * + *

    样本文件格式:一行十六进制(完整 0x7e 包裹帧),脚本脱敏产出。 + * 测试会去掉首尾 0x7e,执行反转义后调用 {@link Jt808MessageDecoder}。 + */ +class Jt808DecoderGoldenTest { + + private final Jt808MessageDecoder decoder = new Jt808MessageDecoder( + new BodyParserRegistry(List.of( + new RegisterBodyParser(), + new LocationBodyParser(), + new HeartbeatBodyParser()))); + + @TestFactory + Collection replaySamples() throws URISyntaxException, IOException { + var url = getClass().getClassLoader().getResource("samples/jt808"); + if (url == null) return List.of(); + Path dir = Paths.get(url.toURI()); + try (Stream s = Files.list(dir)) { + return s.filter(p -> p.toString().endsWith(".hex")) + .sorted() + .map(this::toTest) + .collect(Collectors.toList()); + } + } + + private DynamicTest toTest(Path sample) { + return DynamicTest.dynamicTest(sample.getFileName().toString(), () -> { + byte[] framed = readHex(sample); + assertThat(framed[0]).as("must start with 0x7e").isEqualTo((byte) 0x7e); + assertThat(framed[framed.length - 1]).as("must end with 0x7e").isEqualTo((byte) 0x7e); + + byte[] unescaped = Jt808Escape.unescape(framed, 1, framed.length - 2); + Jt808Message msg = decoder.decode(ByteBuffer.wrap(unescaped)); + + assertThat(msg.header().messageId()).isNotNegative(); + assertThat(msg.header().phone()).isNotEmpty(); + }); + } + + private static byte[] readHex(Path path) throws IOException { + StringBuilder sb = new StringBuilder(); + for (String line : Files.readAllLines(path)) { + String trimmed = line.trim(); + if (trimmed.isEmpty() || trimmed.startsWith("#")) continue; + sb.append(trimmed); + } + String hex = sb.toString(); + int len = hex.length() / 2; + byte[] out = new byte[len]; + for (int i = 0; i < len; i++) { + out[i] = (byte) Integer.parseInt(hex.substring(i * 2, i * 2 + 2), 16); + } + return out; + } +} diff --git a/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808DecoderTest.java b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808DecoderTest.java new file mode 100644 index 00000000..bcca163e --- /dev/null +++ b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808DecoderTest.java @@ -0,0 +1,98 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import com.lingniu.ingest.codec.BccChecksum; +import com.lingniu.ingest.codec.BcdCodec; +import com.lingniu.ingest.protocol.jt808.codec.parser.HeartbeatBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.parser.LocationBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.parser.RegisterBodyParser; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class Jt808DecoderTest { + + private final Jt808MessageDecoder decoder = new Jt808MessageDecoder( + new BodyParserRegistry(List.of( + new RegisterBodyParser(), + new LocationBodyParser(), + new HeartbeatBodyParser()))); + + @Test + void decodesSyntheticLocationFrame() { + byte[] body = buildLocationBody(); + byte[] frame = buildFrame(Jt808MessageId.TERMINAL_LOCATION, "123456789012", 0x0001, body); + Jt808Message msg = decoder.decode(ByteBuffer.wrap(frame)); + + assertThat(msg.header().messageId()).isEqualTo(Jt808MessageId.TERMINAL_LOCATION); + assertThat(msg.header().phone()).isEqualTo("123456789012"); + assertThat(msg.header().serialNo()).isEqualTo(1); + + assertThat(msg.body()).isInstanceOf(Jt808Body.Location.class); + Jt808Body.Location loc = (Jt808Body.Location) msg.body(); + assertThat(loc.longitude()).isEqualTo(116.397128, org.assertj.core.data.Offset.offset(0.000001)); + assertThat(loc.latitude()).isEqualTo(39.916527, org.assertj.core.data.Offset.offset(0.000001)); + assertThat(loc.speedKmh()).isEqualTo(52.3, org.assertj.core.data.Offset.offset(0.01)); + } + + @Test + void decodesSyntheticHeartbeatFrame() { + byte[] frame = buildFrame(Jt808MessageId.TERMINAL_HEARTBEAT, "123456789012", 0x0002, new byte[0]); + Jt808Message msg = decoder.decode(ByteBuffer.wrap(frame)); + assertThat(msg.header().messageId()).isEqualTo(Jt808MessageId.TERMINAL_HEARTBEAT); + assertThat(msg.body()).isInstanceOf(Jt808Body.Heartbeat.class); + } + + // ===== helpers ===== + + private static byte[] buildLocationBody() { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + writeU32(os, 0); // alarmFlag + writeU32(os, 0x00030000); // statusFlag + writeU32(os, 39_916_527L); // lat + writeU32(os, 116_397_128L); // lon + writeU16(os, 50); // altitude + writeU16(os, 523); // speed 52.3 + writeU16(os, 90); // direction + byte[] bcd = BcdCodec.encode("240102030405"); + os.write(bcd, 0, 6); + return os.toByteArray(); + } + + private static byte[] buildFrame(int msgId, String phone, int serial, byte[] body) { + // header: msgId(2) attrs(2) phone(6 BCD) serial(2) + ByteArrayOutputStream os = new ByteArrayOutputStream(); + writeU16(os, msgId); + int attrs = body.length & 0x03FF; // 2013 版,无子包、无加密 + writeU16(os, attrs); + byte[] phoneBcd = BcdCodec.encode(phone); + os.write(phoneBcd, 0, 6); + writeU16(os, serial); + os.write(body, 0, body.length); + byte[] raw = os.toByteArray(); + byte bcc = BccChecksum.compute(raw, 0, raw.length); + + ByteArrayOutputStream framed = new ByteArrayOutputStream(); + framed.write(raw, 0, raw.length); + framed.write(bcc & 0xFF); + return framed.toByteArray(); + } + + private static void writeU16(ByteArrayOutputStream os, int v) { + os.write((v >> 8) & 0xFF); + os.write(v & 0xFF); + } + + private static void writeU32(ByteArrayOutputStream os, long v) { + os.write((int) ((v >> 24) & 0xFF)); + os.write((int) ((v >> 16) & 0xFF)); + os.write((int) ((v >> 8) & 0xFF)); + os.write((int) (v & 0xFF)); + } +} diff --git a/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808EscapeTest.java b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808EscapeTest.java new file mode 100644 index 00000000..677e8276 --- /dev/null +++ b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808EscapeTest.java @@ -0,0 +1,25 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class Jt808EscapeTest { + + @Test + void roundTrip() { + byte[] raw = {0x30, 0x7e, 0x08, 0x7d, (byte) 0xFF}; + byte[] escaped = Jt808Escape.escape(raw); + assertThat(escaped).containsExactly(0x30, 0x7d, 0x02, 0x08, 0x7d, 0x01, 0xFF); + + byte[] back = Jt808Escape.unescape(escaped, 0, escaped.length); + assertThat(back).containsExactly(raw[0], raw[1], raw[2], raw[3], raw[4]); + } + + @Test + void noEscapeNeeded() { + byte[] raw = {0x01, 0x02, 0x03}; + assertThat(Jt808Escape.escape(raw)).containsExactly(0x01, 0x02, 0x03); + assertThat(Jt808Escape.unescape(raw, 0, raw.length)).containsExactly(0x01, 0x02, 0x03); + } +} diff --git a/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameEncoderTest.java b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameEncoderTest.java new file mode 100644 index 00000000..e6e93933 --- /dev/null +++ b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/codec/Jt808FrameEncoderTest.java @@ -0,0 +1,57 @@ +package com.lingniu.ingest.protocol.jt808.codec; + +import com.lingniu.ingest.protocol.jt808.codec.parser.HeartbeatBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.parser.LocationBodyParser; +import com.lingniu.ingest.protocol.jt808.codec.parser.RegisterBodyParser; +import com.lingniu.ingest.protocol.jt808.downlink.Jt808Commands; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; +import org.junit.jupiter.api.Test; + +import java.nio.ByteBuffer; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 端到端验证:encoder 生成的下行帧可以被 decoder 反向解析,且字段对称。 + */ +class Jt808FrameEncoderTest { + + private final Jt808MessageDecoder decoder = new Jt808MessageDecoder( + new BodyParserRegistry(List.of( + new RegisterBodyParser(), + new LocationBodyParser(), + new HeartbeatBodyParser()))); + + @Test + void encodeThenDecodePlatformAck() { + var cmd = Jt808Commands.platformAck(0x1234, 0x0200, 0); + byte[] framed = Jt808FrameEncoder.encode(cmd.messageId(), "123456789012", 7, cmd.body()); + + // strip outer 0x7e and unescape + byte[] unescaped = Jt808Escape.unescape(framed, 1, framed.length - 2); + Jt808Message msg = decoder.decode(ByteBuffer.wrap(unescaped)); + + assertThat(msg.header().messageId()).isEqualTo(Jt808MessageId.PLATFORM_GENERAL_RESPONSE); + assertThat(msg.header().phone()).isEqualTo("123456789012"); + assertThat(msg.header().serialNo()).isEqualTo(7); + assertThat(msg.body()).isInstanceOf(Jt808Body.Raw.class); + Jt808Body.Raw raw = (Jt808Body.Raw) msg.body(); + // body: ackSerial(2) + ackMsgId(2) + result(1) = 5 bytes + assertThat(raw.bytes()).hasSize(5); + } + + @Test + void encodeQueryLocationProducesFramedWith7eBoundary() { + byte[] framed = Jt808FrameEncoder.encode( + Jt808MessageId.PLATFORM_QUERY_LOCATION, "123456789012", 1, new byte[0]); + assertThat(framed[0]).isEqualTo((byte) 0x7e); + assertThat(framed[framed.length - 1]).isEqualTo((byte) 0x7e); + // 中间不应出现裸 0x7e + for (int i = 1; i < framed.length - 1; i++) { + assertThat(framed[i]).isNotEqualTo((byte) 0x7e); + } + } +} diff --git a/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/mapper/Jt808EventMapperTest.java b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/mapper/Jt808EventMapperTest.java new file mode 100644 index 00000000..53dbb73e --- /dev/null +++ b/protocol-jt808/src/test/java/com/lingniu/ingest/protocol/jt808/mapper/Jt808EventMapperTest.java @@ -0,0 +1,46 @@ +package com.lingniu.ingest.protocol.jt808.mapper; + +import com.lingniu.ingest.api.ProtocolId; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.protocol.jt808.model.Jt808Body; +import com.lingniu.ingest.protocol.jt808.model.Jt808Header; +import com.lingniu.ingest.protocol.jt808.model.Jt808Message; +import com.lingniu.ingest.protocol.jt808.model.Jt808MessageId; +import org.junit.jupiter.api.Test; + +import java.time.Instant; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class Jt808EventMapperTest { + + private final Jt808EventMapper mapper = new Jt808EventMapper(); + + @Test + void locationBodyProducesLocationEvent() { + var header = new Jt808Header( + Jt808MessageId.TERMINAL_LOCATION, 28, 0, false, + Jt808Header.ProtocolVersion.V2013, "123456789012", 1, 0, 0); + var body = new Jt808Body.Location( + 0, 0, 116.397128, 39.916527, 50, 52.3, 90, Instant.parse("2024-01-02T03:04:05Z")); + var msg = new Jt808Message(header, body); + + List events = mapper.toEvents(msg); + + assertThat(events).hasSize(1); + assertThat(events.get(0)).isInstanceOf(VehicleEvent.Location.class); + assertThat(events.get(0).source()).isEqualTo(ProtocolId.JT808); + assertThat(events.get(0).vin()).isEqualTo("123456789012"); + } + + @Test + void heartbeatBodyProducesHeartbeatEvent() { + var header = new Jt808Header( + Jt808MessageId.TERMINAL_HEARTBEAT, 0, 0, false, + Jt808Header.ProtocolVersion.V2013, "123456789012", 1, 0, 0); + var msg = new Jt808Message(header, new Jt808Body.Heartbeat()); + assertThat(mapper.toEvents(msg)).hasSize(1) + .first().isInstanceOf(VehicleEvent.Heartbeat.class); + } +} diff --git a/protocol-jt808/src/test/resources/samples/jt808/auth_001.hex b/protocol-jt808/src/test/resources/samples/jt808/auth_001.hex new file mode 100644 index 00000000..48bcc762 --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/auth_001.hex @@ -0,0 +1 @@ +7e010200070000000000230000687569746f6e67417e diff --git a/protocol-jt808/src/test/resources/samples/jt808/auth_002.hex b/protocol-jt808/src/test/resources/samples/jt808/auth_002.hex new file mode 100644 index 00000000..9ef924e7 --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/auth_002.hex @@ -0,0 +1 @@ +7e0102001800000000006500016e65382f51525a50664738596f7145575155577236513d3d607e diff --git a/protocol-jt808/src/test/resources/samples/jt808/location_001.hex b/protocol-jt808/src/test/resources/samples/jt808/location_001.hex new file mode 100644 index 00000000..c515a631 --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/location_001.hex @@ -0,0 +1 @@ +7e02000036000000000001072d000000000008000301ceb03b0732f26e000d02af0010260413123353010400052425020200000302000025040000000030011f3101192c7e diff --git a/protocol-jt808/src/test/resources/samples/jt808/location_002.hex b/protocol-jt808/src/test/resources/samples/jt808/location_002.hex new file mode 100644 index 00000000..1832fb3a --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/location_002.hex @@ -0,0 +1 @@ +7e020040460100000000000000000002002c00000000000c000301bb0e2107213304003f0000010d26041312335514040000000017020000010400006722030200002504000000002a020000300115310118ea0402008000fb7e diff --git a/protocol-jt808/src/test/resources/samples/jt808/location_010.hex b/protocol-jt808/src/test/resources/samples/jt808/location_010.hex new file mode 100644 index 00000000..2819da10 --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/location_010.hex @@ -0,0 +1 @@ +7e020000360000000000100278000000000008000301d596aa0735b9910001004b01472604131234030104000a42c10202000003020000250400000000300115310117107e diff --git a/protocol-jt808/src/test/resources/samples/jt808/location_100.hex b/protocol-jt808/src/test/resources/samples/jt808/location_100.hex new file mode 100644 index 00000000..fa3a3be1 --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/location_100.hex @@ -0,0 +1 @@ +7e020000360000000001020443000000000008000301d2d74907376cde000f00000000260413123354010400078789020200000302000025040000000030011b310112db7e diff --git a/protocol-jt808/src/test/resources/samples/jt808/location_200.hex b/protocol-jt808/src/test/resources/samples/jt808/location_200.hex new file mode 100644 index 00000000..ce0d2a99 --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/location_200.hex @@ -0,0 +1 @@ +7e02004048010000000000000000020204d2000000000048000301cc1d4f073ed6640010033301492604131234001404000000001702000001040000f0542504000000002a02000030011f310110ea04020c8300ef0400000000d67e diff --git a/protocol-jt808/src/test/resources/samples/jt808/location_400.hex b/protocol-jt808/src/test/resources/samples/jt808/location_400.hex new file mode 100644 index 00000000..3540edbf --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/location_400.hex @@ -0,0 +1 @@ +7e02000036000000000413013d000000000008000201d392280736f1e30007000000002604131311220104000f334a020200000302000025040000000030011931010a097e diff --git a/protocol-jt808/src/test/resources/samples/jt808/location_batch_001.hex b/protocol-jt808/src/test/resources/samples/jt808/location_batch_001.hex new file mode 100644 index 00000000..104ef178 --- /dev/null +++ b/protocol-jt808/src/test/resources/samples/jt808/location_batch_001.hex @@ -0,0 +1 @@ +7e0704003b000000000058034e0001010036000000000008000301e26c120725c15100110000000726041313111301040006ffc6030200002504000000002a02000030010a31010c3c7e diff --git a/reference/GBT+32960.3-2016.pdf b/reference/GBT+32960.3-2016.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8b9a945e7b28d51b08612a94c7626c386c9aa7d8 GIT binary patch literal 1152211 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%0DP#67M)fCOV)4UG;W^=7kNm6;Qf$_VS0 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%0Abkx?9>N2j__{6=2U1ai=1LH*{? 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[_&0e(RBBY_zL1lvVB@0a69|+&_L- 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%0AhTWDsLf8S(!LEEbAb2dXcAqwbet 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
    44ozOk1@I*Zssq!qPNQalog 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 )X?_R?&?dN3YjW-_72gbp@ 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≪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
    }1!7TD`sdgvjy^y2dJ^PHQTEND@GnFV#n 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 =V}A@?>!0FOHn<`yt`RFpb=U{#Q1n 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

    L|2$Jv#gd|GV(~$kQL0vnBLyEA$fRCDhtVtrDVN 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 Y`!8K7>EG_hpWdC0-5_%O-@pC;0H!6EWdHyG literal 0 HcmV?d00001 diff --git a/reference/GBT+32960.3-2025.pdf b/reference/GBT+32960.3-2025.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c29abb890cc6e98437993a6b62649444553c09ee GIT binary patch literal 734436 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

    w~h|uHgq;9hD^miu$HC6ta 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 z z*a$xPs!?YTzzyAcuOg#f?#0#hqCEZ!#A6I|w?Wvck)c;M>C1}jo$HLAu#=I_Rhp8r zR9Y;mtDYjXQAIDie_<6XxQn)|J!zRO>b^J1HgOuG|5!dMwr~Tkdj04x8>)A(-Zvv> zQ@A&6s|~|gTH0A7e40(gc#LE)<=_9M)@aMQU^jiP*l#t;()sx^3pMv9Fd(Yg>L@4UaHXUwcjQq)rk zKQ*IQ8wD;P5M$ZUqm`Fcp5~YjIJY>ktpX{&I|#Xpud8uF)uE=6%wUQ+Ln0WuHLicO zKj$-&t`2ezu%+2V?%ek|X%d7nbitG6&O^0!@F@;Ig>wq9&E*n^4$$gdrGxgI+9TpT zJg*nz5<u0EvDfT$s$|7lhA5SO{Fn3xNba1qFEnZdvf}r zHla|3(GAgr8`fGMA-%jkXgtTismF!Mp__cMPAI&F9A%tCgYrcqrCgkc3c4DA8(g}# z4jppE&oDzl+9q48sJJbZi@=#!F8sRvywe#WJ8f|oS<8MnHY8361fQn(rR zl_?|Q=q`=2p?F&#w*8ndUF=$VET-rpp2f&vHAy?-9!Ah;L^)PZZqeNWSzv5XjwL6H0Sp%KB#pcXUw+A)tRXHOe40kYv+wQ zk6>8{^GsO`>(u{B1uwyw^Nl=iq0(`PY?0ErOhJZA*`iTTyJQ*Ae_Eo#nNxgtg52e0 z|L51>V$%O=MI%zS%-*kcA}o5YVt~>~X3rPjG!y3Jg8MCkqll}4wiEkF9K8S`N)%+$Bytkbp}Xyn!ia{#vtjxGW`T0 zwzMUmE4;J>l_RpWmE{QLg#B#V?M8SW;Hrx>PpKfM_|BA0ZmyL#roM2WQ@;6YsTavb z%T;31t#Bt%2mVRvx9hlpkO#JGyKJ%MY~19fNVRvJHWxgA=OE58=P<5O|5p@!1Q#e+ zlFjBR9t6wgDV|D+a}?L$b7Bu~Gig^&A8ASWx-x-6fXT1_Zx7;~IhXilHoowB(6mq` z(GKw@JuJWSY2WL>@YZKI2agoFd6yK$fGYEP+n{wzuoCw(&Y9RbCW!!Dx}wj={kt_kTB;adu}eU&&u3}Nc5D%_m$hJBhEcTb!lM* z!v6uQIoP1yOrXbx`Aji#hYk%kfW*WOCNN0%4+S$2M<>n412ZrZfrA(XWbJx%6nT0VpPOsnTD1rdW{b9WGL6rYq4!h0$*P(rt6jO7^pcQg($&P-!s~x7sQW zas9!wasln(DT9NvzK)+A^krLW9G3}qgL*hWL0#`2&HJ{B#{m_MFF>#a3`~_7|Cwp$ zrOKk!!QsW|MiyEWC7PxHQMd`K?M!>&7Rs~530uD2-cnY#bZFC{;);+!o@2|EKhoxB zUgW~@suQ+|U#5y}cmz9hxSI@XTRy3vYVI=fp6M4r{?N3~6YkE%BZK3!cCUM)84<8n;APuO-i&+ zPl*1x3im|%;CGPs!dKS!t!yU{d3gU*jVkbdFZc6)m)5u5mi%M6>+5sWH__&I%x4w> z6X>Z#8)^QvIZNIgbENnEwF*aav|0C~1(W%s()sv&F^l)}r1p?-+4uEQ_w#v&*XR4m z@TnH6JQU9hQIsW=s)s3-{8El9wlow@0FIJ@V25|?AZ)5>1i!(*$v?aJ9V&{->g+p0xXmnE*@W z!%>{>KJiG^XiQIpq5q#Dv+i0UAN}phXCG)QEnT|sp9?v-9#yjtrqn;F-#CpVJK!gT zOr!UU0;F2U60K8>^=(+isgfK9L8iIu-lt~0$a?#lP*(|WZcUooi%AR^Eei_7ay=R5 z`EQfqL3aabe(gSjW9#~&lhuAp$mQfB(8pNT0^d9cNJRjm2Eh68sl^#Cls7l90AP)iej*D1Qcfx0hv ziow=G-)w${%B~q_SF?EQeGnzeU;q4kKZ|IHcJH0mtub@ITIUIVToczP(nXBly_94< zcwX-{>V4;ur*^rW6nn&1;9!YI?OL+}O=MjY%h)A$PD||ciOH$Q#rV}P`tXJH*1;h^ zzCmmftocteU#@CP=r=3GS9dHO1zXWhB1^aF6bF^91Npk5WuwbW#)s-_C@yYZ ziQPrim2{Lt=)LksF8)8p-YL4WU<(`VP6r)!%pKb{JJ@l@9ec+~$F`kxYYpUU|d@( z5Edz_Pj*p0c1YQ$Tlb>}J91Y5(T;_d)kPmr2#>NYjfUYejEH2kr%6@OU-vvi$MW7z z-Iym1uWK%KaWvhNghbZpajXw+@xP!$tOwR01KzKx@IgYgUWLRBa67qQr^+^mStd*Q z|1qg|DlLP0nnpyRi;G0y`uND+$xyw6RsqpX^P+TRaVlDg{3uZ#tZG+82cBA%6Em1N zVI#%46CxA=LP0xCG)DeOskFAzHUxAV)VhEh4acw7sd`aH4+D@lh$MZrfJBu5HN$7BGnQ*K}x&V3%*?0LR=g9BqnNVg7p)2v4?P z@;7OztyuQ1h+44XN?WX`%;xokG!;|vrOP2XdNQ4%nLMYafp4)WjxA_vI#Eq8EFyoo zWhGB78%0qek%EfOD}_3*;LI0+@UP>T91$JsILq4Qq64kew&$w6W$0kNZ18Z$qDx z-+k`pQj_Vw7@9f0`C$9j`+{_qIXa#7W0v1f-aa?=aE;xT0X12v=DP!P$ZzcP_fe>0@WS;Dj zIQ&VpD-W89K$~Ql-CXr+ZMs6G`V)Qu(JTG$Nx}h-#w$6g{U}t;wzy|z+cA(hOSNL! z0H6-#KRr&Z6G3{KHb^q9)R&x$=ns``K87ux$Se>V!6b&3LVtW?B;{E>Ka>=+R676r zsmII)gag3*Wa`2CD*dSA%-5GD4f`(G>nZ*r zip?Oau6~(sE1nXtS>p7czu4362M4ZHbsJ!_5`5pTsuop7SU$u<#hZmmaK`)@bGm0- z<*e?69Oiiz9uv}b5lo6ozvyQ0epGW&PElR`n9aJF^o4Xu;Gv%6F1E!Uozi_mIC)XY z-ffdPZ~|d}9Ke?7F-kBTVBIspK%Iy`>nsx*Z3vgv+mYOd^sFlBp;x4 z&31+Bh6;@)Eru>sp~D=M_pfwxGz@Mx`6)Cb{_h_?k+COI*g%1@nq38SlBc^5Bz2h5 zahJ6ymlN5FBN?KeqiZ69L$S*KH!E(Reslf;ANz~@vg?k&9^|?D2WZj|^JKK&BA>&X zL!x~?B(Rs0aRiahFSX40k;?u04N~i)qFu}jtBhgm|3kd*M$WM=Gn0GSXkk>>cC%l9BgJzagnO~rf$=^7F*WL-2|lq}Fx6;N_H!e5#P=ehb>coEE$yiN@} z2YZr#cM-CVt!<43X4jACJPKOp)t_XXYiqAkE}TrZS=SLKdrZ8t_NhH6;uS$sXlwm8 zx+AGy+B2fWqJ|9*K-%9xL=ToX4P0F2^~IW92BNN-0FwHZDIRg9hW=O$D~c0FI@3hw z&N=1L*M1JDff5AhlrG2197>BY+&MTLNzNL{%}gA&Xej#7$N?`8Z2;SMEK@(f;^?du z8m;vHL94+UVz+iPmo=NR{F})QBbXu|`guBKK~t#8$x zup$Kqm@%!>AD2et&!JU&+pEe>3kwfZf>$J$bu`ZA9^8F5iukjM_n0?xK9 zYz;}74Y@(`)44%Eo9oq7+;UOyeYu3r6ir*?_Vs|7Z2NTz0CF6|kG9V{B9VeAB^@(% zhq4zYPXSqnrbPlVkaoszb3DN@t)k>>@(ZXt^3LLyh)7kQsK4T-Ts|pH_(CJ0$>&^F zl6nSOg@%256z%QmQR2sShw5O?*AdLum@>503SWLMSDUdu%D&bGm`A$`9QcdOG81B_ zMn7-K$qss46&4r@aIxXv`sOGYE4L~j59zg!uSG!w2mRPxY(PU`8}J?JWehlwL9 z4?vt-5xH*zXyZ*PI4s`UIa!r?bRXjG{oKF8?E$zD)QOT@8F?mrPf>g`Gb3>*59o`J zYmL2ERgI2Zm_YA4%T<_34v>p~=~kGDN5L?8>6R}@NGTx-s5GRTrD607zN^utn=MI| zCtrA)S1X|RtczivW=&K#uPvBDxRuSxZW&+QW=`<3!rZ@0OH(^QPjkmF*OVTw9#fYx zhD-O96f#Juow@_>5)n3Q8KhV(d+ynV8W9X%7^M8Dtxe)b+nshZrJNP)6Zv9~LV%r& zc-7Tq=>Y>n(aZY;h?~auh@$^Zrs~i8q^!lCk#^_uC7XF?;6jHEdGg5hyfNu0<*!`3 zSfDR7sX+dEphagI>({IuJ5SB}mI3#gLHwJ4yWU(h3fubbm-sdLz^)I#wUZtn1-Wd0us;H2^)|hel0sFVe znrc)b{F6yrQ?A@I67G2$p=G&3@sMI@>gBb~2%nC%3i=l2kagVK0F+F*9=oOO)YyEk z4IVL>T*Reeew={~zW^Gaf6aGy_^I%y@DDUr4C`Jwi?i%hNzZ77$;Ag1wi5ycw%hk0yn;>KnCZcW{xH_@e2fL@nYdhcqD<`h7jyh-g6N ziQaKX<$r!%*-|Ezj3B*C*V1WmNCBkqzsbf-N?I-7f0$fdy87EC=##q<>h#FH| z6pJMxU=FA%a7~V}Y8|JSZ%t7l=;G-~Mh^q0Y$Oq@atr4uZAKz7@32)b>_7)N<%iTN z-%;V#XWs3FjWLBHUPZYlWzyUZTV;xgA%#CYLh}E;@gukM$6PDwAK^@GsxQZWyhg>V z9#i}ErMcen%^*`$Kea_2BEU0~--mdn__%JQ1Z_y>3+85N&R zC}HB}WL_EnXVQl|rCvFW9wk3iRzATd{lS}sS9aM5s3ZNpZ=DZKw8sfsR+=?CFUoV2 z<90GXI$0+-$(&R8>g_T#$!p^P}i&YA_D_`r(?4&FC7X z9zP6IlN6Ja&x$yq&5#&_^56E~?p5DI8aRLk4=f7r;ecjOa-kC}?~emkBeJX&?6d4K zW#4{2$ET(OyxOl4URPqB(_fHDADF-N`D7q;UA~67_A%S^dkh!W_cx7CD_KDb?5VJt z)Jec%-vngT0+)n@{evb_+Qh$NZo!Hio+~Gd^0Av9`C&-L$RXmk*tLJt+7*0Z9NDqiS%fi<O-6O?{d|}$V*3~D#^c0Jk&bOTS9^NRhxQfG-HBe9 zEDQJk%((1MKNBox6Tm!${_p~cyor1;h|utH_^od&Q_T8MQg&e0QoTGkjf&=LvIn3- zbQp5Gd}8m$pQPxMcMoG=l!{Z?*j!LGQG~|Y*Rl?H*V9q`v`IOMb(K(n8|v%sbGb8D z5}YlapCw|;wzZse#5Hps;SY+20R)lRQhz$4pM~-C3MU3haIY~~#!31m3{m)J8vage zc2t7wbd&>aBPuH2<3f8WvF_LNzuU9fLUJ6nsf2+`sueEFrDIK*Z2Ro}FEma1abyA4 zYuTR*`9^=pvhWaWzX=m$Km*7e{y`4g49jl7QGT zy+Cajvmab!=-e4FXk~6^&Ogg9ZOVWBBY0s+>6S7(QXZV9C6Mz(8QSV88|<*zE0?nn zr?UmUhZ;?ub~6IhUz|_&u$U)r&~`kjJG<@D$iV(d&IqGL5rsaHwCL~*?RXSiw{MY( z62R7)QK=w}5-H$Wmp=n#9hjDp^DG|7Z#lb35f7;~x8{+JH*uyA32MU(G-&6&L+`awrICH65^U$) z(?t6zPrz8Ht9588-EV)4)Us!JN-3VQAtr^?Pn9nQHa8vL=fOVC{Dgu~TXG)nnZ$AT zz@5h5HTQAfmaPchhR@DGlgx=A7=k;*2q|go>kR>CZnA9MfYs{+rBy;Z9y>KZuDGI5sWu9*PvK^KgbN^LtyHOQ z`jSoGOsN5X4*_x(waC#Cui-tpXX15Nx8vpI0Mw2cF&%CF0B}yoU0{Q_%+p0B5SUtM z*%U;Liif{&269AjKBC55`#MV6cv+VB%G9jkAUrI@rN_1o)K9J}7RbKsw<_=FO+L|&A zl_sZI$M7PiS!V}dnAl`0jdT6vzDxZ_h~Sk??g%T}9Dyq8yL7P;i~tNY>XM?gC*ye- zIQh+*bw0kHDlxXA(YYa+_6mC3za_H<`_%E7aMWfFB|XFEsgG~B3kp8qv~CVXHaGq! zJBm6X@Js@f)0bUyyX2m4`(Sig`wHJ&6GsGjx#!C2o^Ss*OI^MR6Kphcwsh^!`T=r& zd$t941?aGmdE81HJA_S?PoOyJZ1YRI4KsAwzJWG6%`d3Mm;pG(j(w6!jRnTWSY8IOope4NEXhCCb8drdC_W!5M&bCrYGLNQfPI{oq^df#^sTosw3V(zt+%PswY70ZwIw2Q zlz24~XXz^Vf5v)ZLd#B)=lx?s>rQNRF`4mPG#tltc58hLRR+)4nI{)#ODf{M8-veM ze~TSd9*!4v=az2c&6M;#{+lfs1H_uCK&Q%R3g=0Wh&V$mhh<-ucodKTu zONN8~)}8#XPmj;Swi=9_9h}5$z;&+-HU#12$Hf(yWP4xM#0MgX^bm2Jk6LY3=#sX~>|#ohvy>q2ntdig{w_|YzD zjrvvyMzi?~xVC>PjMP_3AAHx{iwM`$-kJG(X`>gEJNufV~i1PRtZ!nQDBQtgyYU6X&6cn zF)?Os!9mH$Rh0^6ZDw4iIDjQ&N)^NKPT<&jLU;ixOyoZY@`#&dDQf0_>XWfVRmHB6x2wRa|`X>>~x<(_CXMMtkjTqyLviFMv&mF}d zD_pu<^P2@ooWEiOpdAixGn6)&7Vl?@YdQ8%3u!zX`P5w8>EBxamLDYJi}2AP;E!Hi zhOU^Dzb{pvouLyj^Km-Sk!DYGnQ#2~ffc_yWdoR(ZNGvw<#H?;9HkG1^;IgA3g|0G z=5pi-#DYB5otM$m0C;A1jK->$C7tE9t6G*M z@IJt(&ge-Jbmn-hWHF?&X~EX@pM3W8ca!$JP`?2#F|hCfa{ov8LjPCzcoFRL*?PuG zS3F`M+`o`Pr?v@%`WRQr8D#!91$4FqmqOsyfB8ScxMCW(49=SC`)Bl?-b>EK>m^!r z2!yJyWFM!3pFDtUS1i%V>eI_pm71rhm`nEo%hNcnZy^}*i<+^?hrr7Ck=MBGKPbkC zxvEn6Y#a1Fdb;h3Qlo4-JTtfsy+~OFPu~x*3S@N*$9ie=N3eIf=8$F+0SedA0udPa zOGvj5ZZ?uk1F`b5Hq7$0rTTD+qL}{8;Y=T z3*tM^_bFb9Lf;pPqrWQ4`QZmwzaZ}J?FM>6A|hl``)9EA*7H^2ffe*9Vh^_uE^iSk6sl%P5#B=jA%fR~1{GR!eqXl8|K?v-JBn;qsB*|Zi}(1KXiqP`0lmg~ zX)OfknEG?!8LiZwg@&?Z;)PadXqkqvh^KXlpYip=@QY7k`wfHF+jcIM%4f|`HfY3- zmP$$q;afTj+qkxTM;RgZlfru^^h1VBvdouN-LJR{6QvWb5Ng44{$IlB&s+NLsz2t5 zyVRj4c_5ZH|4fyzX#gjcZpYWp6RG=6nruf%+BfIL?h`n}K$r(s$;so&dv`lQYNgedoPHobr%8;*a z^D>o)?xk}!OULcyLdsodIS*x@RYpd=&y5m1bx#MMj7B7w8S)JwVrDm#Yl|Iveo7Q@ zg)3;9^KGC;!9aPr&zz3fNoCCmkLxHca4rN^XSt8qJyIRJ9D>P&ARFJb%`YsatbRNg zxM+T@)mJhs53;dj&ibvUEtB}A1Ilzpjr2m_grTT9hTVb(&V@9n@2nw`oGZZOCaIdE~2Y`{zc)`Zhiz?aJOz88j0D zsYfFvJ0uf&PAzkZsfN7rpem&7dE1}B)l6$gEjE#&15oL1?33sRrv`o!e5a}7RGzI* z&pJc6?G;usYh}g>L>|tchvfO|o%KD6jJ@)xMnj?p@FN*Y6kESh>v=jXJ0Q%r*-CeL zNhf}}v!|OlQm9fQ@w)`piU`$SOhDCV0tn!E0C@h>`)25_p|i7ean9~7z8lU$V zutaBdoZ!jrJ_B+~`&F4DDjFK^M8DiW1&_Wb+P-e@d-ZAJyvOvJ#Tsp_k+MJ;}&frCljsB$P5=jOe8%ntgv^&r;**n#^5DP+ZeA zcM%a9({$jm+-ZnqHk(ocf3n@`PhZr%wLgy3qe*9>Usn3Zvn2L1J$Lo3C>2q$W%%GcF3m)0#qr;r zc(kiN&+GIrQmAp&OzW!UQw9Z!yiS@<`r<)f<%yERb?>Spmb;^S3r6+&Y>C%BfmI_oS*HhbRVJ ze)F{Hs419={YdtNW%y{rY7BM>rG#bnQnnjIL7ge7;fVAGaEuw1l=&hD9B-N)9IcsQFZq~p%an0i3UEU<&cZKx+nv>c~ z`yCy`kKS_mG#(5FMXgP{i3Dn9>oVHh82u>}QQvE?qR@fT%&+eq6jGr%q=U?VK-6fF z=<};M6+?N8?%btz&|z8|^mArM6;PM)(SW*RmOWIbT~{z>EWf6%$RE*QA7>9yMqrRX zhjWBtVFf3fmhNd}@hnR1JQXGM^$&|!mW#P!Qkfje0x*cGW1Gq^`>CsX1g9Y{5D#QJ zPd7E*5YpGeUw}yndC&4{b@duU2pB}2P>S0&Ei}pd``!#wYxK?wXuENl7~Rh7Q0<4! zmsNC}vvCU=oK>@4n`wj6DVS5&DV?OYTf3GH6=QUQ#1iIJuED`I6>8juQ}@NRkFA%B z4I>x7Bb{?!VZ!g5;3KVVV|2!v_C^FoaKCwTZt&-ui#ixTEa3ngC0FGbSbg?OMFWlG z>!Y!r5G8MRmw~gOEFYfEHBS_2zJL>Jnd4RDAb3w~%R7=WJMO5%svo+6)Ege17U~lz z{R|}ffOsY{;?0jqLn;tAZQ)^zAC^%PVUdE=Cr zO^ymb#0x^1-va3sRY~&qZP=#g7x-{k`9HQ<_J~hw8wu@)3}0>-zG4 z(vKKp((_M}3d+W-H;qz^PLnumqPw#rIVwQK5(bp1g^lv$Xs%7!fT3_7XpIsqnZ4}p zxZNBj>X<3La-$vI7Qra7IcZU*NAq%pBNmvgAhVDX4?QrZ#chd4h?IXQd;{7y2!x)f zSGf@n#@BRFZ)|^jK!PL=y~?Thqq$s9iVJkL7VN03YFTLktu~kCnVutVMd?;HG3R3b zb?lpTNk+m~ib+y7Cxt&3ZbRT~V2g3fM)ELzt4sy!j#0l-)YZhT>@orKvQWsId%83To8{?~(a~ z{%G!)pG!5B1lUKr2tA0QV&x={$RWoRh)8&>X8S$2A3CmZc!tOsnD(v;?NF_qvf;f0 zRH9f3(bu_d;qqLHm)e8WBRY=43%w-m)c9@F%-;uVyT&w(o5{}1ySX|L#EOunaO``| z5SZ>p)0{|T2xK1+*v#$QF5=mzp8n`A-9u|22z&d|E1X)x(AV0%>UWxjiloU!YAYX| z3C)EfJ=f?C9<-KOY9b+XTf82zFgdotFft?d7O)|mzaMfo#P@xrI+lQ}Lw2^LcFoE2 z^$oIi95<>A72e3Eb$jbIf>_`C+vcQ@sCb_fMMEygJ5A(+#xXj_h&Wu|TW`~?BUM4L z=JIFVe^20XG)-Xj0PZo|$9TQ+)`GuT7yV{HB_-l@|Mp5kC2uUy38|B)Uw(7FD`)&1 zUOM}`m=Z#v2xVBex<7?{BtQ$uAXxxu{4sI%S-8P4mNc06L(xk{MGlYA@ z+3nCj4g$9qemV1JKj+g;tg}ze87-wyKIF5s^|?mzw^q^bSD7 zj9Xc1DV&=b`u7G!{X;;w#n@c~&E^HXDQ|4Wgd$ZPD-?We#Cz;bz%#r9?fMHA=`|%U z3}=ZS8S!+x3&7$0vRS&Pp|VOtgB1&zu4;MmnLFcr2*E(=jlNzzkjJ3@jy@M#+b+{J z6X4}4%D=vM-<@TE=2c17ojXQ|n6U9oXLRNEoW=Q^>pOKsN5y0_;^U_ zW%kW(kwxrHyIb`Hjh=d@9)rZCQ`Vg*_b(&Xmry($eDUFW8mx*1YijdY+4hsu2G;}o=VlI{NRs4zz@N`ZhBu2sFKU%^fG{(9h$y7xa;sE~u~L&0}^qYfJ1gDG0wbkMxNyjubb{lIb{ty zHVC@g1P+sDtH-%}l~cw^6BDjFW-2;p8r|T1vWq48e)u_v%1-y^Xnzb;41+7c9@kfA zscG`;>9b90cF153y`!drAml0N@O(M2OR%PQ1F^E0xDWCe)oFep9#>fAG@dDnC;td_ zidZP;E;ZNvqppIwMJCuMDMXgKr4NBv$pIFWs@^-rS36L6?>gpIsUn=r9yrcy0hbC| zP*rvZEugavmoXMO87;WCzJk#@xDPBAnup6uhHd;1WdEZw?y;mqt`@FZ^M}`-8k-d;0i8@78Um=4U1T4NEBhxp1 z(};_a+!-RO%}gOfI_DXR7z5XNdEk`wlhH#(q85&j*_x(ucTe%z_x$HILuYu%>~pKQ z4@7^)jU9)XM~{X2QKZa5%~yS&_3qcAg0zYe4xc2w8$XAS_+J5@9=-NLc@vVw1mWO>J3B0t!e&QqTalsjiR%u{cCot-X|Zy;XjmZrc1f#>$0fzSm|hu*Xq`(uh5=Sj$9*a7@!q{c>wQ6U zJ|P)m1NvCsVBbg4$T)_6rk{{h{dSH)-qiist~=S;`>UkZ!CTO^FAc$@?!L18lcKj+ z@gP;C&Lx>Evq_}|;=|wjokz-;Rv!QYAp?!DkWzZ6iR(=ClD%1-kD=0rAXa+Jo^}nNynhPd8q9>DrH|M4IFD_xP5 z8{(;MIy?}6V$vcR651_U=RtkhW*Wmg`U8q_=LJQl*7q>*FDnhIv{GZ0=rUd9uGEvZ zBCDLMANM`Pi>bJ?B?bz(X-=Uxn4-6kVpRpv>zQ(4*}!Rb4cXA>A!=?V7;lOYWgma} zf-nyA1H=o~m-nzA?8zX<8aef5Dq(f(i25^til+Rjjt4r`HY zq8hjXrX%c+UnI+f@1><3#=m0$uIrD&NCY^q6yjIokAuR8TB#zmq4 zTs1I^B&mvKp%owZk?X9i`!lHZ9lUhzrcwp{Iqe?}Fx*4v8)||12)mA=Vg}kzH#v(z?09Fn@WxQmJdrJ< z?`(k)Q9`a`^tMCU)|lxvz9Jol%_h@`m3`nq19ywrOy;P!C#oHby|dt8Kq!wtu~%NJ zzI#X!8}=?IP{u7gn^0uMI@{{#Qq&~-Qj^jTd-r@moCMEEV2S-KjL$mg3?ACmo-}p~ z%9YE1g^DF?H@W0pLrhy5MT9wi)HJKQIDgIYMoFVXpR+w|RX{XS( zX^Aznc+!r<2JN4yr|k!q)|tX^8A3g3$IbvoUW7ZA7?u(gfdkyXuB~LTXD0uLrnroo zX7w$9p!SA+OP**BONI2I+(EK(61P?a5qH8G)V-|wn>n1btM>=!mlUk`$CI~ftD)-u z&4uv)3wDH?lau@Z?Lz3+2GdJ`VMiWS?|x{dUc%_P=y%nEVMjJIw#8H&8#y!k%MhMU z@rk8I#7zn&Q1aQJn`Twk`Qk-cuu&)pygv^*G@o@pFBdlt2tRE$!`bPFKgF!W#$Qyu zKOcU0hi<05VRwE$OMBIAeoB9|Mm7Dk+0>qx9TF_Lu0Gj(yUp56uiyN9+bosbx3)3| zr&b$3p9Zh;`n_K!1wZdsJKvtqD`!6)q{L;^!)zVxM~wY0Syw7=98<2LZ0;%Cke+TI zRj>O>*(~_(X$S>-E?H4e_siMISx@%`1n6$=+w37yzVBhD1^;bl?Pndj$oolq;m^6D zI8^T`G-Q`+m;cv$501D{Pb&(+4(!^tL!uCeUT%;(OOa-qP@1&tWC_s98%}gPke|5} zr}Dh~GL%zJ5p?q&EiaQ$d2cyl33_f`SCbiw`U=fyI7D%x6X0uYbZ5VnEK?Kt$!RQ}H$~?5CSjF#{UQgnSs2#o9Oa#v_ zX8g*!=iTvRId1qYoaW9(z~4h1`ayw^b+0YVTI z^b#6U`13gs0=&GLd=;@i^nSA5RGy63{1o>>OV>(1f8FdDJ~vLcA7%V_UG21vuHK9@ z-M8~0d_Ua^f3r}@HEcpi@!kL&8nERojCSo~t&(bHT!1-ip0OB#51g&9kV)2doUy2x z;X8lh%rI64vJcv+kRY!pA={{sn5q~BiMPaTeSEcV1d*EQIF0EFnrn0t|2pl*@`)Z~ z3-XZx`+Sgl<3ytV;v9vY2mSbl-!)2`HZxTCU}fsq?wFh8@hOs+>uUjTMy^xWqR9XC zEha}c&$vnUB7oA#&R9FwhmgxH+4{1dXVWcCll-pnH6$(%yryfwR1D6~#(9jkNY{mFm5>y%aqH-J(fqiNbKbjPFatZ7FL|1LqIes3Ck_vO}{gj>z z{B>;oOEMhoGAuOIpCEy1gI%d~HQhe?=Cpqg9?XG`;j}439qB)?7lzwaGw_=8NGI%2 zuq?&!mTY;gFvU`{taiMkGP$gSr_(mXZ&1_Xcs2WB_LGM<8IWw^M7ZDRZ*u7EB8xQE zaZ@;Pn`C(QNb`_qSt~27kI(Yi#(fbb*n|wXN^1S=51(^out%SBwaVFy*BmZyvyh^P z_D>Zn#9J2|3b5=A`tF*8{v8yn)D`oC6r-U4ppSuV8T&gsTT;ijhawc}A`Z|?$My`` z$mpR*o}z2D=}}^QgMjix=&fSjrv~&Mq?ek?V!+pEszGDp957;Le)TrK;!#V1#(sX_ zS*kr)4o@9rc*%Ygpfo(^4(1Opk7;@&pf$v zkQghi+TfE#J|$}Vm7$#|Y}gP0a92euqCm|~@X$^Nfbt?ccRZN-F1-z6EtQ5%t_`SU zMzqVJZa7?sMaas zn5I`HTbb=_ZOZ3XBI=y_<_pHYl;yb3P5h;BQJ- zO*&H(1XbKy>Ro4kWBs3t%r{uMD=lB9vQLwr56^v_>kb29pn^7TGOA0%H_5x1<7lhAvbCVj)#&(8W8b1(<{b|HyEQ2BI#}VT=gX zDpUE7E9T5matFaV<}MT-{g}tbWB{Ma9-d;&bk`T*J~KR;D(8;g7ZE!b#ypZj2qIL& zRVr%dKtbZ4U>Goft4jD`gk{J|ALkBO4<@-T4L?lJnu{nWmcRci^l z+xVs&d-U7qU(?Edw|}#~*@JWURAaG^dq++SvKbDWi%;s(a9dUX660y)=pIm1l9wJ4 z?MOC?zp=KUddUCZde4u}+b788TMeIyGxFsN%EV#Rx3jPPIqRgaX(R&uM{-?>T=6%U zw|@+bCzgWkniJv}h>R@Zt2Q58JZduNbWmS?3C7Qin!Oc$F|(XHlwAptaGg5XR$c7@ zxQ<6b3&xymNc<;LkqzS?$DEl$`Pv!ejdrclPJZ1Hi92)d4xoYDO0e>*#Cx~hsA&q42_=`-g(&!bLBR-gWDca6K6TDJ%@<@HYq^<>>3l>6*POm+o<#lv1xFLT z#Z2~xjd|5nH1&`)Pn|&ona#FPH2t7axVf%6y8s%SfQC8Ek!`Yvns0lv44)}$R)KvV z5>sMm9_a}TaIf9{l9<0CDzhVNrsn=tn>5>4^Kh9tQ0#NUFCeR6@rYLi?a4a&7}S_# zh3oJdsbu)lyPd~N*$?2LX3W-Zx<4Tt(<>7{yKdpco)$yC$cj^9><4&Ghc*A+M?E2i z1Ale0Q=l{xA@3#*Jia~HP>x3mCdj&89ye3|LLq*KI$e1p`FL6?NGY@soYD~j{{tIymLhAB<5jiA{~H|^OcqG1N$X4o+hg}@vuJVJjWWd zK!4~<)Jm~2it1nb(d*>?z^1|Jyo#K8|IPvSnG*z>cCg4 zLHe&Q2t@4BRDs;jw6TX(^oGN$oqfqWy)#;?TTw6DEHTc#Vb3h0>l@XDf7^hTXgPw* zkinC)y&hfEOB>K9ZN$8Qx}SbSfrp0mz6#UW8c$qzN9dai2Ewje1$$s5^op_)$+PU1 zP#VZ@B^SW)AX{=;Jlop&DDf}y0pNTeFM$V<8d=w!b1Z=eNR6r^&U~qoNIU123#nTM zgU(9e8PD{RST%75UKF#>9H5_Z&m16}k^d*Pf^p1Rwd#?O`Bht{nsmvX4j<*5Ks}h$ zKe~?LINnG!L~hBR!q`2Z?AGNfX0nFlj{7To;J}2vA_P1_`rlIHF#WA6m~WIjxi0Mr z5S0_fXi-)}4`gdgq<0ft3ry!WQD9oM_rM}xmPc5U?%EWPYb~@2Nek1 zbFtwjV`Z=s%MVPtTmw*^zY^0pLmr4Ri$ahLAz3k0_G`e6=NbmO)|uCv1PZ97hzEE9 zVqYrho&%TNb|Y&Fw%b%<(r0ZFwIWF)L-MQW{bkV`%2!}~d!Qq~b5hQn4{YrFhYXPG z&4^&>?#uF<-TS9y=!2DaNNN9s6;rnqjpv~{7_VD(n%r0NhqlKw`Dq`1M%7cU^uY*$ z99#e3Lu!IaS;tANt7zGo-QH8m8}V=NrrKZB>lz#BaevB`_PI&xQjQ0B=tC1%uuYrb zgXTNvr%0xlo9!cxZ;NKZDkgKmGZN3oB|8m9n04}bl8*q zfq~+&vC>{J@$AAN6=-D9Fwh_28?(LPP`;?$8)Nm(M`h<^I1W#t*a}6XxxK>{6*WTV^A?&{uXhf#KFQqhrW2#<9AZl@%jot zIbXr>9+_X69^PzHS+TjWO%tM^a{N?|T9`ojPRuCDYob?}>EI3RB&qbR z??=5Sk?ksu+96SZNJJPkeEW80q_k4b0eycmDU6{J{phftm;C`*MfH)AkA2(2%*UaG z2oI(Jog)l{$t5+539?$DY&?F7UHaCiY&>ntS-`M0%NbCvpA1ACMXsRimqGR$l7&~X ztcy&F6^ARp9aA@+R`)oPU5%>rWg{n)_t_sHHO}haz)dZiTgRqy+#R#cqt21b5?c{R zUZNr*IuheplX&1VR}6CsdL|)3MeYn<7@ql4o5?32I%5Qqqrlx*HoiQ$MionYtVcQ0 zj!CRoJaRp>%3c4ky@n4V(*DM)qWFu*ZhD)ry&V6< zFk@(Wnmxhra8e4@a`K(pFK{#e3F~O-`L8fKg(iiNyQ_F)Jx+jY&8#+ z*|pVXdvRw9ZC1%C+y{_|tT$FsgG7*8-Egivfldf@pZmo7;`mS;im0Eq^{^#0u4!l$ zMf|?%sMWZJgi2 zMW?C5RuL(REJ1k&Y{%7PPOPeQ(o+lE+~-ds{|{qt6&yzwG>KXkGg>%eW`+?nGh58e zvY45fnaN_dn3;JbifQ8Fynf)Gj)@m(-K=#v7FRip*HNm> zJN76O<{>ReE*@aM6K}8M1~`K1@IFPOo=HMPahU*k&|4GfR`r)3iRCT_pMQgLvSJyQ z!2?xIp`gTt^Hg!zM27B~<}y9OAjQD|p>yJ50)2T{#%X^ohYVz1@tz{g$IpIX^Bd$t z6&%k8AQ0#hCxy%=&;Iw5P!nJBn>^!hyraOf6m372aT%FGqVs;Egr-F~)FXCxP3)dT z_mSf1Lla?@>IBx5k-1x-PooE(2#6CrEb#e7rf{`J z(EK)}%LLl?d5B#xoIJ{Je9Pv9?Aj zt!d}eTLdC+N+0hb<81-z9Fxu)yi48}Q4?_+L+*F?ht%P6Kiw zYyjRj?}~(WCjaz=qr$0l=H{drc*;glNRo=g4NsoBu-bYKt@;$!hJaw~!ex3Nq)`2Uo7`zuc7;KiaqTaPKm93}JmK%*(dvR>5 zh#L(>OPBuMeQQBRzO1h;2oVduI_cy`{k8nsV0kS|81YAQ;!umC$-H6>f!YROx2B<$Wgx0?3&rJ0z~DCY1sxIr;o4O&9u! z$CF|rf}1(cqn`ZRO{N*%f7@FhST5#_P&&jB)AW{)~7Ru31kwa%iX{}uVShLx@NYftI~eKsK(XWQU|1TKlJ)`z7HM4Sj**DwPVdGfNA!!M5nyr8Si zyR@=ESv)Z7@DZJ`shA?yw}jUaWrAq%?Lz`2qcWmM1B8!i8Q0s>enL7z8Z{|I!p_~& zDz06cs@C|k>QgQpjFxx%e&m|~T(4kh6{RY3WGv-!^)=fTaJ`ns!S!6~SuOvatv5b{ zcES50xHKhgS!e&jwvo|1v^-e0zK0)~J3$Mkim+Nj` z%f>>C~up%CJa%;galjS6x>>F)TQ4GAY4HNplrt|>X? zIO_CDOJ6TRA=r}7BeE9c%=@#LUbc#*<+#u;oL`H~T{pQn`18JvLVf4N=fW2>^t|TT z_{t9SA{T|PU@ZJ5Ek6byDz<0Io5_2=y3xaX-qG;HpP}{Sgz1aUDI-=Xwr>;m65wZ) zjw!xW?^W-IEEleq8_YWJ516e+dOK|h&yH(RizbD#AnIWky#!O7NZu0c6<<4&w7~Yq zJic%w>A+I3oc(<@mE3$6&#n!LKVl{==%k^F?GM(2iurD9OLQ9^1QcWriHvYc-nz3H zPn7dQ5_spK7?tqa&c2_wYpr}l4qO3p6tI*T=*9V{O*_ceK3i{nd^5DYSEK#I-k?#u zoKomo4|TU1N7?_q|JEA2KA~x*B&orhY<5)!nw#uw6wqpOU?Yq_7d@h^gbt0H^Z-}s9z*ADE+9+#lA8!pOEBE1 zZJfLNz35Z|iZyfLORJmwOsv^W9>mX!N)n7{-;Bsks>QWbT=&UNYC`h{XYo+*^u-mT zaxxDOdIoJ}H*Xz`IdS;gqbm)y@1ISI<6mn{U(!Sk<(W3y;)#v;4X$hDGkajM|7zn? zVdmVFdvAa@k0>CI3uBL}tJsaJh;c$V6IbHu`qHrU1Ig(V2)(n?d_v6J3!34Fir7IX z&L1Q@R#C(#WbV@Fo`X%io!{Ik2ovZ5UntQRDgb;7p4{$=Ik1&M;IRiw2BPEjvTOTK;jsXBHGWWMvqF zI$HzzmF-q6E^SzH=*B;Reyy;4)%8KX4w;$Rd>(nXJuzuFd9$xna*XL)psq~XoqOhv zA$Mh808^ur1)WkPwe%lKgm|=Ot1WaKpHx-|WD5ueR{gn>?m8((Rwr=HYgv1#d*P0> z`M+ykbVn^#r{AVGWZQKny9Tj6aX~(R+_=UJddKfo{{6v0j-+>qf~eR-jmuvcDlGc> z%Y_GA+>UYzL2a&fyg0B12zxju*?SjAJK!DlSzv-$K1WeMEl}(re3E_ z5fxY?%s`jPf%XU2>PBuR^Gv=a3^o71o@fo|x3ncWgs}u_nx<>Ijei3jXee_C5kH_` z%kMVpVggaFaIm@zkKNh9vV}F(McnJ=h5BJkt6Uk&%jlBl3pW1DytGS}$yN}y2cq%yT?%=7m|8VfHj?J`@fUU+Z{d`1EwH+u# zBM#@m{ojzb6zCZ->>~1!Ldo7@1(@@Er4CM8iWZ5iMf9s5smx*I zC2ZU?_A*XpKh!K*FM(#t`|0!ag}dXG{k038VDoa4ko~r(mR0~8o!v-pX0HG6v9Niq znr&)uxI}G%YZIK6`XUVL+)9AU-+Xsx2h|y0H04>Foi16CArr1OFzq6+H>s&!jXGJ9 z7js^yAztPVZqyrvH@H(NhkyoiDiVeQWTA7EkFP-fv^qR3z?m%xIG)T1MS6Y3MEtJ8 zKIS@)N{c;ertv=JFz0336im4;{^bktIo=(SpG0ccw4bnN^W>SE>_d;Mz4%Ga-C4XL zLF+Jo)L#~?gg^K^DM1;u<%e%{H1SRZl@QC{=!q44uE)0YI3}-BEz&L?bGcFQE*%yF z=R1kL64sbjwheI$T$Wc3nu6_>I)+Z2${xR_B5_!_@jNzafejS+x;3;sObS&9?d{n` zg+s!}HbMv@BpFe!P=RTmWQ8J2VjX)?VAhVvZ?UuAv>!1b(!#4EKOEQ6LY3b`8CJO` z;4`LItGJDl_!}J0f?p$$Qod*m#7r+{Y+-;DNP_!^ZU5=#%D#T@ zfual&YRy~fOu1qdUx#l!Q+-EE>#xKH5rw6o^(;BK$-5k_Ao~9vR92sE=s|C$kaR=4 z_#f*^?SIWr-*RReHyD-u&@vh?9Kla3@`cxbko+~RJ>?wBQQub|)K*j+^GM;*=^+ig z;3Sm`Cyj6;GxaEgG*SRw3$m6u+`m~)r%AMU00u=y`l2S!-BlV-X@lK#N5!Y@gn(Y~ zfaFCVg4v(`*>$xqZJKId-#3jQK-iX+IFAZ2)q~R$U#m)KVV-%c+m4}F<_mdre~RqQ zH?-T*mPLyV83dK3(m}*|ce$LYm<_kXNMviuuiz4W#ly13f4bs-6bLuZ)})h#&b)6! z=r=kp!Eb`_UVx+zm_8dB9)pfqg}ynafic-?D0a&>;Fst`?_x9txS?gC<5RQu2YYV7 z4J)D;|E-cj+_xr2LyW3Ah;|LF2}=r`+8@`k*72s{**zfA>6EP=)KHc8<+LN$?7#to zsKw(ORpsBB4R;SOOzfyeetX`zUCh|H2aMpPN5nNJkJ$k^UOOM{I1mUF5*4Y)5Jrn8 z`u&S)Dp!c*VV+uXlqo`i=OL(NmP2Sd_#507vc~1tQNMF{&_4`%QjU5i`hU9$s(2U} z&rS3rJ*iCe>$=8MK(d4E*jU08s331fw>9wFv(f``csYQaQo!mcpoo);4SWwAHwtnF zjxvrY%o9UF-gyp;sz`O9MMWLT**fFPNnP{Xyf^r~&LuABf27rlt2+WBb@P zUoEr4rIzW|g z^j^Rto!=k0d;40SLLG3Z+2m`CrH9@*u~Dcb{S>WzW-nw5v{{0iR}L4!x-bb>dRf6S zcvcT|kLy^Rl6Y1uCZ000BSi}r>M`!AbrAhikrr-ITSe;?NDnh%otEI2%|6MyS*~8} zm@|Dg$F-hm;hyi0TITYBTqut0cqW@nwE$v>I4bFADlT&=@LYIssY|#{N9uP;4xAnZ zfkL>$h>?zGxXJl)xsQI#HUwE*{Mj5mXi5}hgHs$4c(D?#Hwopzc_-X+I-1)GA{4RO zDlP1-?bM~L=GL^T@&BRq)*pZEEocNW%Z~j%P(Jq6t^uTySr@h-rpen;^ zg$^WS`41*Z9zRh#iA2-cH_$%GLe4S6zbhbWEGK$1H^=ouu)8kWkjKvvF<-HHhb2v+ zRkdUcCg!CU7vzpRBR@QPcdz0@Ja0D|ZiP22W1-3%AJ5!fxX0F$TSDfrG(?B^ltH8C zh%`hCsK0BOV=gO$MzFgIIN;uM$cMF6-PO;KfpMpwSH;2LP<~Y$G|_>Rz-b-WnXEjjG4rdE&YMi3l--vqiH!;dWQ;%#X zD`32)EZGg$N}WMHYBfn~mQG{Q+_ss`ZVtAi7s=9wM-W3}zFq65WCn{uaJwc3O|Ml1 z_<{#o12ykd**?30jYMU|0WYEuTGOWuE{wb=xEwdZv{Bzz>hE4p!w2YHVtP{uIS-7= zT#v3iH|!jB=Qq_Ey4=Ywvzv6g$8OGWV@pDhXHdML^(wma4+?l5Pvwsr zKsz@$dHeM{pQz&MWi$UL<{9w+#_);<$jbHqWuEnbnP&_@hpnCZN@AR9rtGRW>sY%; z?()BU(5x(Kh_6)zWsg>%3Ih2&-uzfn%jcO zX9bom6)wDUFG#=ea)7&YH$o$rLL=r&l?8X7c)fGdb{Y30;$6Ul5r41uM~GSjnsQB; z_3%{ELv01nc81*H9UkeSxc#+?CxDF0A#*oXM=8(i3&R*5=I??3+ z7;MxQd0^&Ovxg!Ho|(rT$m3}iONq4Wi%c}?wx=9vga;~V4E|i22uhV`#q59lwPh4d zJJ=(H$t2O)S42^!1)e#QlH`3`j&+ynTZl8{o#e(e5%(Kp-njv)6c?jJTc3!;BkblR z(a-5`qEG7-N~BWqFd>_ot8C+KenvaMNo3us8#|?W0bEs9MxXO=##r8Z`c;O=Kz zGqPANM**Q~3+jtWGlvYf15Cr4x;q#s!Q=Bz>r=MzI!MZxzxJV$l0duLtOvb1YKY`t zo z|Hok0NqHKcM5w!JJgA`(mPBWX?9+ZhN+DHOCJi3}vG?O!-8WzRfrtQX_B9_s+bdsu zGokz7((ACGhj}Z85l-qH(x0xeZVMp3A>Jn3Tfya}X@3x;r=g`9{$rdU0o!nQ+^G3q zv<|hvOH*dc5e+?=sC5WBTF368Ip0Bpb%Tdg)X@B&ME8A>#dlH4)zpp=X3H@M_inmj z`q_6o4sH&khw?75EVxb?G@ck3jDOjUVIADDgs zhVi<%BS%o%vM|~n-;dlAUiX4AZF}s$!*{FEzZmTwm;Vv0MH?PY7@olwIE;W>fZ#n? z6i6LAWT2pTOuOQHzLO1N8cQsO*k&EGMtUT2B%tKukR0Cz3Bz-hvx+jgG8{U^sdR5{ z=sG4x^!s4YF+4|$$0d-9IJ(B zzPga@aPLt7NkB9=JYpp%g1irw;f-9WAHan=#mPn$*Yww47f_#6v{pvH z5~|SA(R*+)AJ^rba#-hB)je1cN}fVQiJN&#J3$^OJlZ3xI6X7$dt%&|%>Ol2tx@18 zDZfnd*GA^O@;~Wx0s$zSS?A~EaqHg(zb|&y8|c5wuS|acmgQ9QZrgfcbW-it(o_O2>g8PUcBZ&wKAQJm^||emem;JgAf4BBe_sF=7bQ^Hu98v0GokE^6cfW zc>ThrtO$Ot$K#CSR;h#39XEjrpzfPWU=HmoXD5YJ3SouZeB9j3q5b;r<{J~?*GZzP zM$fi-{QI5!`|+35dKXw2alb}K4uzthNGyQmHgxrvAKJg6m%a$Nm>KEf)f?+xyXz4T z;4DP{MtGh-ZNmwA$OZM+A6k*oCK?6uaisi}Tb7P=o`iZG_)T7#?|2*19??W&=NGk( z#$kj6H_l`d5(yqgc)s+xc3vvj^ekHu*|?DQ4uL5!boL9SgMoL6KD#K0Pa40#&!piefNhG-`U;#3{G9zNd!Bt5SOb)n;2YEm? zsi-^zIv{(Zo^s-TAz5x$LpAMDg_35@$-bFYCMIb*Cz+TpJgh=Q*3H;ZtEJNn2nueG z^2Y!InI~&JJBbYr%zVb!U2kj67nh$zVT>NmfN1^z44>qIL9vNYI6aQ8O@^M_E&2vd z=r>LT=5a(8Ef<;X55fvqi62g*ri)G_q(#R-C?#ALC#ERe)p$0e@H6!Vs!uRhv=RFu6boyScV%4(set!4>g(ksxIUg{795Y*$T zM){|URcJ<`HyrGI^8h-f_GQYhtv7(wx(n;sCD8bhgF3zmYv`?k|2-msF$a&51X= z_zyJ32ei|Ea@mrYjge6H`f#rwtUxt<+wbiQCq`(dN{-pMR5$BNn;ZtSFTPY7BY_Xjec#hX9O%P1-@U;#tyb&OU)mM84Gt~k;&;o% zUBs^3Fa9piDFydmf$PL(w#-=&zf%@}T;-ma=>zb4Y#uuDNEj#Bu2*45pg5#EbTiEo zI?OXluot(yQuAadC11C4YP#+Vk3wdW+8MeKx3``^1le2Ax7QOO+x@M)l@7eF7%#0& zvvZ;oah)s=9=1!d^JzW+-X&2B+l`S~i_iRIH@IsDyExfBlr(THLVu59c#>N5=g)t~ z^<=l?(_P^HMy3Z8*GxBfD(sjLJk5E7d+IaIcc;LD`Q`3%f6#x9kPgulhaoMhjjAV6 zsNrHqH5*PUobaz)kL_2myNTQcI9y+~L8%&Bb$8?dwCoXNF3C2xYNu%xp&lwj45#?1 zt$a{pr8F!}4!DSpdbliW%Gc25Np3V`j3-p)d0eOPFRIwX?hMkf(!Y9?OM2B$V$0#F zO2JCTwM6QWYP?wmy%v^6A5Qp~{Ss9gRh+8B5a%&g&(igEn zZ3D!1Nr_NOe>#{>l-)ITTq!v}?g#0{ZMBQnlHvNHQ?7lXY^Q(2IN89!;yT8RaVgW* zw2XTj=J>mKhpr{aX??+;bl@SxyI$0Pjn?+AQa7h3tsisU>w?bE^Byw5ZO;|h?Tdok z8@4F$@0VW)%#KOYGkl?Dn^j}iU7IZXtk}vxf92+DT%=fnVBqlgC(GREiq5N+|(u1%6HmTV35x#YLfE|%`hCKwpT@_U~|YF5A1M~+OHb9o!er@f2TBZ zC$-;HyRxVAg52NE13X!Ov>tHpGs(?2cSJnE?It!HZwQo*`I^s@Zi#tAv7IIuh*uZ&`Z&l>#dPWcP{((63 zBruXSh?4n-Sw#^gC&tAEq?ej9R9>75ZY4cRbhqC9Q;ldYMMcamw&z3AuU79pk#qTTE=H5@>-7O~JmfIg`D4F(})@{U*HeVmgriW^@uTu29V%~%l`T8UUFJ4%6# zAD+w&#|}WLjye_Y21jFu8jo&bZ66)Qmg%1OUCTK_Zc9wed6Fn0&xnp>5A{4GcLz%; zfS@i5o3WMaH%$u>!Tw&rjHeQzAjh9p7nKB5KU)137ksE?pCYUS1e_vKQ$xN8n;gO0}ck&xt7G1^KtA2^A@TH?-mzZ!e88LSr<3+uN z5-B3}YjC^6@?-$Z2Hq87S6+0`E#ntKnC^PEGUsfm-64Fn`)e&L>iOQwg zt!f~}os{lDRE8zVprI_DRYlhx(F&->aaEZ3m3(=Cr9xXE$7NLrRePGm@ZLO~r=0FY zLAOfF*Yc_QM(T$w_^8SJt&HE37CILps0uUQW_{16*HT_Hq%ey`wO=xNQ^s~^NPl;% zF5YrSbJ^5HmNkWt>DySEfHk`%I@SD%Qv#W#YO&7TQuF9kZ1pU1$a+xDiR}`)Da8wD z7yCg3q7PYQA9k0>5^ulH?Ggm)#}8BjUaJ?gW8xxt{uYG_ZT&SEeOox@e%-77e0&}z z%4c(vgk(K1|8?Z}H({DRFFvzj(_SA|iAL#eV&TJ8NQGS(vm@cifdVaG_4@j7oEA2q z?B>z7%Ft^~C$IvkXA6S$=>3FnO>wv)c6RuS{P#HhdWnXS3O)bk>g=FVZ{K4B$n-$T z9N%<u0QZz)p?c4i(fi=!4zwjSzAmj zjIK653k$N;aCQ+jC(aNB{UO+BH8fq-dp=q#`P|}y7zXtDN*+o_*`q=g=S7NHdC`!4 z^bSgQ~lEKo(0$CG7_$78q5=|YdMxjOus1qL?R2V)J6@DBS z%X>78b-{)kLLU#rW1ruc54}sFMd}kbgbgn(Q*1P@puK0uNbU+50avW7{?BehJh*nZ zG}f~qnR*5#1_)WNq^z)BU3tj90=s&|hhX-L)(hMwb*bxw46v*3IpUL4iAeKOeo$}D zt~5Wd_xI>pU=07_MYA;hEsWDbcIk6~(>WO-i02qR>oV88h4XCX9igj6HUCB%!Ta*8 z9NO9L=osMF)q$Zf*`Lc-qoB1UKU31c>blg*p|x!`OJL<_^CdvGkEB5*L@ne}ZI(9# zStplXBW(aiL6JB*3apQ9ugDxenVL9k6e3wcMJBm&g~Vm`!zL?TN5*dcbUC*_YIp9x zQ`?A~E}&EBx}wQl$mbrB61AbIrIAtJ8~PGgslVn`G3bXu)&GLU3HnRcFHF$JcL(&& zO?JnfZrcoSAf+V9CFS&y0PDx7Kbc?}XP>xBv2reVf2RYbz z2XT9%Kc7-FqS!o+%}V85RUqBe^J=vf5Nqi&Xh~^qv?XFn^;LK#B>X7WbIv;+h4m@Q zV3VVuoo_N(HGN33(6%whx7$a|Tx#jlPs@>#r)%BhQDRi4V%XHi+x(3^j3TLUWR=2q zZW0|StZ5a7?2>RNr*TgK;kteA7=HK?nO7{E=mu?=p8U_tEQ96E z>-25n2}C5>huh_QXLjjk^f7zB8N0RgNR8!{gmZd1aMR&{fIbegb>Iv$GJ9Zb&lY82 zdrQ_;05^nu$7;*bdch5$aW)4F>=9PHCB z0)qL zu*i5!J++!zSq}NVESY_&nb6Q$x!|=%BMSjKj>{_9R8V)H<)J}xiHlFo@3j_KZ^nRp zEVImJ`ELJj9@2FtL*2y0Z9vpxAiSfOzuDPHjC2JrH?|)+ER{}j0&Y`@##2W!{2e}u z%^F@c2=)mRBW4=>t^PfMp_D~ys7Tzs~%^P{c6QJu(7~babE>4 zvb|5_p)=j<_t`Hkx}p8&XSacBd6WnQ)9Y3<%d(RvPS04n7K0S+?;%@ihxrZAye=(} z2JDFl=5579p7tD&*53pXof!X$3ny4W)WM%@5^`t<|B&HXn?&94IHXRU$#&}HJd+*- zhRjgqs)5V~UmY&<;7=BsbA&RT0oeM@K-xTK2Gt9O2cOf}gR&(g6lCstoP%-7UG=?J z<7%yCKB^%ak3D3ecDF-DK9M@MUZgy=av*jbqG+}8!OHk0(@y`w@w)6h$utPYr#PC!f zLhvWPzjm%lg8&zLPo8hmc+QRqL_1MVf0Dk9Hu4-%4oRzWIqo zl1Qqm8+zA7-}UkCt}9nc>%`M)E)F%wM8&e=k*~F$3MH@r~$T; zpTJAj`)^BG>t%&oI;@vKgb*nE8=2$&4{ysJY^qp~eJ6iF;ef+l*1WG1=EGsS0r6 zRFuGUIyFw~k#@w|BHT}+^GP!R;IFJ#KkU!5!oKq3L^Z*QJuzDR~c0uRzMbpgrgU~kop&6PFOnIcf=ZI8JKv~!ga1Y^w73{ zGU+r%zo*>O-3q*gPIIzyU=uSa3@b@nGYK|}YBehv<0KM)0m-$Z@Hy2woq~9r}LreIO9X%wDDf>uAkhklY_G&`p<K$9yiSeIKyM?Z9FrQkY`iu9+tV84iaBRdq#mW5&8A*h8Ssm}rc z?S5ehN4fH;!w@L6*EJFhLUHN93qvBL4UMv&`vf^0`-E6L>4@hH5VbaEa5Pn#Z%F)# z_qnJk(g9>mSB@pE$9e;@X8u=Vk~i_+(QGAk?}G~7<8QTIl9K#&08>dm+E=cUPtUvt zi)G?^tkqa=6A@6Xx2PxhVhfRRaOMlX&_n>dW`YA=6YU7Wdu*KT^1MyFD&Y6~tShXqK_fr06oz2n{q)AeI#ZB@SLf>YkC=%hq zQ=YvT{G5?XP5OB|w)Pg`M57=#COe6M6xA5rJM1#d50@I=5t|T-i+*3u#@Vkv4D-IN z$8q%iCRY<$wi1f$emF)bR2L^S<9`Ii9>3X@L!GkmG!$jUxVDiMO)rF72xdmwq20(Y z(IK$9Xt8Aisz)$L%3O?G?4;eViDvahvsb!jIhhdVu+yeOwhV8bKd2H@T5%#S_K4I-Zdi%utg0X&~8&(3CEZc~r2 zN!4*R&4r-&3L-kwM3uG+0NqfM@tPWH+TM8Og*AK{`gr00gbUvzZ~Vx5s*VE*b}}It zmS= zoS`E%tseXx{z_Zf|N0%3Im^g0@7bKP?U5P?qmiey&4co$vvzgY)^Uxwo_pVao&=oR z3W?$r|2U9vC?3AzKPRsDs;iZZ{CZB}xDFD(;@1;Y#bn_*y}e6fn)E?wdO%?yrgdLR z{W4lPrUKish)>1DU6vv>B^4fsx471aCHsbC+;K^37h8)f!A0m5R0NtZk-EkwxF;;< zsOb7QozUsg3`HuUL+W%>)z2>aEKF<`f`K}l-?6Ky3WEP?BTUt`jRz9KrYv5(QRk{ zPzv0TQWM>6SoqTVmW{Z3xuK>E24)H0d!!J5GJTWwD5%j-kz9ZaGEHi%26lCcaaLOj7`x})xiY)18EQ#XTT#t;%zpF`ad8%X zWKQ5wVmFMDvHV2I^~9s&4z!7*tOMVEX_wyuFQ5K5T$MBwqrLwG${F92V7Q$CszfqV7>l2&fzFKf)7u{pkM`LV`=*LvU>*xh+FFB!DzSHLuS1cjNu7=#C<+b z@zvv@szSN;vghDe7e#k1xh;0kjiGkp;#6zlH&U9*z#|2^bw&0$T053nvZJb_FVM*4 z8Vp$}o5@Dj--=yzjM`o1-S%XYiPhVvd%P8LVO#@aG%2kiVQuG1-HN`c_C3s2du3dR z$Xh+Geu<8q)fp&?s!0PzBZ(bY(;L@q2L2bP2)_MW9kQmU&16|n#r=T6Y`t`TtH)T9-f2r@z;jT6+!fVkQ#qS7TYN zd{_0@&!Ze!MM=eOstOD<7}9G3L_8T1nI=UC$AksPzg{RBCQAXC9`8RVA5z^uH!RokC5`$HX-fcN9aD39Sa8?EG*)A0jSj+7V8o2VpC6}JTB~w~nsZHDTvF1hLzD8*)EJaG+S@R!ai!2&DFV-)h zC?7`nxg~dfGjNNTJ3f{FiS${`^N5htr|jkG*TO>OS!`r8%avk=hgW}DHZp;R3Xu91 zxcV-KK0n0RWberT_%*FKZjI68kf=)aK?U0WBmX%n#uc*_rxNSxp9%sY>7aJ8AfDry z@)WL{l+T1xZBKw|8BH2HIbTZ%C9evQw)(6$!bpq1thK6&zYtwnaSmT;ph!hg>7

    7NzR=#k-Bg6a|_O1^K?WJS)=R$LWSYY!0sn?vB{e{T$M{rIS z8x)844~~CZF7r-!8Cl1p!X;AF5x^JlWQma?pUuQ~^__Vf#%l%%&ch{fz5r}vbI(J;%yYDt+)}8yW`b~p=S2dKN%HW2<`hB_@6hWnM*!jH z*QNxxnIza|*w~^VygNbPu+12Hvwi*^M7%fL_1zYn^py*J?g>W!zlux+pSK5&0SUwk zpSVK)pUFZS3IEaqn8+Q_HY4QLJqv_BD@VtE{`=3?!D-bWZ0i7)Wa`^k7WDsoJP`Uv z>)ZM=_wVt3$Nw+br8@xS-x4h$tNH9uhJIF4*6tYIRYxu}d+!&f*%oOCt@n4O+hHZz z8TIpu++MIG6WjYr&28Fx{Y$kUY4yo}>P+Kpz7lZjz#w_3CLwcJQXk7`%fv09B^=Q6 zfHBP1W}f!ZMa#7;(UwnSoEA5OJmha0eQ0jTM3QLy9_Ihzw)}pI@;kv-Xj}GZv%Iux zF|#Y{b)`9bwk;5p{BpRVg(>#>LXM?oPMoih6$fCr=D@~mHVqsY!flH3o;2Ro?YRT+ zP^H+B2Yzt7AE|NBihl(iD@n^v9LZF%+1mACmj0<>a50OQ;Lj_xJ=0@r^gQN^VE!ka zu`jh5Gdwf?R&k`0_d5ibWqVX@owbpLU-*bQteG{0HF-wB>0)CxD@2E&*IJ(L6v&X+ zXK7>VAna7}m6Us3crI7X=QA`hWQxj1GO*(fu~T;dOikI%1hfQ^Mvl^_LRI&XEZ`QO z1~@?WDJ8DpC3`Y0!+2-(-7xp$eeU=DQzqc@|6A{iky|u;OLF(*8>4==aeDgXJSss7iHm882Vg`b~nE}y$24<7P>L4V9Q|zsX4$&V!~`;oxFAiJKXNnM9@0F72WUcb+6&A5I@K zFr$C|Fkd*Gcj!!3a0>b&=w%hA_vrF_mFoe9M+fOwHb$i*faPeTSbA2TQR1R0yZf5X zUu+8~yjp{Eb{HkbO!XDpKawm9(_hNI(>O|C**_e<++uP(N( zW4IW5QE6Bg=4UQn3%PJ{e|`T;r0y(^+OZL{7P23{=`n?E3AcUbI^r)gSTNiE@HHH$7B~>6vHUwnzEfQ{KoE6xbR2~vm5f5QyRs|XG zD-_llc@#3=T_aYDIiF=;O@{%%dqszIsTvYIdtbM|1LnjM&vhX{3LPh)ohvlg+kXJI ztdr`?$WsWgQ2@ZMuglyW;^@=eAB&u~l$FVQ=TsaX5NKd+)LWyJu_=hIk zXJXppdNybcEGR+RiW^hbuVmO~KEws>dK;rM;dK4UwE~#m(*I;g`n`3OfRjL?Er~xQ z->P>w?Fj?)4c@G=6JKY!*yP84TymY&w&ThtfZ~t9gqI*>otlQh6fnnGQ)1vb7*3H% zg?BQ|v5!LYv@{V>JV;SqO2-YV{DMQ10Nqj)Tp2k2rG!dd896ZvF)+G;#G<)&>?Ld< z)IAjbTQv8GN-zwTagn#F03|>~QO#;L6bw-%E@9Pvdyl{46=||>3D(B-3QV>yQG1k} z&`-1@@FSdPd+~soXj94hk$T}K*X9=lsE{X*1@!jyxwE!ypD-|Mf+kZ5cyOECO}#^d zKN)c>D*C*lkeMK+DjIt(SY5ka@l0V+WwK(cA?D1dA5I>FJRoM}hF$$m^+WG5?tD2P zxQ<_cch;cx)QsM%=t0Y3MaapF;lseWC>LD4*KvxuW-V@%68sD|Q!$|`s`mLoAB8~! zeQp)`!@3+yY|t)n z8FQhzMb#~gr_)2@)X+iC_`(>8k*CV&;kpn_(|A>VvI@xu$vlHqX3 zCi~el9u3n!(2JBUq)k|5-L8DGGJllv*jS6=ePMI?7p$7nF8CC((m~KQV^XCcFMX<= zvP=fZI>O!?XXt>FvRIdZV#|clWx)2$b6hkMm<%wVWK2`5il_Vz{(Jb#Hua3k+ESIi z@p+XYacPTaG||R=Z1+g0%Ys$tsUJtfPwXkU;9!ohkQZ=q@lkDJA?yHnsMfz&@e{-j z(Bq<*g&7{#;6wA_Acxx}n{U`n13@DO9nDVgt0$YxtTkcZ%aZs|U6hxx+?QvEG{QEP zjNrKUey8+XrEqbMF9(O72N=Wnep?XE)AD&j%`rn?5jUyS-c`Q(j*iz|SqvlnQy_*c zWU@hZ-4KD$oD!HS{Ylcm!B!dA(jWA@nU`(Yt}sU?Ln@p?4m$5v;3Ds^p2}!Zfl{e> zZv84~D*s#?Ud*^8O=%$Y>*a0TO0t`c>DZOO<41~TWc=caC%ifbr}8L34cZ*DY;b;2 zhB5RmtjVFPn!02IEKC8_8OTN#kR_M9UEYhQKn%1x|UsG zllmqa-OxtKbWHbEV8s<=m4SCM9O^#i>qxyQ!l&v4%Jbcm38|m)lH)sN6qz!`cJo^t zS(VXtyBky)Epjw}E`Ks~22(a_jV*szEklO*`tbwq{r|38|=B9{#*#x_?CGrwz$Y`FFx-*|=Curn^IR^G#KI?D2%Qg9v309-?Y zt!8zk?KtjeeqsWrx<)ql2kl7-KnfIG5q-kRlE_FMDVCU@ z`SS4Eyf3(Hx^BDWw5s<%*1hSLyn;13LHCdXQ0_=yK}ua6$(!pm8}D>krN(e%%+)^F zi&vQjM7A5e{d|R=yl#2LaSzeK^@4zU@aQ*b*L+Y9nU;InmO6<5ZSdXrJvcCgZTQ|8 zN?qxbDrp3Odb2m;8_7-JOs}>e*eJuJ^Qz;V-=)Q#C9u*P1lnKu!mc=MM9 z{~yNQDLk{F>lW>#W81cEc5K_W?WAMdwr!_lvt!$Dl8&96_xrzn&Uwyx_Qk%cS#zyb zYhA3utQvC+BOg5MnV$?sKA>Hkh#m92E2ky*zb`h+g%pt2wrA2Ycm2)&GVJE{Q~17T z{hn$NDzf}`ir)(3XAKls4UAH__Ai&D7J@T5<60ys^-gXLx%rX!7pxKE;vl%PzW{t7 zE~(L`vcL1DKWD=`570%xUJlAw3~50j4T zh4N61bJ!M=U0w|z0q83#swc^x+Va^PEJmc$2FoFVi|H$M;w}y|4fT|M^X4Krwrq5> zhV>e%Rx)1n$d{w=y!;5mAC8qkyV*%4d zYs~P$1T$82D64youl!00R8Eb}^K5YL)5b7TeN# z3H9qok|X}MwVIbfBhI6RF4v}Y5&c7L9)e>^-GbbZAG7d-($T}c##QX5ZW-~8^~6}Grzg*6RGL}@J~G6uQQ4#N}oxTqx&Gcc&o9fh;k$2}E} zjAbdM%~#$wwEuwuLa(TQN6p1HDV@;-n7hATEyhqEWSK<3u=e}V1<+F)VY3D_aQw>) zbR3b=#P^o?)lo#oN9a8!`Qm40A8ubIx1wGmeFvI@*u;S?VQ!P`WZL#$BhoES^T4!D zjv_$?5bZdp_0mes2^OwPLpl;PAOK!t)3gxIBk8_JvTZEF3y@|9;ks$h zYQHXK55n@0j{a2#ni)!25J~r87nO1E4>7{F z0>QXlO_so3S_n!k$LeuGsBrG9Xn>BSr*Jr(Ht3OgpzwLcThv?-nJ!?aMSKTJ5zN3>3+{DDFOkIxpNc|}aU9BD&_TidReQ9ha zvzIzUbD>NkGEFl>i&6X#i`1)F6&X?^N0;hQNaeAmP?;8R@~m76L}jO_@_-dzgdT}w zaDc!oKej+B6*+TJsVG1b&p1ipB~+FRFr*0VWqL1YC+_N!)TLLJ*F1!jo;^h~&^8-; zs+|6ate4-MzkkR@5rnXTNvhviPDk{r$rJc>Fm^U-Ap`7H(gV*umAktRkUY)`6Dip_ z2DitMxizQ7y%*xWCW07OQCxI4lO@?%U-FE9S=St!5BT~bMU8?#HBVNrIZYhap%^hT ze^ThRf>qFf(GnO6m_MJok4ONw_{Sylv|XQzx1jv4Lx-*(bVtyivAJfu-4B)IM-%e( zb5pKIS#S5CEIV-HwQVvoN_c&jxxjTC&#n;+=%ZwQ>JGq@={#D5k1F3RQOU>@|1_0u zu(Hi`{4EPT8y9Pgm_ThUu6e`*s8mXuy!Nn0ljG?2jo~j$m{(hGdM~QAEh`mh1D3`n ze>`rk$5@`CJRq`-}6&WCQdGJ;$>8<|_gV+iT8YW8aqNc?ljryS5OwM~fMZD!?FxMd;#j z#LK*vm{?|t!xF6s*!yOI9)noM)zb+^zKc|9&K6C_tmfwaMlWd`|B+(%Q4GUM4yTsO zqei7QA_?Big5!BSjy8(r%nau-Z;!+lO24Qr*0hpX5md6P{X`Eu97-#ji`<}5sSTq^ z&Ar{O{F1Bkz2%D>pQM)7K1;t@Kkki1-16y?PiU|81+bcHh}&v8{K*8GjjpJA)H{*z zZ_+BJswbP6KK*uFR|fINw^mFrwAVo<%~5<&e+ERQ{;3h<72P8RtNFO z^Hkrw@OD*>ra52qxMSy)_-DH#V177pyyI9B-5rsSuKnO>_ZFt-1cChgYyn_xT-8Ik znvjMz2YzQya@4K!lqoH41M?#p$kOHYvlOnd@ma5>=Yh8}ecV6w=lH#roM;jT;bk)< za!1<=LdZ7bC32gQ9ng5c=;E^mD0G1QZA7bHCrX5Y{Pz`z{ra9ukcNz2s-WE(Db%Ih zT!xKLXl7II^h=CaXl9tt;h8O)pH3u#h+X+I*N?xOHG?Df3*NQN68O*jIUIxqPW-K9 z&J#Z#M&B#H6lNUy@+SeYPczRd$*CCYU2@Yq9ElNB0DtqF`8{ht<*fDUP%4m)H{6Wg zjon2dnGqGAD^-q2k)b7h-cV>m%aje;lLOJ5p~CmdUUxV|ma*3Kby{=lU;d|M{-2(*mZ$P^L{PRX!`y3(UH+(*P_ZMPq>ZBXU9+xcD^lbUd|<(o^3NA_ZqHU1OQw(sv0XoIE> zN5HJ2@_epZanU1v1AO;iMmzjGQr-MybAu=!{U4D{fxeZ6ix9T6VR`F?SiGWsj%WHj z0Z8;F{Ivg=c>*L?T0rTS<6Qk049903BJE3g1WcTMb1hi!@6Vk49FDvT%?)T~fEGhY z`$@5#I`d~f9r)oikkt)s1Rd|K^0}PADn|LWlf%}hWv&x4irM>BUzmk0&uB_SQPt?R z^7~ESs0EH)anRMB9&2IWdU%Y#E&SKc_H!)fQ^eR-80KT#n%@E2XwGzqXml zJdKX>oyTez0~{!_M^(vlGdUxgDHcv0{NoN>6t;L+z9^LZRZOtk z^_*D>{)V$h=d{=W>QU2d|7V5Zf3pyB)YD4%)hwNkc~aO1QQ&6T`Hi3kkloS+~T=NE+M zapXm2kL>bbl$+%Fatl2e+sXVsF2#1O+KJ&ENHqfKI*AJ+lW=Qk$O|%o!syCAcv)VU zMo>y9yWa7@I>p(g%e9uX%BTcjg<`w?gd!df$^5VXUoD*KnN9Xic#f(R zoBF_@_UrkNQ5rW4A6VHMT&wXIG*DRC91Al_T|<`V2E&2@P*h~c5oKklIwoWgOjz)3 z1EZwjG+5w5Q1KC?>8gXco>n95lphOl9qwG+h4pZCNp`Z#qMnJefhIQ-A;Uhb9O1I1 zV^F|=MGI)W0QJKt0D1NsqK?zf-}LgrIqzZx zeQN1cN)E~81f(vf-FtVSq0iK=V_EB^oC>Fj1`oxvG;YDz(y==lGJ2jc$ghz~jFKoA zwyXynPlGG{GH#h$E`gv&mx)ogo>cUe`V~BEX>gyhLQY~t#QbK=eK_Acd`1L{xViI* zH)a^!LEe9}MO2eAS?KWAr&a(qV+ejG%SXJ^$8se0KPyTr@+_h z%twp2-a)tC=`)>T8#Oto)~1>#F=FFxBwPMsS|rY2K)C4Vf9!#tQY}_RX=G8^fwI4AkV9QBmvLJ22?+C zwEgpJ`+%X-0VD8uS%qC~cGjBai^cNG(Cx_Y;FAXZkH8bdt$%7%0P_`!$ra|jPuu(KkAEXxz8PPkg zB#oT4&#$;_Q>>3fQ)0-VtfiQ2>*F_F)|mALmmffR$yAV#J%jzMk=&;k-p9;}I#!jxQj>eFa^8aGa zHd8z)a3}%LUMY^j5rce&CT1MbVqJ2dMVLY9*_bqQ9&ofN#Nbfw_*ZYWw^=mE4rOI@ zI^e^kooGBuz#d1qe1683$}Z2`;yuWP*hf!QeZ}kL-;bJ&aKSpu;5R68jw2pcy~Iyg z)r{!_>DrSni}Cg#R+lEI32+?A>}a#w9B@!K9G$5T-*Pw$;bp(9Xm2KoJs|$%Kn!&f zF5=23m{{eMKf$rvKE9^#X)-dgS+85ShSs97S#NX!@ws?xmYZEw=i)%77JEGz3NHkl z7W>xjRQwuDUtFPkbzDXGS5s@DU#;nKQ@}@d-xR}WxM6Ub9eOpR>>BhVhQim|1=LW1 z%3~Yt(z#Ws!4OwEwGvR7LE=|BjA_QPz~*-u6s(Zu3;e1XE!3xkf}iaE&Avzr6+hWQ z$phf7b%LL2Q9ON*`hZ!r-NgGmm~9lDDi?7A*~yGI8L&FgrVp~SMHu2?DmyAhv~e*_ zmM4SiK*+9w;IY_cUIz!pI)aACYR3 zT25M$w>kp?i!N^XPCm&$4Z@sN`q2%L=2w=V?fFaD2A`pA&ha7bx1>!mv$$~?iyMk&vvp0x^`#`P)&tu)rnb=nleBlm(UR&}pPP&(NDlz&OX zIZ277@8{n73r)V+xPGd`N!5Nk;&nmh?k=pg6K-ybg!9L3K5&yLC@brZjBN#KgwyXP zy6JFFoT^Rs0c;EH#y+HoF@k8rMurrP-c8tbI;~1!0Zb$pBzRjd9d|fV*EH z?!vQ88&dF>SWvF0rS_cakT9h*Z57bBGF<8OKQLoLdmPj**t8(AZBm(2nogD-a+6CC z*}tx@l31R`!i<%C-ck;AtCQ`|&r8VI_GGU%+@*XaR>#G_x=ShoR{30|+G zAOaZ^CsrGN4ZBa7s76PR8x}JrE;qW}nFHu?l@?0|GcMOZ(X=w@4u87;@k$Q&{0q{} z$f4JGR4L|j6d{KRTA=8Dm3TP3G=?@9$M39*SM>o+57zA^AY0?fR~p1I0Zo9O?3$bd z4E?M!T;*Af3tovv= zEf(p$k7Jx==a#>T1|kV^X|3#eoW)(O4bW#vdudgP*e9VbD+_qO_K&BFdz=Nf_GYem z%yQ0Turx#6xXm6Vu%m`ruGB9t$z0NSLkH6P7ut%LU2ZAw)HHv!7$A|h{deWuw~`AySc%O5JSH1%bDL~%vT_W$=No4o`x|TS-fpQ7~gg6UD^hP{Y!BJ#*bGjD z6s|kj({VQW0$J*3spBk>_}-iCLH5Wkh$TXIeD(g+Lkfcn#sXM$-)!{wtR5B_yp?mKO-U>1q9KcH#S>91J9j6o;SLY9-$AWLT^+9P+kJp$ghE?`X0E5S*POv zI0Ppm+{o@=?TiR=>JB3=!XTgtbY*?Y_Yj;$=^bnhX|_@;h2KL;MNu`wbCV*D8N|8vhNstU)jGzeB39|DPaL zxH*{E|363-zs@=`-lWnz1E+w3wJl6TCgGpkgE6WZNJKOaq8yL{+4 z?O(Xb_!WNg4#B0dJ@A0k0n4 zN=NlyhxLMY8lSfT$KTHw9#AL6qN%;FFFNWgr*DK`kM)G&m+^nT-pdqT>v>Xu*6pF- zSNOZy$M?tFpRd*UfcML>-SqEe0{ETc1u1TyHM7KkCGVyD^ZSiMSVI%F2sFnw1HloL zeB;);w6lMAQ+`(on)HV)G{eU0FYkzKZaY-z(1tFra7d0!G!j5ayCu<{W$Ha#!^9ec zw7S`lY}0IjztH$PwGP$M!<5MQNM#C^={+`SkZr35M?!NTF>Za5NkT6phH#tEgtf|e zIw)~>fw57-F>QdzxByKumZ^nZP=bgmv*Nh^cSwSX@+i5qHQE{6Mv5vMnll3?6t_&V zF!6U3wlITMs3@@yuAuLcnGzRZ<}T z$)tuKJS2odXY`~DF5ZiNlJ;ZEE}1f5FHFBot!iI`eL~ww8>W{l{$Ydvp@pl+Je{8vHaM&l}2??PA z9#Q@C?018EC$*4fI=!oYZG^oJx|(Z8zB(el#-*DJH-W2Xb#y>y`UF8OjGBz^`eCoH z=fPOHHxL);=&+reWDqdw4d>jh7AWsadV-2Blq&Ol)Y}!)`uEF{&=q8A+dN|;JP@1- zKNnE>P9Bd)U^jq?nGXTsIawr{SNzxKT&2W8~T(Walbr`#;QR zW?a#(kwLpv-m^S0q!Fqg5=Z|~%HC2o%k>8->3o}LMi2eAn*UKpUi8~(xb8RSgj5MA z&MRm^g`ig)OY>jfe+>)ndnl%rYjjrCh5OyLl_z&{>*o+$E(RqzX$zmGUj;SoYaY$^2<22{GrOEZuq#!IEF_lWqms#|tS7`N2!#_l zIdeC5EuFzDpUa97K6BqgI4#f|$}36e#mpn0Yk79&un{@?U&5@!$%={ zqPW~e+~og+xJw*;= zV>4l4E3Mv`Hs&CKx&X}=2a`4|yOhOUkM;ecs--kt{8+fB5n+!kOC}Ge#OUp$ZucdFo@SqpWkR-RH$?{FqSUtM zSgg2lP`8elT9ut2?^Qz<06K~WbDr28Vu@(APDEZv&5x@PZObZAY4xp5XuYrO8fP*EB*))qWeyZMDxk>PX#k?ivQ#IFqh%6io403Dg3h%+l3U#-I zOkH9oIzTbaK=PX9TZSIr+UHs>N0Z#Ia-i7S^o1dx(POctMq*01BTS}}esVX4-X|I5 zU?YnSTO?g~s-Sf4=Kx((j#`D5;8^Zmm{-yiQbz+1s3%X6aS{c1MuG8fbt3}m{-`B| zeq;bK_|jc@-Y~%&IqM|(-A6%MS#^xMGGb8kL=2SS9@|3#=uw+=%?@{-!pX3A(CprD zNE4E_PzB zQ~leLhCe0YZxtwzlZ4#VgvWQzufwi2QMj)5LD^;_+;!c%Tp^R#w@!;@ za=Z_M$JAxU(3EEtj*vCmMtm9~(EEE^7kGF_LMlc^M&IxWU0#kzG~v&p>wcmbW}_x~}& z2z_~0YZk*i_ce9#&33zI?RBo=MtW0sb`1sG>8@kj2oZDyx{w|4qQ~qAw<0*>MlkIN z@uCeZP7CQ@pNwGPRm0*ZSoN&hKv2e?>slDxMAmU$c`xoZmvYi)r^Q$g3&sQ_>J;_N zW^dsLdO{~2us5eBC}sDx-R*o~BCqrahZ9MKZH2S_MV44PLz{vzEYbr8zHqd&XRgL% zi7uZGF~VKmmDWl&;|D3W{kL*{IRpSi747MTNGz498}8w?D>i8Cq-ZHbV{l~oy{@Z;) z47Zg=O?w0TbWEd*ws)-2334&7__QG(OFX5RomLbmfFZEZl)a_vZ^U?}ra{$~?$Ekx2r$#1r1kct}d=?u|AsqmR* zi#)l=o)2r}%cV;g%yO2k7Tyyr z+@dN?xe!4Zb*brv(`ke(YofOurd; zg|d6B3(rkAqzL0-o1?uw)$qi`pu*Vnu?7PRvpjhA6DNT}*br*r|SLRIP2uvY+h2=f`?jrlce7~5uZ|@v@I!^ z?ouZ8k2S4bmmjrJqp{Bx#!l>1cbxNCb@8WO)#L5HjNIzRPvIoHH3&#n^#gc8ygk5r zo%Y4ZZLST(5q^iTBHOe?VAn9F4)e`So5htic3!;1qp@h}RZ&!H$4{f`=}KpdlLB|) zdF`qrLTTkJy(+B{D5ddn>lls`sI$tWy)X-d7l>bc;lnAEL2%HB1+Y?KJZ5jI@E)=H zN9u`jG!|uc@BcX+Thr-27Rz_Ppt-XfK-*?OCZ)ti4nwe_PfuzeH$cMfWfUnt0WJ_R z`jKH>iBAYUq^s*^*}wP^VtLx0=~(b^VpH{~;kX_wYii0|TIUHH?<`+>DST{De7HUc zj%|4iX+6|S^kG2qh*gx8M?uO9CCZitiN>8Ww3Y2>`99S%m32u^=F+J(P=;JH4`Q@L zd|w72gUx0y*oVVKf)|?T-|qeR&f1nS=)2pJ1f%`bd$YrVS?I-A;X`Thjg8rs>rR{D zYin{X0I|(?%k|`SFU!sJ%7(5V@#%@Ps=pIY&1mpkxsxh?2`Nmfa^(!5vY?+R?B`W7 z@r3ec!u+FPd&P9MxXFZhd6IVmq~7z(=V&LI709&2O<_=mC5iz=h->)e;YbAo;QA;} zaB`#ktCsy^J5knLr&9;aP3qt{a9v7IOs5-q%)OBYP1(?zS3%3k)+}>m$I|fT{HQSu zIK0X6fmkrSHLwNm@d+G+wDpWiWV0-#ejixrrpC zR=TGHP0I3MgnYc}#>Z(QY5pZzMjF%bk9%L2Dwmt%XthkJx{pO~m#gW9N3T8^uKG`e z$V!@YW*VMxje$R)rcE(R32Vi~w2fg~!m?%RP>Ye5-O0dp0h?*7D#9Zf2Ue4FWAFWh z5n|XtuL`xM`y-@?`an$x^V%Z>?Y&N|{GdTZ*no)^DWGEr2|l>IM|=(1;K&lI#~KCV zZvD>apRv002(Ov+Z7s_HG)Za11#Y0;ax$|vD>a)VR#(&frb_td8vkVdS_DSom5PdZ zt-jjQImyU+6U171G}`GMj^WrGKMwe_6@0_tyd|1%?1ew!X|G+Y#K5!q-6>v*!WRNSI5idR0jH*hD>v~zheyV5dx0qF4briF2jhHI^Vr2E zSW(P3``c*W7ke^+Si1o|2=r=`i1XVg`oDkf39&Jq=3F!KR!o9<*=CaejVh!Nm=LWp z^S7?;Fq}{;%YIzG)TyLt17eV`bu&G}z76uDp zQx}Gf6ez_@)8E-QGJ70JgB1}>ukIf!xI&2|lGAmZYc=pKSJonnZTW^16&s6&UfM%A7a!@c-<^|)EFf_vIF@^(`cOO7IY zVx;@Iqq>?w*~oul&&d!4fz_dx^lb=6_9qM?)9F$nVJl@LI&!*0FNiF%(v6=a{L243 z%ovHntnrFJ{PWW5QB{`^-9=KTV3GFsL(j)zuVYLh=1O>3 zJWp@)L&FqJ9b+@o{44b){CAG#K!0^AG&$^H?LCHmqaC?w>Mm;)lUj?|CMOL_Bl8gD)6S8|YX!y~i5b+kip({~ zCNboVLL&{z&qe=pLt23=#TYzI*rQfssWu|(HSb6RX z#QsL$aNP3D%;y;!$i2h3**(YA6emc$(AxVhJKg*htA+a53#MR)5YTBjnq4^nArtG( zg5e)8=>wrjxbPuxA(5kL> zq`pvmoKVG?q9bN=fN5Qz|GjU=wOp!uPg1wA^cb!|yw)50(HNnp{G0BocjoDND2!s` zIBZwvS`a8RpX!@`)q4Il6kYZ_a9)3ZH=lx1)(S|c%f}R}EF%D&3eVE1#t0!D8eORZ zM>c_wOOt~o0m@U@EC!v#do2b5=~>1%T8Kc`!6k{vy8&L-4k^rUS9O(mkL$_p*~ZbY zz?_gB`!*7u-?@uGN3(PsK4(U|&dQiZCpY#?Y71dNkrD79E zofSaFCoq_6a7Zjx#J+I#P=GRxedj{RE&n<(OKu5+5Xh1p1?FM^qhCWCnmIJuqr#p` zGk@nnC)SMN5;gDlC0DdeTfeN`6gfapE-@u`7>IZ=(YRP7hv958@Nw2rv2tYg+p8|d zO2G-yfDKJh+g^UpIa?;)o&GSWgHqAEr5R`_Dkyok7?5fVk38Eday=>N zG&)7w1*eDbT%v1w(wJzL|3gy43LCT6`U}=$<)ZX;$Kk#!_3NMdk)Gpk2^)u&FUPIB zglGjT8+Q(N$JnScH`eTR)aG?M5X+drw`0PJhtKE&Ae|CcX2AkY2s4#3S^0|xZp6KP?4#V ze;f?tJq5V`=2VKfuM4ZCQl?^^=FeyR|7tFktpHf3VnIZT>!vR>*ixJ2VsO&fmq}RR z*l28JAGw#u>LQeaEml?YQ5)R)k~#5t%Q0rF5s#M+utsOmM2n28GGKnfQ$}ShS>}PU zQAN>+@hyuA;Nhf-jfSe*{0I+wh25!c*{Xf12!Dm;Zo$DAYkF*>8Z*RinURSlyqxx~ zEQc+wPWSF&>iVzA+NFZi`}Eb7mG3iHVZ%qQ_!pZ(eg!_iQq5J6Im+;M(#HDc+*oL} z#AePDdH$=}aHCPL22T3?pC&%1jjH5QNX7^1y>F*BbzoNf(U^7qO8HXS#}e@G!l19# z5I$N$QzWlZdvYx+VX8t=7u0VxQ%D$me0?#cDh!t1*S@I(Pb-^herw9SHpQ>5=A zB%e1VRdrB5bEVeZmgR6U#v=RaosFxKoydcQJ+I+TW>HYM<#uC3#jZH-vGj<{4!8Pe zp`}p|eu!NwVcuVD=$}$>WSj;&T$uPhUcEIIP#Ar%c?+Fb__ENZ2n8bRk6m)sKQ6lRd4>w z1OTtCcXs@__N@ulZ&F5j-D4_1+I?TC{O5WooU8wvGikn_oZrU6Zm{9Xy1LYph0ux85gaa~9uRed-z6~viLKXh zN|$VwF-IRL6`qz2tk1U;sSbmL-NQZ}ToaxAlw)))?c|LRDn1Vt;Pikb-W_-tBx<_r z)4qI~qLsPZkp9x0vh`0+@U*Znz_k;^YpYQJSsCuJS^P{NYJ1Fm_8!pPy#CW;>EmD_ z_@6BTeyuPev_R>k%u}S@R${Eo85XipS#xZZanrQ@59XTC;{5Mfdv{ zX%>-R4NOpgEU>tm#wdY-VOOK{6hgm>ACr8w&S1b;q&1*Am;aKNd8_g)B@Ev|+&JZ< z8t9=hW07)(TPoYaV_R5v4@xzTw5%RETC!2ESZ(X4k*NCvt;k0JTmuyAy-KdG_!Mc4 zZ28a)N!06>z21ckb5sz0EcA?#h`%spo7ZA46<~l;wEAc%L9q-~mDa=DD=KP$V3y*( z>G)-NOw-WF4?1UK){sX_a-M%NS&jmxZiVg1(BJy6v`PEsux%4siqrg~IAw)-B2CI2 z=xO;1-?ij9h^2qkYLP0X{4vgqLM@^>#|=5DQp1NT<8vfJ$r}re5{+6F#Kl|!mHu^A zsr(u=%E*)+I%)x~TLjvTFm35h>~=HKPM<*un?6>I%4MH8CR-gdJcE#x3={wpPu|UE4(!Ymhj}XhJvw?wRmg@eh$2DUO6V!3EqQc zj>c9N682HixU_0IQ*NuP_`5WAx=6i0)+71--xalwyI9pFmkx5~5=|LS)a`HK082H) z&(}3{?uf2D4yEuXCm0L1NVnYVf*mzC&CD^L(|w(EsyG@!$MJOj`Q1Ks^U#T&y#}A*xDghKm%WU zh-0`CGFq6obA>gMU;c2Rw(AZWrSvYz+9?MWOqw35j=i$HfQ_KDs)w|GZNF&V$?xMh zcQrBx0-eOmX%NG0Kwery%CVl0#NS8#k2(Sspd(x+X!Qcip-;iOwycz(|Kq)6#k%Qt z)7UO$t7@`X3tFD${>YQnv>x8uZ_P$E@AU}KT@^^+?%QxwZ|X-Umzna92y~zSM%ipp zxW*$!n-Vx9@Qnvzn~=sMtN)3zMQS377MEV=8=fVN!GTokv=Pk7!!V$kWa`s|_u@7E ziCV@ZAIuIw*ZL@Q|zdGC1FfS58zhgM~7U=#RHUfpQia_k8r7Q?5c1YIxfL0s*nQbL%mmhG=;u z?STr^04AM>xDGQ|q33cN`g(M3^_G~+o$Fto>LP&XtYKfP$WM8#Ah7IM}- z;y$a!P5ub#OBPD}>Gh~Uq}Z|n*Fh3_M>&Y&ADjsN2G#`d14JHR8_gzA>T(HylWqYS zl?mJqVtFn`b0QwWIc~}?XlPx6f=@C~@i@kE3>zelcV~0BE?h&ng^U!8<#QVAIZnV@ zf04Na>G;NRFU0Z><``lG;J6&bEbnHZTGV_^=5U$Za-M*N^G9+IYUm}jt6MCU&oD4f{O5_cva^F^6{d75)0`Rq6c{>uRdsq(=INT?UHlpHTnO2;f z$vgf|bQ`97%ia4;iV1&C%R2xfF{?Rn_n&(CoYW(J+#6mIG13|veBdC36%-nWl!#%2 z#R8Hs{55XGyXYMflxa{zLl11Y$e}FQ;*Ljup%INR6Aj%cjlhKw!=SqLe#cysxM8zc5;-aN{`do`-^6};7En!jmh-IV`HzS`=EH;SBm-XyujW* zV@c@hAI@++GyRVhho0BT_zT(Ms#e7LFMhN9<+M z+gHbMX({MKoK0&5i^DHZWGm1XjsgAeK#k0mV2C!`vDZ4j5J`Dx&z@eL%<3Dy9sQcz z=?m_msLffi0$ZK4xK@f5Wo}?PnG02|>MZt}IveNQM%!9htwJwDkNm7XL}N0HOibPY z!B%VP*$*C5ON>mQ(pToVF=8Jx3TRuiCqZUxPzLoWx-?n0_?eMqij=xRi(FO~Qi`;B zw81gmKIL$SsXXucaSp6=imW=JN=;~Q=O@pZX@$~5=$S_lnd?ej4Ixk@yg*uUsl)?? zJv>LRm;avpg&j@MAc)ri{eUCiS}h_0UePmAzb9zmlYp6vGpzKT10aPuLU#kV_66*X={gZ8sw>&fs zyNTGnb_RDLUE3zFeO9%f&%9MSd{>hxlx2#e&Cnz;pH*nIb`ewyqM_UK!^%wwC0bCn z-CgYX*fO`_Wv6{|(W0i0k(Tl;WEpd@vv2i&XBkM)4(dCv+UHhd*^hnTkYzmqdFFD4 znLV5kFC&T)7M5?j(Nqs@nLyZn+uLXHd%JDp#c5Uj&SIgan#6lNzWaY2359j_sRS`K&JH7v82&C2E!S=K-(C^r5nSbol+=2 zXyGlL@f(w^g_9=|VQLKEAQqH{teayXpT9%f>TnJjRWuE7M4M$+M_o6`bn3-6u#v9O4fI^mKaA ze&c?7ec8NS5?=ReE+%~#{Er&f1))R0yN|B}P?78Fvi)PZ@4NlO1=}ffZ$}S`;`Ldu z>bCLX&r7<2!|cYh!FPL>%2%!2)#s{#!}qJge)CAcSG~da(^LJQoiDtva#kMWQLOed z8;Tbv4j+coDciYU*+eWI?0(-c3cg}AqsaHU0z=QQ87`9}CDJ*`?SBLda%m5V@cu`G zOIr>Gu4&HT5Ao4Tj2m1NZ!T&Oz>c+1$wmN3LDX%oT_``V7V+fQK;hgHSjP?H0}a>o z2}d9-KPx&$)IFz5d<2lSLvx0km%AOwR)lHBz51!+@>oUzvA)jg3h4(+0cJf@_~0~Z z7|Pn!!*0e*z8Z?%expKREPW~`9fK5oJsUGE;mzIn%m3(nM7}EI8H)jliV!1`%@>+d z#14II{}2Tp*EDobCIFd=m`3`c?>*4;LKFgS)c47*CmliB%VlA^dD?khSXL(`P;o?L zXIFmM6;!M&K!$xyox=*x4*K!AG%M=wMJ1?|xc@YTr~`^8k zc)4*#NBq8jBHT0q_}m%89d&=Z0oAlFDSYsU%*G#{ zXPg+IZ5+Q?9KVcQN-(da$tQqZMf(%uw^R0Qdrg#_q#o4d|p{!Jlp_#BPzmW7ewMzMRWpv%pyzw_n6mv)m1OBxe(gUyswS_O_4EyUEG*0 z;XFfl?WvxLEp}|@c8ObWKXH1~hb@NQ<`m6W_XqibR83`a<tREs|yJVwv=a@NJLbFJNlRX0Weq(Rlg=mnLRiX*W z0g)N^872!}%F}pzqfoEkcud=zRvtPjPsr0c8ZCTi*m-=$)PCf)ZWp~gElC!g?c{9- zS#tUj9iILtNy4L1*oo}pi&(e2(e+xFB?$gSlr3#Zis-%ru}XhI`s&ESl-q+?bRG70 z6fT}0I<8|hkH^*?R?x(>{BKOIFl*5Ey;)ei5!t$wsK2##l^=37Gtkg7H-E84N(z`~ zBrRLiXPHC`d#UsiTez8d9tWnXI(s3cmcxyeAMji$8{Z|84>D@RF5h?&JO^Ed~)YUFn$u;TKa|lP-h#TtQ|N>d349%aP`qkEx0XQVnuG zH;j8`NW9=KY6HU=pGy@JB2h$W(Xt$Qe7w;cTYg>lI9eMo>}TmU0juPVRyy7(81K@vTB z)fxaP*aV8m8Q{u=L%Ko&DNMd~L^w&6G2Poe=Y?1h+uppDn3>6%0e1Vw54BSzopDfo z+TUv0K&l1fc01qE4=PRUu1%w^36sBRVDQS@4hRm#)Wg1ScX~rCmG$6Q3p6++T-Xi$aI30#SfMY_fXQti2n*65|?Q6AKD zZihns7f3aEDK=5&@?YnsC@V{d>WTCJK^vR$ND`Q|g243Pgyq}>oKX^IW|k*OCRqnz z+r}8DSn5~f7j7CvY7~|?pSMCH1x(kdo!l$#id1!Q_H%^CfZv~h584<%C;!lW6Gdax z$y7x!UfAA@vkbx}0cpOZ;!^ysd+GaJPZ*PQ44OQN#R?}7r|3KiK0M6~i9X6#kSwMrFjc%?A-9Wi zt4a5W2(o1=eZHGJsX9{?1Zm^xOw>a|I{?LUV!+h7ZhA?`9y2rOKuitzSIgIuCbPKt zLnB93(I;>v9 zyu!rfwqVWNpi+;ZN0uW@+gxj?AIlL~`loz+ZZKH9L=_=eZ7)vADIijhz;ngmIgbHb ztWJW3tF7fOkRE_hBpr+Hx5ceFo?%Pe;%ivu9YGvU z*2sWgK0eF*0~-f1l@SrRc#K`nh zbklrdH4i|!GOl~Mju@2jbL~NYx{mMF&G0&`Bv0I;!ej-$G><&Ae4krazsgeHIUvFU z@bh_)JeuZQ)NWHA-JM?AEyaR&k%eR*$>p|^%&-h*CJ>ca z5cl}C8>}&3gq=afnlAGP#zk^P0LdV?BA6yv9$rw9i^cLRbLlz9bS~>ZM_k;7^$u|p zIl~Y;k>|FQ(#(~O6rkWc#Lzxl40kX9Ruo{o&8&wDbnWNzP-n^@TeKVQM=f@msh#hZ zf9lIgf)G|obx?wGhahtf^!b0#xma{oB9}~M%fWpMowQj>n&4ks*gbFDqbGcZ+5I@PV)I5zDlU+`~>8$q>M`mYcRz;2E((lF%+4+dI(Q_gq4?(vuj^ zvq>eO7b~_!HFiB;_^VD6y=`BG{AWR}NPBpk~9_lkU`wr%n4XB(EJ7@?rj=td;W1;p!4*S+cB^?r1X2ORCT~ z#t}-?=NiJntug>@k=ArY@LnWEOg=6{fbH@qK^_5OdFRhG2zjFB9 zx1oI&#bvbJR914Omo@831ePTi3{+;LU-a5)sS*QuyOq) ztmXd%6x^j12U>~F5g53Bn<(pF(>19`_E3@=AcGe2JWEqEAK}(@j`q-C$P!xblrchp zAGlT|71S})IN-Waa#nuhlySGG6bx^t<=f^?B*HKRcW>aSw%(yv`Ug$xUt*5d!#<)^ z<}(D22@L{mRP0s}6fYALwEkFw_3gMNvqSmZt%LG5kCy+r-jUV6z6Mj>Q%8>Cd!{et zXjUGCp!t`rl7)Kbq2@U^Mxx zAoY!fYX(b7J+6=LU)xe*`6%_1!%G(dH2}C>-a*=|f$)iwK(3Y0|+)F%w@ z$VzOR)P%RlO4vI?`D4u=emn);bfKm}n8JU@@U_TkyFd*TtP3{8P+wJ!F7r}e@ zi0WA=>0q4Y6oDkPC0n!Uuaw`}eD#FQ#i?{fRdn)}g&;^)x{z{$Kuae%vi9Os+qmxk ziF|loN!s^z?k%JGZijb3UAo?bY?A;O(Yj!8Rg+EIUqFk%46XJ39^7m%9!yB7>_Ha& zRP+Vrso(w2jL}L_SxtdXfqC)i_V00pWE=p=Z2czt;VyLuDY>Nl`WsN19tZtR)Ert~ z5|DoX=s{VAaYtRm$_%2ivbPmFzWt5hL7j-VLtvgiNm<+yUXL2zs3qLVO7Sm}Q;ipv zWzMj#8WIf^MsI__hYCgYQg$vgzCCX);DolJ%Nhj|93i(>0L+%#^3i)(;Ac_|wB@b$ z1A3uhe(lT)j2fg03Cw52u=NvrK!1^#kmMA^-~Cru22tWG@CzQJ#o{m2$rcN`{^@A} zMdPgke`!AzzPvs}1B1B`^hR$MbePLdH|RgU$>S3n>5sqIOuSMa=^ZiO?GvHCxV2P0 z4*?Um9ft%KCy2zCVx6(S95b&9AcwDmOq$wA?zzE|fP3h97TSnuNr63CQUQMQYOREv z7Pa?>+AQOMlh9upjPasAP(cWh8aE}jzrpZQYPExTOfQ+&^8J@r9m1weAn}sxaM|sE z-?-vc3d>?o+^lQ)(aX^0)%YAVralRiiQ}$8BI-L-*bUDat_Cpc1oDmT&f=un?5bm* zKN62s+eL_ig1I$ncE@f%u2qg;W1~HhPbM(_Gg6`o=hLV`{s69(?TXGidjf=GOVM1! za}<9^f(lmQf;WzfbaNJBjuQbKt%rMqQoCXab|jsnvAyM#t5MTq*4m!?y`X{ z0zN=lLjK5yt|7YzvRq|j4q%;=tUW-bCRFU9IM>p?js<7g{@j132s@JYVuqqNoxiIq zvj_SpMJj~Wq8(>P^dCwv|C)#GCGS}~6V#Q2c$AZQ!qG1TdtjV3hDlR$E7OZb2yfDb zoEEf=b@|U)+WPc<@>$czOmw7bWTux7$BV$Ky^$Aa8PS}CK=R7giQ2|&A=#WXoM19k z@f)i_1il9+@YS(OmEO;^2o6$XD0Z1B0*+c&`ny@F*%l#`(^abmE8Y%QY3o?ixO&ZY~b+;O3JIR4s^6p3cf52FQs!G3FQR!Wy4*Iq}*C?zubLHqbH(d6=Sz z3q}YynT>c(31br|^pR*f)J|3i9{IbHyky8skelY`ONf0UOV&BDYm#i;9a-l?^MbXc zfj8Vsp48fIuufAGg7Joqw@8i>`#y7m2@PwO=|sxldyK2Xv2#-*9V?PFv~u{zhLo~y zSk&TyMRxzcD0urxk}Dt#-3>T+2$i5qo1co*0H|uvB}w5hibyUtZE$SSellVM@V4Sc zwC5c)1j950{cNW*N&Wk7?2{}2p(TK)o8Q%ILGRC${+jcCotIeve2G-IV3@=5=J5js&jXxy>I8w^MpVJ?7(A!sQNrf$IXRRU6x^)iP~m{6K1)8k$d zQqjydJS3hEw%U@$v%sT3G*9bPiM_AG!8h&*pA|_*7FCzyKy|Ci!2XMu;S_dVASTvj$Ys&+y4UeEm0) zZa=|tC!p?8@+boHic^xse9eN{9JV*Gl#ZZBzfWb!VlUys(em5fE)bi@TA=RDkNNN>2)dhUpxi6RZJD! zbT)E7H;~3jURBJ;woH^7rQnS&S+cScDi=-5{+5k-M)KX)Et2y&WM=;>_?iNU;SjI( zfiMO}<|8Hczd9;4G~~v%b9jTm7Kl$!;aT>-Kbm47BAI7^1($G5<0s&wg^JF0{|->c z&q=2ERVr%Cjsz65runJNVV_MM?fhW-#RGWb1dU0Y(ftD6`d=68oFRF??$@+XkeLIp z4;(?goBn7AJ|h3m5wO~5-_+#I@NK>llbSjUY_=-`Hm7g`xdGa_kW@YawhNg;4(?ky;Hr z@3GDUB>Pq$jM@J00@{b{e>InNp8C_GiIvt;Z{c+w0GIAMj}y#V!_$GsfHHZ`5u z#ZYJ+@N#4}xsriEJh>8aAp?BAkAC2#bPRZzBB0ZW`-527^W)dCL2ih~e+wqLrI$Ja zua4*pzcpMgs7waZGy{$>d8d-)xwo`Y(OPf?cei8D)0)VqV#ZYnsw~{4Zu1l{NeTKW ztv`JUK5ql~mr1{bFD35XgXEgvw=$h)0b|nY2|z`G)}AFBqLgq^Ev!N=7A&5R8duiB zn(NMF_eK)EA74L%^qm*=vxjF#DHr%9PCD&MoCS}J5l_AKoKa=Uu0HFD6OfZ#iL)RI z9pdl1TSJ~ZO;7Q|pX!AVgfh~^>JXu4z_$=Pdf>X?(F&LWC6I_)~5e^eMK$I#iBDBkBwO7YWRR(o20e7oDC#} z>h-m5k^Jo-yH4H(W2^p~b*}2xyiRLR&JKnmsS1yVr7dab96cB&^?ckc$Q5=b<_V)# zvsK3A^V$Af+`(fV9%fdmYLgigKit!hXLMn<*xjYI?4@HbRs6FL6iR^QCuZ5jjQF`dAM z`r{GzPJ@159Txh8HB08eW{O1RgIGj4_a!Gpt}qh=!{&p=Nk+qjsL|BH5&Y@Q8c7>c zMFq|$NM7|f(X(GaQB0eAJA;SU&55C#_i=r_~ExwWInnERR42#>_vph&90fv z{TnHjFj{VP~3BU8d@wT0pHLPVQah@{H-vr)}HIKUqg7jzVP(AyR zs13Z7mtkG)JGkJ3QG2~^(tyMU^CW-FVQ$}5dXkVQCf)`bhBmePrMrd;?Rj&sr?5EG zk&#}Z4%6e4E66|D*Fx~u;sw;Lfr8q1C*pZ}D`fiUuu))!5CqN9^rK!bq@1(vmlB}nW86c+vL~Prb0i{AI;zmj8E8Cyf4GpFX z+LJO>bl90K4Y%Tp>X?YYyN1*o)iL3xb+nk+CKwpiSMGi^XllLc0~>|Cs#2OC7~Hh9 z@BqLI`m>UHsx0n?3H=qh`pR*C_rSyeBZZyW-equ0gClNfHC-S~qB^G2i56|t8q&%H ziTbp*)()*DLRg(1TD?qHc?t$T(osJfe8yp6-0_Rwsm;gF^nW$7( zRZ*HaR8`&lm)6;j0CWg1cG)VXeGW}nm6o`57BI$eg{MK5tX+*{)2{66S@7aG2moB z6^-I9J}5o&>kucTqFh~W=x&%WzQ#$MZO43!cGH$hWW&}~Wh62Lh4QZ~>TW$uNN`=^ z>Dhc5rCMH85_o2EFhVy3OS0DDb#YJW(+tehhHR{&diWwan~b=|^#j@$O;gu9&totO zi3ApQq`%Asl=CPpr&@C1p8thoD{wgWtpR)r&tHKk4XK+&`+;$%zW7CL14gO{?q$GR z+i3lrz-pnUndJ1^x}f)Oi2~-;ugKWvDJtCDEps*vdZAf&SdcR6(KM2{(lhK(C=xg2 zG1grg+-F+#?4e8~bjRkMqbMLvW8)hfTXkyU|FHwh#r*%Z1Ix|C@_*4Z^x9*|I-Q?R zXy2hi_j^DB;XxCLwUBTX;+49`=h<_~g$!y9%@dnl)Q-5N-44L8w%DgdG1Cm`CN%E22t|&J7EbaY%5A%Cs6!(2%^bAUm1yy0z|RT#pG`mQQ9|5a+56w{WBE_QzWC9T(A!A-fekHfk! zTMP>^pVcyB53&s$UJ-Y**fdCkGrdv?h!0Ys@HC%#rxzJ>ZYZ<>0xb3}7DCf7K(w{h z^nE+aY?+aGqkmB(W|0C7`cj2L-DTrz9Y_MayG>TO7dC!=eK1xhRvmp$P|i@@OiUW| zdb3SnFABWo8GP68Nc6rIde69j|6M2ZBlt%W;F)ywLV2~KZyyRE+>x845i4_LlrE7j zPJ6t!#7v^0U~gBumO?3@nC)jsT8Q14bx+1F zkvyogV{#D1BlT1}Nj*+2p zk#plRUe&5wn=N*GhL+i#&Xr&&53wOdZA{q(Lb_|>cgY9 zT*DlXSSwJsu)M3Pr@=b@LiuBCd7+V1gl+g!-~N+X$-)j@CN^G*p)DGRTi8QRitGx% z%*;y(CgRC$et<$AdP?;WDNKt?y%>a4G-_ljknAI*qf{}AE~>d2<_;`NN}SfAR}?n6 zK|A4AHTXUfgf~Ymb}Hr5`YImXk)k}C8^Ko*ma9G*jMa-oq`=I{xR>1gneX(>QGar! zG#U|ZtBS$W4A!Z{#c6K(JW#VHlv@Q6zkbbN9>rq9I&Qii+mM^d0+#Jk7n794CkXd) z;{0a@19CSajitGUKiE8;QWQ2R7Do8Cy27NA$8RB9k5&(8KY3e^G$x<3s)C&SsAaGE zMSNDTku8+>Aq|whI&4^J#=zg(Gu1O0)>M6cr!&<91-P(GOy`$VPVDHnb~mAb8OBA(FS|1{e_RsYdS@4dOID8>qPBNpyLD4g*uS8ByWo}u%}F6h;V$4kh!DE zdSQ;@ji#Uj*^A2Ldc1F2;!Bv9nRK%U`O*&f6WO~`0}Uj8Z#>3hvl$n71q{29nC7!_ zj|tDB1bg}ThLLUFJXE#)9{XGsBaXe?JV^&#FeT;;00a}aDjiD==512R;iFEzIR*Z+ z(Ibq#O7;S)mrfhKKhBlnYfa3nR$|`p$@p!*B=CFTUYlwg=SWURems`8bxc#sFDwy% ze=b({jZHSL^raqP5fwRHzjGf&?KCE~bMY{t0iLliEisyKMeSE0w8am$q3+q$eoYv# z{ma+wz8SQ7ceBLjwry`3^p$6%yTnHmX+x23d`G=z+jC3uP1tr{^1*N1V#+<|pJN)y zpxv=2oq0GsjdQ;v0irTTj0XGHOOSz*XLNw>sEY7?ZTO zOsN`-Zd%c!jscK?nU)s4_-Idb)g!UaZCML<*oiI{RyBQ8COje8K(m?-1D4Ly>ohrr?9po|nwc^c1?GyNxW}Si z+lDXCf8_`R*Y!@O1cKcq078qu#|zUc@ZggnRCWIrkV05oxL{8{^VhvI+C+*7Y2?Wa+O6r>!aVDZN@K%vhx` zWo`F2{ZenR_;I(RJD~Q!8+mE~qnhr`H8jcJg`K<2Rn(y`cR|dsNW)M;-*^OJJAmIO zq92m6KerF)THb1?U}Rj^Z&OFfjIwshZ<&O>l#0(O`-qk#4b(8o^|E+Gc>il*U?lwK z;||ruo^+p5B~KIt%pnQ&UdmvV)w7tfvd_MQ zFF;3DQDRZ-}ZEi%o*cFO;P?iq?AbI$SN1Y z-!WuLt;A@I6j^ygLrt0)CrGE_J`<29lF?cU6oL5#)Jm~yIr#lP1F6;4q)H>aeI93R zeQQtAe=K;7epG$3yJ7g-g!GJydy_KxR%rHZ+G;gE`Nws>$>+Z9%$09%W=fZnzqpFa z4ojQFQB$bILq*;3FrQr_Xge9hcq)H-AsGW7r&%+zA&@i*KS(vQqzZZLI(Pl|?)J{b zJ&1ViG0k5oV7})Vvl1WOu%srxd!*)9H?A8xN2=C*5^*~<&LmE=c2$F=c#|Z3%e?GD zZOT^TyPcsW8}YJsXE11lFeOvtB#s$YGg=sAQg{_mIfV}SHVZ)AN{HK1q@zg@d|}J-zPHIl}+^k)4iywuozK!GVzuf@PZD zWDDZjTW21Pua`?XCoP|G#G%$Q*L~QaF>GeNT2591`$}PVn(@^+FdC&gd{03e@l3 zTH+*#f?YD5VK)tt!CD&LUf_nAKA0F4F#SnZo1LL0UiKHNBh`l}UujzTxvd-`((%-0 z`W`w>gAS^3D9G)@TWHfSv|EkXs7`XWDkUeIfGL8t5zJZ(z4g-RJPQ$1*%kxo?kX^M zUH=|AtjEthgB!i`7r07Wr~MRqq_UcENeS}Ol8s}UE`g>z`fSZiUAE(2;Y!wJ$T?|r z*Rn-G)sT@}aso$a;{IP7*{mA2`eCdf(V*otU5qmHhC7Jpl-C&RAfyg&2~JC!?Twhdm!Q9ySnVoob7zBm z`=mLLjl;Ws$~qSm(la!Nqo%dsf3=ac`sNP)X0FjxA~r0ZTn{h? z4O(!4k!$tE8Pj8%)+)y97EpxO7`+S-mLo2!S=NrKq<|JJI?tTehM0`ORjsgPu#uB7 zUdmTCqh%~QETQ4B;JM-VWm(iW%%61L6b3hSlz7* zg4__3PvA_p{B8I)JhZJ?c7M8`sWX{fA5FbTZ5t~iVozyXVRO8K8Z#`JL&EWM*iP70 zWL8MdpT5=Mi)Q8bFs|yT8urqUI_-9$EB?(NR1-=Xqd(w?Xydkm!{|V?^J8>Cgh5B$ z&4;5KzZ86CrQZengH4|N@I52H96-MguRD~^zcDMheo=VOIFo2VX?z2Z!l^9znYxvDJKKkv~Oh5h$LOAFVVNQ2bE$Y|>}#jerquCe%}PS<=OOf!rFJ z8I!(6$653BHMYW7#u>efb{(-7KdI1`l_nry89BQ%wkDTn%U9Q3Y>QCx=YmHyVyyXEZuMOB>M5_(SF+(UJ&jcabV zyamg`JFUnjC&AL=pW5N8)*b5VvsGNz<*P8!qPK~Zszz+_A1-XSMZ!@VNMS38GNn!I zZI}7g-Yf9*>chkxZ|c_LefUf+`(AQAq+y3{^@qeK!} z9>H3mVh*E9l5VWi%+z_i95H^V5fDoB&*+e+971%f*Qp>0LFiFZ6&a& zPXV9(@u_O0mlC~`*2H#f{VLiSrkoa$Hfd`eL3D7!^ug+2tc+p(9stCl#%HV=b14^v zUZg`*7nZ7{_%gFtA4#7YkD}Vx(oINOo?Nc|MIYQ;y}ukf2q!-(ES^O z%aV&-{YTK^QpX@{-6lt95XVR$Om}Xe_~)Klt^Om5?yo@mh6=4(UvlrIvIYH%_N8Jj zkzN0{o0M6CvBkh;S-?2GgFo{FD5e}>Jz`H>u9+YB^|8~2KNM_Qb)2^PgnKkJN*$n! zSn5)E{FglFjD;R9*u_f-;XTR9ZS8L1Db5U&6=PwzWD3Ts>1~9&L3DT%oivL0wX3(N|5RXjy_|ZkAm9Sr>-zXanKuYCv zl&>8p`|+4_68ZETra{iUx*v~JDK21FG;BBrd{G7xjm_)6I}X29*dA)XK<6GiERPL7 zgDm76CM>sSChZnY%-A@O5e@4h;`B_bqbZ{4T97m(&?HJGE%zJyQ|E_9|HX=Xc;d+6 zbDv6^vAK76kFEX&+k%y6U896scalJyvi4zFL!?dC+kt&N%+AJF*JcZ0cg-3cIWA7r z#cJL?^+p;7IhM&G1W#vh^Mp6-SmPcADVfaCF9P)Jp0V@9{mMNddm_()4qG9t3j1sA zf?6c;^9p&fkJ#cYf%PQgnK0Fb1Ruwzqr&qst%?}zy?;_obvXUc4+8f9f1}`HXX20} z0+v0Et*a^(ftBuS>OUvy_W*r^>y71KvoU|6I_Vvn=is_sdaq(|JqywWth}nzw=;6G zTC&a0Ii7{(;Y_f(WQPrhL((h~U^byc1&0E4z@C^I_{C)z?ch{J?C*;(D1o3sCLV+IBrE0`u8c_YrV0s*g(YX?j6AK?UB}R$?GaAh; zCMEsCa+9LbH#Krp!~|6no!M+2z)-7ZIN@)cFIfrZ2KUQ;=d$OF7z`}SC)_{4{3nTF z-Fg^w88uF{$0_E&Eff`~ma1jv78De&W|Bf_83KfTR8%|cX+6yc(UYAgc6TGK_p?=> zX+3|;fZm(RI0p}$-(MjH0H@XPhey2LS3)zj*1Gj#-Y1sqj!WTr23(|8LQ*nRiygii`JWv z)#U-ko2asY@V=$7_*dEbhuu`A9swjd_>QwVyKh?8f@xkECD{@Ev5-+vOUQ6lXU4FW z?zSztIi7wu@>jG%ni|=kV@Dr6J9X0CQwl#wf)ok+0C3qr?Rcx|<^e+!Suh7N70KkO zj7-mI>DhEIv;9U`4hIgH0=j@%nzrfz(t`9r)j+@qv@d}{eUe0>cyOmtddt#))Q8V~ z6M216YCK*LzpM^R;gR`5K;S~^rFul5^NfEJxz3O-H5rGL4(f*EI5U5=k127NlDKHi zP{xfgw03X{zFY{r(Vp+#7!w+cCk8EABG=2Q4E=a@N;H+UdkzwpSQJn@2NIDJ?D@tPPUb?!M!?3iVszQ|E>HUzGYME) zGz!qZF*+QZ6^C>nVI3PKKz1Y?`fwgwsc2z2SnnkNWMi*_h&BaLa%8bWorWMbS{>R_ zl?Q*lM<={~uFPd9J?Vr*nCYGgV_<0%FwoHAxo2VGi8JzN(d>zYb*)rkOrN80C>2%8 zmafC-aEbw)z+S%ZbZvyOctq|VuAO`DH3TT*Vmz$l_TAfiBW%DnI&(lhR^`PDczNi8 z;Z7Z09XY{Z!2M6e=|%>2A2~&Q!Y&8`yNzok0UkM2Im}S6` zq)P1^_@6&@#$tEr{tjOTZG?3Rfkb=`XaXzZjDz<@oofQCTpj4)V#`+FeSCMuVm{w% z0@D!dNc6I1tIY4F?U#P+p91DP;(hqo>xq(|j_LS^Bw+ zO5M$Uq!P?@?VRL}fZZi98?~`yAB0lOws)W$)*b{d@0n)u$D<{raBaiXmVHtM-HjJ~ zPr(F>#Tq~@mD=xzmRZKYNF`k@Xid=?R3#lF8-w-TXcS#-Hs_k;FuIn$zFl8I2Fc`z zb1pkuGts%6A91#urnNA@PSDNGpyj;4ADCvDk><{)IB%ExFs$9H-uNa#uG@GVx$r}Q z`n~x`0e|aiUXw)_1s2YtyaVwSN(B-vD+vnZ;lYBCE-HcGXT*T*(sJQLtfg{TqMX5S zKi}$jZ7l4MQ6=@z(=(gLOYfv&O6HChBQ3Y8D6$8e01dh5l5z(qG9EXx4G-*PJ*_v% zl5(@qVx?z|0J5HlStbiVb8k@07xhb_%En{X#e|BM4rA7V7?P>O5nGacVRL5-j=ecY zqrbpfiDz=gCbhzck9;&X8wLNDxYM#-<4FX!7`SeA8wMf*RGYRFt+7f0XpQ=2q`yRY zTXiV#GiEtZg#9_}s0v=fl`u|TnwW?}PNG%QO*<+g!=G@E)LpxZ^3>J#UtyZFi+H!Q? z=JKexrzM#?0ae>ZD!)_6{#99YSa5RKAm>iq%<)dX#$IW@^JnR=ZSM_dmlIJA|1Y6M z8>of#qQ|PU7@0FSefuosNNH_@C3xdWyr8bc;s;7H=t?9VC|I23Ux5wH!NjrflQfKx zHAV5lN@_tLQR~p8MTsNNpS1OWFDp?((_6Ps;ZsJ0@C<_;;hx*0%nVD2D#GI{m%#5WJ^lXAV*EGhk{ zA3N3@l% zn{d@=-`^Z_5Y`jjOA{+(5O-V7hd)uO3z@(0W5 zw552O)1k-VSW{O6*p%R8j97q`H5s3ADozBL0+|FwQJ1JIL?X7d;o^`KWEQ!EG9Zxq zA1`wv4yR0X@o_Mjgz_30Gw_8+BuJikg=4obo}1P z4eO)F4dB5V37nm{4kmCplbCxEe3{o6^T%&jt4)|GaFp&bls(UHl}N7fK8UPO=Qb{(UxjrF#^rB7;Oj~iZG#ZqBazZ9 zR0@96n@6Gkt?dQTg8%w7kqRS)Y#)Kqc|=8Snm=U-f61|0 z=JEMVvASP0|ABM$)3_cQk=F=DZBaR1%)`sR}rUtRUBO zY&PFxh}-%umc487&XT=LY5taD8J-Ne*JBxuO6+~7i8KCr=r18xu|F8yg^3Wm96~c- zmMeQUZ-|d;erN{_I24D?mQ0{AsP`PBrzRR_W|h}c*VT_QO&-!%f8EJmBsQQv=pD93 zEF@Xxo=5Dw-N*!Oybh$kSa@6Q%6;^bYsK$PVj5C1YC_bF6NDuA;qaE>B}4Vb@m7Js zXB=-mIul{c(ax3?ABTLb88vDsT{u+N9d~f-fy&v-Csy$g$T}dAG)h8mze!J$NGKYS zQ$B3t-lKBH=a5V|sN;^@1Wp^3BOOutl@FmU6GqaEVl0@z@OHXp|Ld=OHB_9HSVLQCa9QXdB=y?~bKo(;DHt z;@5a=`w|IRy|ujJvDoatHmuRxi$31tOI4D!MQO>?C%MOCk&2a_Df6pad%K!ivYuYo za=UDotF8dFZ(7$#>pq<$&;MsEHuEvEx#8$$u40tE8kMW1zv5+WT(!xIhO#@y)NVzw z=n6iSKylI&S_s5YgIV!zoxc>fePZy~@8s;@LH z3khU5K&Dx~mr~lw`;W13^e`FD-pjv6r`u2 z@c*?*&i4PcNzTN~^nY)XkJpfKJ9n*Wbp5nMe1X6|B@*J1D(zpAn4+eRuNj3F#rViAETR=OQO4?R`I~ z?fuv3M|;2A`}vhx`+oKF{@dCq#Bf{ocH*Q}u%Y2T?B8(j*Oyt7@5iTK7R!-?E0sg< z_rE6tKi9nB?@7P!uQ;Gm`D1lw=39;&w{YlGEutDV%K2G2|4S;*CP2aQ54|ik`t9mf zlIFhj!XLd`RE50j7O|36XZ3z|nN628={!j5ZslYS_=eSCk}-9xqm9po>W6Y~p|O&( zMC=px_G}{4(i9~0dy6ULhBTB5D$|>7;zPq^PWT3f8_k>|rFKQvm7gdg^6Kr$={%k2 zhzQzQMJxq4eu=-B8J$SdHb}sgOqnYPC|a0TvUtf+k>zFqNNa&Ncd4 zHoq=>W$};^vNw|_Z-DIRNMmE&6&TPbR@v|e7d-k0g>>8FRJiMLGSOibIWjA_kYAVR zm^>v$yW7mp+?+E-g;aAR66CqCMNlMs-OP@nq03BVdivODk9>TE<94}b`kbX)R|1CT zSJ?NP%w+P#&X2o`(xj9$*G z=$DD3E?fq|CVClxS%u1@e}ia~lSx;ZhIUCgI(}<&s)|aw}IJ>OGK*Iv{~@@>!-bIzTgfjL%8-k<55_btw#rVoZN*u5-!YLaE}KY zE9RO5+P?1sj`Dgxc*7Z8Kv^3{&MDEp=#yBX4YKxT9>g|kZXG)d!v4{)C&`IIVj+38 z9>U$@VUH-|I(pZ9GsF}(Om}-72Fu-pppLErtfZNEA%x0)vcPk-MOWsyKrd3NCQ#+Qk5liICA zE&x80wh0M}AJ?pedA*HzU3rirP)|XlkFiR4kGEUP3l}++6h5&Odtnz&?O|tD)>PP^ zav(t`T(wAE9R{uwUgnwbqd=NjVnLM=Wt(dvuIHL=7a5R`l~DyQFg>W{m6m+>svAOa z)vYkWV?6Wxj4fUFmlo}hOk$E?{nBqfjvv*pIpZi)_n=sw420gh`Ee4-Rz}$?g6*O(s>Lf14qkmxGO)HrazV>dXI`5+O$}o^yH3j1$cHY|cL-j$F?_O61&9^`hcmWjWixaFqjKiXx?UD`XKD zXp;~(c{x`l0Y{&{USq&A8Nl+zgPpgdhL(c zb3ut08rT=Ck^ZQa9Ye{vIO8(?3fa?egDiNX`7y4Z(#J*6^{z5y24L4eQJ||+h{D!Z zsYYQ7r8Cjd898fGfDmO!gTbwB^cr>38Q)#e6{2}I6!D#K0fj)+ZAGQ`n~~YKw}w9~ zSp@r)`K-5#a(Mx_@rL2*u6wE5SXaWo-Jwn|HU@6zf{+u-FTawO^C{UKO|v+`_txk# zAZN6|GJtV}ray4V{gXdi;WtcDtnwXI-YqJHXkj{RW=9GqN-URYojh(!P>v z;lGMAVY%Qyq3Ns_Tev+RM0Dw-(CTJ#DXWA91!`qGwL%_hiH>Q$LM7jnkOCwxJSq5= zBOv!fHvT~lPXnIwq(CyD8{TDb+T&#g?BeZbjSRrG`*v^P?~1vWeHF)hb~p#3rb89S z!%NGay^oWg;}6+dEbLW`QHzpQnOM%N1r9x(gL(}2BH`$hEZQ%oFK>=ZrCOx!0Fpl$ z;{uG02Z*pr`P+$O?k_z1NUYp=FHDjS1$CazP!+Sg=$B0>>rjxmGyU4c!Ks0ve-h9> z3#lzNaXok$-*%fJAL=-CpIw>e3`tfbN()Q#=Vhzp3LWV+Y#uoxFV&WGt8err=j&Al ziyhtmIZ@lNo-MKhLJQ_YS&{^vRR0jP8T6&dOa%LXIb(0Vc&uD7HPIu=ij->A4$f_B zR;{oI>YH+JN8MbTpKNVq@I?}#e>P@}pBUuMd@uhJIGGgq7^M@3OsqH8S^6isxBv;` zU2ZFT!Kh$c3p0~Lxw-D#$(CBLT_R9#=!+vW4(pzk_>KQqj}gXnb7q^e&gUZ%+^JX$ z7eKKYEsT{vMy!`pa)Io4cmXF&ND8OZbqfi$F670~;J9=47Y6Lj8t`gzh^m?yD}g$8 zDsJ?5_Cw6@)TU<9V}V;iQk`3a-z|JBoM;);axlT-PjqvcOf+8d2n8GJl2SQqG7US! zgtt7x>%}0n)BtXnM23^>!wM@tuGxq*a_Ip)SJMMF5Ts8fi6EO$8DG^rOj}#-Sg6uh z6Fe`E&WZ&-ufrG}ekatlQaFRQ?(*e6LjQ#qZ0&W5z?m! zDE4FIl(e|HpUwaxhaG3DA3a8Qnj|Zxl~)V@8#Z6EUChd7ZQbdfj$vL}^ypl9xQ+%I zC%;dF@}EhvW<~*NVnP{Cz*LK7FM>{nJYOqKTCkB0 zJ=|Q2M#(CzWPgrL2A{BkM&>G3^^**_^>l-3VGU5{H^I1aWT}1Kl3Apuk!?KJ7GGM2 z_Srp7634Sktp=T&%D?V)o|XDa_ZWG_F4KJjR7qbe^yOXcu%1)NZ`c}H*R7kNqR&xRrEVY;Ln-`VjjR=BkK#hN zsawhB^NbnE&{M3gm8Q7HOIxUcTh)haVD77INs190Macp-rA|5GYf`=ts(e+!ij! zaGQ#Z$=+ajVc#**Ff;do=<^qMQ7SW$$afmKvw;zKH83w#aOD!9!`emi8>9#s{CBsG zI%egafqM;L)2Nn{ZQ8)dGOKq#we*FSpv>}vn^&>sy&2%>9le%)+8~lE@TeB(ly`Io z>y+LZ-D~E~&Pju+RQ}!^Su*ZEgVn-g!mKp!mX5tz1>0}$k56#lTJ(TN=(6#)^A#U7 zoQC!~&zbzTshZL_+}kw!QM4(%XFooOIyNHITE^h%0luD_Usr#)=VXe>!e&D6>4B$p zGIg{EcZ$U<-3Vk`dRWXPg&p+Ka`jiAR?Kob@1Dacdx4?0gq6E z@j&W?XK7r}@qvXPzGG-?(&HGP!6SV?{TEp(>k&OK`$&P6b&Sa35>{Ag1+%_Y7S7-t zFFOH2g}U_?cExAwnANP(5f2@p{FyHe=Rhu2`5=>mpCayCg;R6VtV%xYCsuu#EPqSv zYpdHZECG(~U;CS*og7z1!}ADGA{yTcbZtw9(H@Ajx2W#Xn=(9P(=b%#@aWC+CFb|d zPnL*pKxncw^kIo^#8%8PQ;Wu3TqEUABV$t#9K@8fUZ`2CWP7=jd%t&&J z#&}t!!%S>)(Z8e@o3M~o+35cftNo8y?SI4$1H?A{BNhW7c3~eu#zzwOCTV|IoPXl- zioMPs2q65i!?vaL6Oq!-xPx@~D{?FA73uI7*ao3pGGtFP@_*DS1JsgdOJte-h?x>> zD6}W&Pb7WX*y-?u6c@kot<9FWt6+Y$b==rhOt^(Ou zV>{=(6ntEh8G z_i;3d5vB52H|1XdOloY^jsS+LN zOi7cBiBJ9#8DLKSh4oY_QZ$4{nFJ*jxI^jCie%$gR*PK1t@so<#Dovz+X3wiJWEE3 zvawSoVzl3C3fk6SL^f%UTbxxJZo*rsEWC?MIx>cHfS=W$HS>4ed#slF-i=KZoAPi_ zf!$g1x~58W&q*9A6-}j&6`5ydvxD2}ER)2;n#NyMY9FG+O#L9*8~flBj%HRP=pTEf z73}v+m0)V(A}=q{@C*?tO6i^;?W#ald8*7V2Xjwo;Hiy)-f*Nc!^DPp9TJ>iP)Uhh ziU_CnzMU`!WadPi$YKh9cqugxik{R&oJLmZrN`%D>Nh}UDn9`-Q_;O^h0Sbq6UYbP zIVCs4UueS5s1BL>N^hWNZA`*JO|q}2x;f{?d(ly1_N&jI$g{Y*UEZykruaG;i%c;@VwxRJV2-LY?#BZRvNf>MTLPuoHsy$*yA1FpA+vjc^lu# zp~BlGs-ViYJT)2p+R&sL=u??Qg_)0{oD>Cp8cZMl8e$%DmN4x43mhW$91@kxR22HP zO}9Q3_yS$^tG-Ge3ze zvVhgH(W4q#>QjJ_RjXuAL8=k5eKvBFkXQVx`$?IN@6O9bC+S5CfHGTu zl1_jAg>;sYlI_dwNjhU|J9C^Qsv%w$MIR@dTtFnV!WYA?1vW5>AX=G#aEZ#)Pv698 zLOvZdm%=gatgwNN_{Nj>d8iaYdQb$%pY7>^>((5)@LMQsynmy&`Y14KqwK_eeOq%K z^>ZM+*=UM?$0&0B#Yo%>bXMiszs~B7Wid#irp!y8PEncDEyW8jWj#8;EjFL<#yylQ z?K)FQ6)$0=a$c3?im?UfXs*q4#><*X8Js&{Ia;bCNTn{@UoDq?ng6tsNRM=03@Gp{U;>l@;R04gVqvgac6u~Gy$J;e)EmXVY#elW z%$@fH$=y`A=vY4l?()M#ME2&KNnph#k5)~ymw6^naY<C#2$V zc=h8EEOU=MZXZ{0`Ka@uS>5q0bZm8YrWa4a)y zB#q0OCMUpeG|YY*Ou?0;ZL!SWm2v}T`@9kFGeth|$;~uONMxdiW*;48czcA4V!v#% zbRlI(FuZsh>nSP(`qUjX!@#H#6j0sVCr6bDlC8=R))IiXx#}Pz;ja~j8FO+p8NU)M zX)<;sp{TIT!70!|^DEUs#6Iz=Ork2m@aB6D@me1>f@=U;(3V&m*3Ooezk~z2Xp^le zpo`jIyPN=ek1zKK*UN2EH$NWRBgr1nQ}fI~PZgSEnK3{>`C6$hGc&QgmabKrIGR3x zh@D|!t$(kht~$rU!q#)wbOV79Yk2^5RHTv8GqRMxJt-a6Fj)T1Ini`ZYUewM{E>`t z@8D8Oe*nd51Hgu+T&zqwyYK?w2Ec|ZkDsMh|FB`nY=E=*P~dQ+S{U7n2Lvaw=M}Rx7}~jq;QozM1)i@eZLBUG&avNiZW6MsobS{O z9FRk+-NKIP3yi2lc!?MioNV-QfP}?E0ZT)Z@F=lz3X!1E#zTx(t>Qe7QH|gnu#t-< z1rW?B1VFGj0Ktam=`aZpB5Kr9C4l9-MJ5Qf0nv*7e-yV>5!}#+A@{Nb`|pkxo0N%B zqBy_iH6+R4v%JXNzSYD_76YnVqU1D7=PH|_sh1ptc1Jtbr$oX*UH%uX_8{J7k~FFHvF*qd61;P*oU83dIj{%rjun>%itU^aA@Tg z-HoLU|GxvuxW~wf2S6{oQQ!EID*(Nkd`s)%rLOcg^lKh;*u;gxVOEkD1lSOt(R|6T z6lA~U{5k&RUaFVEmsQ*)lD=1fkA+}%l3$@g<}znOLlK2Ie0@%_tW|Vk|C6^(j4Jo++ zz@NdU|BWr+&m~$DGqP}GW`w|c+Uy2cPn%gB<0dtr+5r^+!9O9-#xA*T0sWS+utR#e zEY8ne#pY~p_#d@x{vOf5-`GoT&4JL~Vnbq0PrV1^tE55xPeLy2*q@SybSoXpzxl1XKUox@C0mG`Ox9+PseF(mTMONLxbRdCLIgmyM(ugc^bt(|HigCHo zWJR!V$YDvTbq9c~aNk0)8UW^S2q53#cnI{g27ozCammD{u=Y=0)cuneb^qkWzc+3K zym9hN;Ejj;_l-~J1MkM=RZ3B$tmv2$B_HzhQs$dt?O6S`0COGf4H|L$U`%5 z8uvR}IMu~4eA|^ldsH{2ms71v{I9$G8Gf__YJ7Kw4BX_brKw{dhq^L}Pq_&E*p@d< zGTKs$EN#c`EgVC^k_T2M+T`%d7@_Q~M%>#N<4t-P$mnH61Pfs%$Xb_~Fni>FWT)~( z8h0;t)F7soRvC(hvqu<6#}R$&8pfzJu&`qZMiOGEQVoHHH$HcS=ktfSyEACt!Xand zy0Iybo!y-?2|n_P_nOT>a~@s=!f*OPLg<+@FvKHoP3hR7@L3uJcOcC+o^^W7*ue*T zLU_)L%@;G8eTUu;LgD*j%m3R!-Piw@gE~%j7S8{DP&XNO$nCuS{J;GPWA^Y2MtgZ3 zbY`T2`F95w7OR?@mCm443_zJzR%M5yjeEe5egHvdEnjN?+`Jjw6Z&VTpQgw^k$YAp z#XZ)3{JL=Pe`XZ>I5qfqPZBs!|C{z#PePYC0~59D?gg-BRsT@<*aymhgSwadzZ@37cwelPsxB1+nZ2ae-&KHqDsHKCd*Pj8`G?^b1 zVjD#h+1{m(i9pO#<71dG9q#hEVYQMIp34%%g>{4&Tqyyn zTvzukn8|c!@=gqg=SHHPGiwVK#pm{`>wK z|A+aNToXn1*LANu$9V6P5Vj4+Vw1p4T;m<1F->~lBx7ET?M3HH!esh(O!d|$%IWfI zB*tD5^&>b&Dhm3pd|(gS8a>n>G@8mo01Ee(ASdUbg4|=Ww-_iNpb6QTw7_fxiTx1S z$aO4XdxNGHWsVMDVybo_OfXLrm0#kG|d98-d-;;^lDh z1A7?%Ejm-l73J_t%mJFXY24{9=dZJOC_Uu*H!<{)+T7@jW=fCbIteGGPHKuHJRyqm z@(Z0@HYu@rMY)$h9g9n&f*Vgb&T3KE(Mfr z>S$!bL0QkBt6J1SfzKqW-qAI{H=l-)HcutQEI*zE`@|akX>pXQE$r?KUSC{e{G{YD zjsRo9Nw%xm&I9|0(`e&AriabOf37C&#R-(FU6fzz^%e`XSo;#jJIhxoA)qBHMaruc*da2f^enexqJka5AfZl(FRt!W(Aws;} zNuRCV&Wi=x4HwD`TAT>lh@h?MMofmmx1Gz-hPBz%;j4&c!(feZiioRDH_ZBmYqQu~ zM*W=3Esde-nUlk^oHQlv;1K#*$E+eMG&Y3a-eQjAGhuy9*8W5+w4)ph)qMCQm&F+a z3ZE36%di&Svk@OOBe8CXhHQ|>K=_=x2A;>%Fin_0Ogf=+MEg6-rQg*VHN-@zbI>xd24m&spzQ-lYx2{g^7 zim)Eps;(dw8ptlx{v#~E0B*A`1^S#Qhx^o(4bt7{bW{!qK8`9b2rb^ zjkP$f9F7aD7ligHE-?MV2R-ZA_aK;=kDRIni+9R~;An(!;joaY{UM`-UZTU{SP>#`7_KG^38XmN zuFxk>x1-NnBY&d$PxA<6wq;1*D>lkS+ zO-i2fCj79;1vZtZhxAf?Sr^}nJ!Ifs<~sWYawI?R87Q@dLv>(V5Z`S zm8#&uoj$|~)za{Q5I32s%;Q9gIHtaYlIJVonnwMw@W}__Wzlx)O?Fnp0#^Qyll28r%tM8}$ckn$-YHdLo zlp+pv89>jmK4d_lhWMtACVnSC2nz~pI$RDa$cNEl0@yX~znt-03nEUCLVy-8rN_d` zY%z2+-3aP$9fXSLVZZ=^?6zRiINP(QfPd$Jc?SIT5K!+XEXYA#i8~5WKszyKs*8+{)b_2EEuj?^D zJTj-F`g_>BQY-@p8%*4fd57cHbMNn{&QMAEmw|o!=?fm$%PRcf+Dsn^38HM!c;1TYWW;#%C+>osZ8bE~Fa~!lVj>R3 zCvVQBwa0M$MyBBkA zY=dX28c`Dnu*nXvX@>}~*#Zr)S;Ks>9nb#jM*H18h{Z=8QVI#NA96kz_)LgkqH73hFzi2H)un_D*;=tSroPV8yXyWT{<#5M3I| z4Vp%9^I2|E9Ccu)U;3rCD2%^r0~CFWM?e3qUL@@M#U*}dM=y{+evWbFcLmO4kDvjC zmH!suH~JpN{rB}T+(5s3y*EjKoRhu%i z>oaaxzYt=lvTucKhQUg_Vk|{L3cN6|3-i;6_{lnaLttbjH=M8&ftlmMPGTZP!l_aJauNg&$#xEh@wSKs+$ZVcMxr5U z_o7$x>!Lgf|9EW{bTxF%ocN@;*1mOR8<5;=wQOm-YxYzF0zu@~*OjcXH`k*={Xr>cwGxkJ$dt0J zYZCOO!zK-{nZ#|er!5>$z7W?5QteR|Nu28F|3Neo{dobeV`M4@u=;?aAric8%Gl{d>Vh z+I84Rl;>NS4}zF2SQcSof+r5{9P8oJRf2x<{**2GO)$s2`REy6vM@v1QS-G8-Bi6u z=pQoNMnfMNMX=S}25i`VE<7Xpg^! zR^MY%K;$~eYwrVbW$N1sztLbsDMgLE&}%8q{=Ka{E6OpxvhO-WVA0cVwFiGD9+*2;v-o0IK#guqdrXSQh zN7Dly1yJn?Lprl-N%e|XKwxGyt5g2CmF!9u?Cli z0CQ!4wP}hoie=EL?(nk1Ai&xw-@VeiA@yr$j`k35JD$OXp=n<%H{{$u^_^1hmg}>_ z${NH8Uhwj_iSJ^orf1pbU&bqcu}seP`l>kQ`^TUfOAuv&o#ERpjq|Uq0uH`9i+ll| zT5V<;Gj$B(4tVb_uyos@MMJ?!ibwM03t-q*f8 z@)ixZX3`3ff5MFEDsr&3!d?+`qbn_?--C{HtZ~T#;(5Jn-4CaNfz|Zl_MpDlY`&N@ z`1zG2$No@OY<0p=7W(j-a=yY(5-HKn-LgPZUD1af@X!4sr=%7MdfxFL$+l#(XGsU^ zl2Z9hrt1-__03E}6@TP{Yl?&JvWzNMpZZa2H!jJ&F28#5OZ#DLx3`dOJy+HQrx{$v zbv+i?by>feIQUrN)@~%%f7NgPA5T}&s&qTGmSW4er|Q|=22^xgLk_?E3i`@*>>hzj zosQivzy3aAVfo7CH+C;t^&3ohAHDj{QK?6t5z-qLk)W2p8@s{7lS45v_J1dIMNED) zs~VJFe!pU8OFPaGjk-deYp&}_2KzQ9g&ySC=@FFpH$@n?f%(Qj(|TZ zH^?#jdyi&2wgp;kzmE{tv{odVyM@7>u}(9)cyCiidQrm|xbG~yU7f2LBi)z6Yr9lv zroBRE;V<0A>t=b2I&L!=kMv$PlYB!3CYJ}U`VT8dw5Q4WS!R_SCa`tI?k_jU1xHk#76xX`@dQX-IoX^T~XGNL9G*<#GSNF6uA894Ik(5$MSDFDgHWUJ~7a&A(c%@Eh=Z!eNT7Si;&g+z+J}?Oo`O= z>f8&S-oSD>x-gXlk^uZ3>DKeu-s%wl;JILT+4n*gEK1zWV?~jfvIx|4F}XknR(g49 z^>xR6NIBOzsUccQd3P54v@iZLhaXOK{yf&xu9_0#v+D{a1kbGaD?*cu?h-r4?6xfU zPoq1B|E_s4-Q%vmdjOYz$Y$Ig+t&Et{3tZbV54R(_>QI=>tGV*jrg#pEZau!_H-{u zkPWflY{(bjkiAu&OnI5sY$qVXr;m6Y*HjlEp!n!6ggEWx1jM@*JXV5dLW3w82uk+@ zIN6e)=7jN?*zWnmw=Rg0UA520uX9Kj2}HrQ4HxRIkj)EmtQS6-!lRDY8AEZlR+?ba z1F}7a^wK75>vIF>U*kn0?mxS$Q~!CGrYUeU&9^M)xe{vahypzio$GSy9jEl|Z7pUN zx_*jqM98g+LgAn#1XJFm5;Ry7u|8SIF#w4eNRS|#F_G0PgL@}4^RPl5@e)}gwToB! zu8RcDZei-LyI|$X*!z7Sk%aLcl@c;z!ZKsF#>%irIKWdMMaTLL6+yKUrfk@8UxHzl z(TS$1&?w_P=z;T~-YQQ*scY`gJ#mb8c6D`E_y%d4u0}^TdqFOIbHb4!P>IQ4j&8Vx+x_i6+925Z| z{P(M{!9Q7l=HyMrqt10>JI;)$Cdjzuz!dS1#Q(zcQ@&V~yRqc5z4W=%HP0P{E?SXV z7oNzqN8fmRdJ5+9WrFx2o>0b%1>gDAjJUYeAlIp}&@NuM994L5#krBC4<5ODx|QDZ zg6XNC&g~*}g%Nr@>Qhz;@xwzSNZ8{(agk9yRrtK|^ejCKWlH$Dq;EM20(xFd;+Rg= zWszhGFjBVEq1Tc=92~~ZQ6pA~g3p3D=|-Q9Rj%!D`RT(%gRb6qZ7b-|jA~XZjiW+Q zyQ?6XwQ-fd9hoZ?za}~|#sVH5Te^u;-x@_+-|wSCTjsFt_DrF($s7H3|DiLvCRg1v z37Rse2cbsu7k1f=O{2-(N@3Z}LG|sQ!!wx8op-0E-Audg!{-|XX$zgzI|ZFV-| zWA}hIvTOnklO!dG)^kCxt(@yePB2>@Yq@wG39H09KQHa3?*y$#S^o6`cO2N)Ndz!4 z-BMwl#iM+Hb9I7eyKnZR%FkZ%4v+kDa7zKRkTtb@-*Ea9_rNz@%24pIf7Jiy_Pwor z5jHM{J0VS;6tY1zG-U>K!d9jIwt<;|sCv%s5tbI(;f-dbCwEQgsbcDNIc1ad=Pg?IYgiBP(rw9$yXny)5GIF+|bw(_|jtK{MKS1 z!iG4pn2@Dn?NS+7f-NrAQdRB*KGRuZojf(X5);zzjjr;16@gFixcAMTq){le*F1W5 zJ40tzF0D;v$8^&c>>r0VS>L|}H25B#+9~lr=FB!mC}kvnrn;Po$b%ijm@hi*VJ)P5 zDs)RRa_aSeA?{@UU9tIF@b887*MT|9a))MIr^6jd1DmG9M6NSyOm^^vBpBGsk9{et z%86#++t7U}^%9V7r3gwc8+*)g-Tb~(A&%HjeZ<()2n;K5*G!m^`$9XuFEgBfGMJ>f zoL`si(r3BeD?4%A*So_F+%)bk-)tz+OGpKUB&;dTN+zinil6LQ!jdTrIcwdK#gX#j zkLl+tMu7;I<>Xo4fDMV!6;|7?K&t88_}ih~r9JBOCZRWK=cedA0MBv9+v~a6_2Gq{ zcYp?2d%b2!09dWw16He9Fr( zru}TR$l@Q*NHt`exlVzTHKguEp1p3VaCNKll62>NimTec#LC`DDog1>j{;3JEf$#H zjnbb=&mm7Y9_GNlUK_q3>v^sC*1bza53-W6<-doQwXy6xh|;niVf4@akyDV(j2?>Z zMYTcHjJo#rR%sLSei1TP@!p3%RK|;pS>eU-U4RRvQs*YBiRbmGwk9j=!Sj({B^dl3 zh<`GAOKC{CCmPzFv%RhDQ}wOiNvh63Mror?TJ~En2IB?}8})AOa5KLgB->W)uw3)G zlWCV;vi>oZ1a_&rX^9T+LN@dUL#(*C#F!V@Bo>LdXR>-=po>tuGdl<;t+=J90KF^rj-e8)=p&g^tVT%ZL_u z2m_KMttmi2gi8s0;gbO|j3GBa40Af%-~}_?w$}^&j!gh`toO4SWJKJmB!vqu$fFSiNw7eh$cdY-Zs#&+o7m0S5o9oA z#oVcda~(XW3`ri1omr4}VAg3#$P0`)!V_>*oD+4tNc^aV5`(A=PtE_poc>v)b6xBW3k|0b?lR0;9!P#Jy7dUH&o zL-N{W&BnL30~*7OJ?Ey!?UulusgrNj;Wy4rObv_<8G6ll^gZTHLfg(woOk8M9R2HO ze59pOj>EQCwj9wZgU1b$T(&gPDM19OVqV}D`t)mi)t=3U;f>}O$I7(_o-V$XUsE6P zW^-&R2B^P&P<`{W_mp$;0LM8TcnsAlxQ3YswV^5cmC_VMdrK!~9P#JWeQ7nS6|OC1 zRkn=LdjWgXn(@m2v~LSv2~DK<8d5iC^q+t5bxSycRaKMYjskLzV}@Z6s+i2}5{nuh z<`rW1XJ)pHl3DVPxO0m8mPrlfcOREeow?razbQqfN5XxA2AT*A>WIH)rb6 zTNuKmA`rpHHNmqQJClx_j71;GDRT>gMuzT_4G@kXqSBeDXXz_Mxl%R4_165Y zl^cn~7%m5sPZkD)JGg|DlGv;=AAw*r9c2iFrBo(^y&F})aVp0rTwEG?>70)B=hjVBJGDnf8h4j%j>`3UG0j>w+(LB5Oj32F# zU-l>_mR&EE+;KumTNGP9^Vu%7KKHDGQJ|-?^>K=ebH`YYsxYuUmjqY#hn1_vkdorJ zh}&D!uz?|_-!RjYei9Fxd|q3~3Otx|d?Ci*3cfIiq36TLa?EUtUQ zE0yPAmJO5&AK`UV_mj>G#zxV1;GmAjn+wb+tD&G34Y7retwPM>b%h^fvDBqUO(4P+ zKbhlXOpB+i@7yGTUu{h+CM+z!RE58Q%-gTjVFF)rB#S2*S*d>l)OfnP_Tba_yA-nT zpQ%zo$J8W>f^bszDZ>4QTxjh6x;jz)16*h>@_h$%fmh}1;l}vn0w?N()&fB4Kg!C; z5JkAL|E1i&>pl>*0xt@PTEX)_Q7isj-8B0vEf5fg?mjk`ovP2Tjh{T8-d@OLEjxGN zf`^uYYN)tb4_b^b2;U_}#y^ZHWC``YTfVFI|AG;yU*SeL&tMkC@Dmej(gyRdsSFza? z5*(y&ZKzWO?h$icXx$V9FTTo-Q?XA-|9Jg_?yR1voxq$h30)M=ULj37VBTrZWNDo< z(l(F5lg=|?L$sEdsgLp}&Nyk9EhT5`{WT15O*THuE(&Lvk|TVzJSkLkh^EK71_Xi5 z8G@9`(`A>GUvFg-HeV)UPhBxg(Po#HedO|^sIQGU(^@GN6#w!DVa9Y%3jw`p0tQaH z?`6&2hiB$FxS|Jfnl;Gria!M_S2MuSXdj+B`@I>Xq>6uu z-QC^dQr}ms!A;+yVfMpcPH5L{ZU0Vcb4Ag{VTSD3tOpam{O>Z?2CwddmEz--qpT8o zFb7n){`qQ8;o~C}%oU-3D#fK)jc9wF)dZgqn|ttbPf`g6e9NLP+eCQxOH1oM-?ma} zgm2Xk_r2F4%ncrX{t?wF6>M6cfoI5$-BblUhM^m4zkmWq*0kbz9B$?|&B$Jo71~zh zZ>)EYtx8q!Lb7XTwy;(-4eqzl_)aRJ)OccwM;C9oPqRZYg)b{O8H0>2soSB0p(%BM z0X1dy*VZPpFv*8+PRbU)4_5y|M1c`<{$D=J;9~lJ`7Glr6UYDGemd?5_$*^p;}97w z`~DM_K9(cnrP^RKYgb#Q)={kYJT1hB7YzID`8g7|L?Hu#BBM;IlcW=@I3#J@$FD&j z%NK|D`-_`J1OKe}Vl}us0SC2(`j15czxSiskD@VyKclq*cN%|w?cP}=w+S&3j@Y2P zzW&ZkeQf`j?0tVVYWn#7=pQY9WZ*_c2pCi!2>c!Q#r!+__wi!a@BN~d&>#1sN)D%R zoG5oDTMpysa;@+~dUqAW08GNn&NQI0-5*`1OZq|DqI7t&wbLOnv-VIeBAcG!cydz# zB32(s+8cVk{b;gFkU=Q)%2SJIQzqoq)=gC#27LW=7fhH#>1B%OV)m%VBha>pCh`1! z6-xW>3i%P=^2uk`kjrG6wDbECAE7Z~T1J`gf-^_p#G}>Dr3tgoB5jV5JdfS@>F^zh`XI-k z=O;2Y4olM5sHkVyaN2w*uLxag{URJ2)=oCHFySoEsw3#{D?BEDSzyVv{2OLNcLo|A z+mH}cI+d%z%si=eBCwWtk{h)J`7t8Pi8+*5M4<>;-o4PPEi-t3Ce$WpR{hY(i{StD z!{_}^cuvj)7OTMT?}UHr>5Bx44b&j`U+pZC-&@MT&7#{UrjT36i{8Uz5XR5?OHJ7q zF0>ZNPGA_xM!)GG4!EhRC#8I(xY?R1MTqGn{P|_Z%tuzmsfop58QV_W5TX)fq!d53 zEEp1KzBMA(9N=)0eZF04`r> zP1n=sT8}J@|?ju=I4tjubgPj08II>QP6+nCtbp#eR%v02_epnD|1Od5aLBs>#q zc=83MqJV1Dhs7p!_-oILvnF0C14j4_Idclr<4JP^*zT)Gaq-yxPS*S|#q<+04y6;$ z>gwy{xk%^INO8`lI)cpe!OUl39Xc9Ob5cFCLH zhMuJ4X)aZjV-qh4j{^CcK7IJw26EBo5tQuq z!XGMjTBDnrcQB$XM9)NA4d55d1*&%QVrG~<+zJ|x=*!N(R!!LwBFJ!Ks?FQd@@1Le)wW#i=_KB*a7`&0$SyYVo#BCQ+$%^9fEC!E?LjW{hw!Tl_Q%O`O2e zI{m@akZzxs&)9&s5z5NO3|P}_^e<1VO^Zaq+q(xjEy85^zvL9fual_YI|QG z#vKlC(CR^?4hzxPFN~HEhf&z)+V=U{snugoJ(>~{gpEE=Z7g}2rcW$#Opnkcd7MEU z41z}dld``_*iNP3jvXClNhzE?VPe9(je9vA?_uq@n|+Re{Q~1eV@)v8Lbwoe3=?o# zv+Lw0+9IYAH@b}KN$zzKwG}(1?HYe&a_H)WQm^!L%Ca7_*aecsnr5@ulpUq7jwfjp zK?ZO;oq9BMmx*J(q#dU%rVu+))BZl-#8kPYsr=UoW7`&-eWrZ(>l@M#Xy^CJTQ1DO zh-$5${PQK>&#_kMC6woWP3A8{ojikqhILw)L4(IRut?c1q*RykaiY`j&1at1FJKx$ z0p_`Icv zmlyCw7h*uyd*AL8ta(l$gl6@~|F|pK5VzGVA?ok}-oE@wZNass7nt#j`hj1#F3JhbX2TEtFh!K>LpXR@^40y{AaXT>9f0^<&^K8Rh&rVD@>hb8YBGArFgS2;nPaKKrpE_{*30aFMhzm7^gs+(xIh5`Oy@! zzvBr=;=}1TXmjvyznmW>{OA3AA}vAK$#imX;u+I4gph!1aTwuTdu;FTnJ9-fI3-YF z3UgGbjAPjFW~IS&rKRQ#877L8=6@PHHWc6TT#TE4s$DmG+Y zBRgWeju#6XxW%ZiCEi$9#Og;6Nmh3zEC`=X2U%PNvm6Hv>Hl*Oi zgB&zHO8ZOyIas8T19hk}%4g2UBTcOCm) z1#!0}+WYk;UHNrz0y`J~t|Y!{=^ZjbkBd$N(_F{>s!mrgL!*Hf^Vr^JrJ)lTmoO2K^Jmnv6wgRJxCoEfybkp!;_9(3sT_+s745_|wE9wJ`mBdek5#&kfU6(hur z%U4R1#&J}im{<;lJsjeVOL2DLZpu-%hHtP2FP})~CH)UaSe>CCL|N}f$d@(6Giny2 zO(9qL=tf~Z)=Gdp*Ypt(|NqYS)~Yl#8fqzWls%Jnay4B6`E%^YR>qHMtwW!vfr zUIcqm>=Hu)_(7#|mhPn#Ph_pL5Jv&LC!*~IA>?9-WvETEL;*t;OKc|NPo`2x7IBhN z2*O{-7?RHVc%~@D*E-B1fSz3}G5LSxhauw*Kx^)V;wbhf-;B}vk$tn2Aj3HHLHjSA%n&*k<0+!g0XC9k)BC2^Wb5st~ zTP)D%I?$*??!WePDWy%&&io5?egBIK>HQ?1;vmw1wxO%AjziK;s2OA`xS&pHfUSMv zbWa|LQ<|kb+o&H4z8G+VI)xXu-^D&=UFJ6*zQdTf(00&z5?iGf)MnK|fjC*-Ult=} zAtlnT!j?B?$|(79u5n3@Gsgc7blDIr#3b2}Q&uSoV4Rqea60!MzSnTXCqy!>(PhGh z$|XfAu90QJex>jo6UE{iKc4zI=ehvu!9A_U_CZ**V)dwfJDRoy#`XS`{;(63OV~PJ zchY_P*P}5}PTM%ykilzFih*h|;6Ve|ViW_hBoY+D^cFw?j|C@7;-JME0Sk)#9ZzE9 zXBa4e2F)JesZJD)rX(@(^U*-9?Y`SfQHneD*ahPOO3Rc;*+Wn$OLAmRff5Bv;`W@x znCMQ0B2K2Hf9S%P=&MbNIEApScbY8V#Qzrw=qq$uo_JOo3q9=D$y0Y1B*;DUf+s_r z2ady*h<>}MAHw$0SX&75YM-y|P1OrKgB*?RkEi@8uwe)K$6P-niI)aD{6?f z7b^2Y0CIbLgb%iY9GO@qOy+|efw!f&E}k7;ISFgq(GfF1Q8h_r+t3lyf32n`Zpq4_ z8YZ$>z~b|Du7CwA3psVK`x=vG)Al|_5xa!bD|8}bdy!sMyqkK|1ek8T7-fd>ycl?F zqb5#{Mtn_ql*za4iNELk?3KMFZ9#>%pCCG7qptKV%#r>`H^=v6x@th z(07hTq}Ub0p%c|N4M%&)-DlgL*;hrl-CXsX@MTK z*UYW2Kl4w$8B7I(me3C*NjF#z+KDglLYg)_W|uEh8S6>8{NqrnAFA2__uXUbG$;(5h~yr#}sU49i0AGh2tMc ziJ1;I(_qIrLpx99#K-2iAGEmthp~5zt|aQ(MLRY+&W@9gZCf4N?r6syJL%ZAZQJhH z9ox2@-2J}i8{?ik?)h>4tW^uO$J$l3YR;N?9x-Og7_L>etKg~|ER&CW)!qdN90ic> zoUZLSB@R?PM9MIQ9-oj&yLw2N3FW9&Z^_1F zfaWbpbeRC9?;YKzCCcdv2b0@{_bSx%c2FS_YSQC6eR(^#m)v$if1vNAk32VzID2Hu zUd-NUibCeLQo+|F4T@G1Y*rTdpLfl?R9w7Kx?6F5NjyDSKMlRq>pN_R4hZ^@rM}qBxCS>e)B{rhyj5Dj-nyVBa(cCYB9(a^A-Q zu3Tvn)%P|G@)`kGpMZn(Rew9r<{{7jymhcR#gns#)036yv6c$&a|vZV-klfKK&nX- zW=9D=p~FM8g;F2H(H~Y;e%mK__aS=SujGt=i<09Qj!1miS`Zc7#h}( z;X#{4bcT(B)?>fz6IZ_^M_6`Ek-GwJ2cKSXRh-*)YYW}3;>?-XyNrVyDH}4fttTWo zqG%!@1pU-z;ALGg%Gz%n*?f#iK;|OXvW;_>t*gWdHM!uF1IC~1q%xu_{!~Z)Fr%7{ z*mG38EvnKcb+Us8zev)!uTl1BqT^zU!zgX<7id!)4GJnV@JQFS`y zgc=6dxY+bMqeSNh*TiZ%FhO55?jkpj>IEejcC1k@w3~;UiJ+pkZTG@;N|AQ6c=1=w zu8jmj+~C?r6R2&LJGyIwpU$v3lm|N55h0CsbF)iIeM6QsVsMp-L8m+ld@g8}iAkpzDa3G@)CQ+jBaEX?z!MYb zsv%Xy_vW2$%rG?+5<@>p5$lO*=Bja0MVA3<9VfmbI}%AdDu5HYrV=|j;hy7Qt-3Wc zxcpl&i+(UzfutD~4`u0zX28seQ6um};9yp|wu3fC{m+J;d*kid4!gy7$@f|h!l37#@-!+LlswL8o5dgw$%)#HekbHh1(0O$Jtr^R z&}Mtd$fB4X;752_$F-IszObZR!8~aZ+Wi}@L;GDZT6yoa+isG}O7p`M9LDAz8MpPv{epQ$u_h*5aCdf* z>LV>waEE6G6L!qb)iXFv@HHPFkwmh8B!P zM;qbs5qVmyPY^McB^lEC3QqhLhuat}{Fs8!C?1teeZOAcQ8u%zB4zY<*3Zn){pc=N z&dhb8lSPtVt$@{u-PoGYwkJ$3mO)dm=J=zsEeqi^5Rf{RjEAB~t$If9X?ext=*RLb zyGTQ6Np@VLKsT#aa&s7pi^`-lBY99jr}ybec3p*UMf-CCcRrOXMyw8#fLark?;z-gJh53y`htOeWtv#@uNkk7Ow1-Uw4FB&>!(h9!mX#S|laIdGk0U z`s`EY(xNVW?SS?GKVbrb{gHA^2qq>=1=vj?2fwG*4ECG$LHs#|}`B=|MB6qDDXR#W2nAr?kZ4Br4ctwfSLW?4^g9EUXb5&N=DS3-JcK zoD9rKwIyJ5a71NlO~f<}xpp8C{Mq!21QF_{Z_dV_Kh!rZxM-5kvq|{NB8Wq>M5 zPoJUM7ESYQeO(uS)zCS8a(XaMw6{DbqhL+1&VYa8$>OmBWumgIKtMOu;qw~1DdkTR zMudk|!20dZ?3_LAm~3#SK5`{OIfdW=b18`qBW)1^zciENG239L)U zjHf)wnZkR?dD~X;^+(wBnR`PW2b(VgesCcdQ&8m(`oNCawsmSYts%SBwbaN0rOveh zv*mrhcnFFI8Ju}!15S+e1a(S88{OE#W}=(Mb?6zClR6nu2aEA~mV`-sf9+?fxS)X9 z2-acvp{kDJH_AVPk^GA$4b%Kk+HyrMCWV6sWCoV~^#2n~X+#rGoNGsE)bZ2*ls(yu z8(Ru>=J&~z>W@C50BkzPI7kSj!{BC8IB2{HBpY$G34m|}?;$B%@fOg2SocTYJs$mK zsuc;Wb!#ix4@{OY@7C6WVhFL^S%N`=dL055byRIw zbLEJV!hoyb+H2yW`E80*M&va?U*<{GDjss$DGKfy5HmF$Jw<@&J$aQ05O>{p$n2nD ze#pA1RTtmjMA*a+m-psJBOUxM`9%Pm^C5WzfxuWmi<_}>4>*?I4wvE2JGJ^uX>Pf1 z=1dnd_<{pqqJHdlf6?G3Dt(HK)2r&Q#YCIjW?1hQX;e~ezGm2swVgb;Rzok`U!-9& zD&Z46rL5&VOAw3LdYH^iuI{dtia+_0ZAaXUIU>3R4J^@p-)_Dd562V#Pp&=I{~OmH z8#fo{|2N~hEt;+)>HdxO6ow(>4II$~HZ~GhCiM(ysC08^memAqW+`HVzo9<UI}$-j#yBD=4*oI}=@(Y2eI*lj~xK_^=L||nSY`XAN$Drs42*ecE#94s|)nT(j zKzW3DgT%x<@HSca^ZvWYl*f<`{7SkjEVpJJTL9f0@8S_KC`C2r0H&EE9-T$mo1>54 z*3f}8$iHDrjIi!n#Tv%rL~Z;J+m z>FVY|tjXV!KlMm@-S4=t)0mSDkiq2LZyQPeTznv3NR!{4Ygu-sDRh}j-(Xfp&Ws#) zSg3dxW>KWc6~+Gy)+&%@AP9yqArQZv*hP6_gypJurYie@rvX1`3QY$fDxzbw&}o|u z1A@|gF^fX|R=(Zt5r}ZGnC$hP4B7#$a1Vk?hE{l>CUa-y-Jmsx?0zx>66h@q*$Q6T zMF~6VR%(7mTF#I8+HiK^e_r=&g~M2ZAQp3Ql90^WKW>t%G8Cnwh~7Ugd{0?!4;yRU zA+A1}W=X!B?FXvT#Dljg9LBVbeq}-pqnyT5yF6MX;|p-bp7*Sn!5%WN{8S!ubi&tN zbQ1WkRg;p|v8V%D_r z6eUTvs1VS-JmH8J5S6SW13(=r< zddEb0%B;gMQuBU#aOTPLawTCct$kP497GqEu()6`6mFaLODUT^2LPm9%3`bh%M|(m zfU%hJSWE-&tQ!6-m`T?u3eK&@1U1`kE6I*^uO<29wwLBC>$_2J1Wj}N6+_!6lVBqg z(*aHwm+yhh^Z5x_8GYxic*Ar&ZrtXsD`IA;-u}w7JX%JkdVRO!D?iC9izo0v8+uGX zpa6>ibfDf3J=TjGb+8+WAhw6GNE_N5XCK?)heCTnWdrf>YLm+HfT@#Y!Oj7)AW!D z+OSe+b|LKsTwP)o09T+gc@kX#XtKpoW&*!(lymwc2v zyZ5&;K7c&0@9rEFY5_@-B;@(AS>fLr~RA-IwSV_uxA&^AOyEw~9N2>a^4@d!VvHfd*&bg0?a z_wlNhutusL+(~>HNm~|8B4nz9b6+BE<0{i^ny{+V2$+}7W&_K(*en|<^+BoD=qh3Q z1tjkyvgAYQMa5_{beu_l%tp%~*~aBfv4}vZCLWWwpeZe+rR64Kh=ikCafoW*X@#Y` zBXp9Ol4ernTrA_t>8 zl5kLytEH{=lWWEhVWl+5n;Azn$%g`pD$yE79Ms_skmJ?WCem4s#g#qY_o)*2Wk%2G zC3osaYYv~x^L7H-_fuzb#D_taIFh2CSONj=cs=tMB1v;vPmoP;%xuGwcn&O>E@0T7 ztl<0jaozR^u$RSyPAsR-&GcR~)E>IbtpGH}Nw&S1-r3)0TB`+M2$Ey5r?!rd9FLMB z6R`Ex>-rP#>0zp8bl|Yn_?@|>OC(iO$edjy3tG%6-Sil(JcaxO1k$RI^2b(U;ouSW z?;?R-*wNHro$9AniTtp-UX2#;J(s4cL(gRoNUvK1vC?$b#L9!Wfq3TG1EB@-z@`)XS?O8c${VokYrSjG=X87QXe#BicTwrkeP z+6qaf9f)(Y2O0}7@16p?jZC7kLP7zK1NL$(#Zyp_VM3_s7R=shRiu zvb~aky~<}02Ue$4L5=&0Ya4UUUX+7BO!Bto*L2;sZb%aT+H55b+=$7cSbH~^QMGvL zGu=sG0xiG#J56muGU1V<&{E|54%r}n>P~Iu(4WYOs6Ypq%IgJR{zG-E8K5+Qk7Arr ztucLmZfzWut?lRS)veNtxAF@Qg9y8!bZrh3-~~bby>}bD-_q4Y6y!2d+a}vDWY0N4i`^;mc~&V=JyZ zsL4!Zn>S4c7jrQ-JG=(@Dm;LBu&zFp82m-`;hu<_LdfI&Ak8Hh*&CIh2iopV#^!**1hAwHm<7J&>tMSR>h1x3(Tv)-pz|2&Vd82A-M-Z%@ey*%cT zr)%gCb~ey`jxF`}KYeouW2741{B|-I*Tas1^-0sh$$R3Q^sLi8K+;q*jZT(Y(*Qeh(Ma~x&=*eMyd5?WKzvBh> zvb2#tD(JnosbbEE0YB>)aLX}fAtDUlCTX!6JJ=I7V#r3KB`=Izpvcia-8++Rp8Ji+ z<|b`eKRx*HYAfU;F{}Qd<`{e!yTN^OI_G&9+G}o{PX|*~r;@Nc@$zbE@B|<$GE0$j z#h@u(;$_}0Yi(#E%qSRN47cW4{DX;`KA0oVzRge|^&XZmqx~|K7`V9VNU2>o``uRB-^82m6AR( zWHVKmKPfH+j;x{OElgnC?({+#U(5H@3i<0?MRk?W_=U2>zkg_Ac3%y3xlu>hD8UCR zNR9^!=)| zZ&VX8NsV4Y$Ex;@%QwtC2fM2|SUs2vev94E{8&NZir;t!Ln&xT;y-}dM}{Y=8wM9F zeZ%EqX@4v(r(~*sc^v}!8?T`MVmog_JW@R?__v?7F2e0}^Mk`9BELs|QaB)mYAA(+ z%K9EH2%DttquVV^M21|sY$8wA^`#|`v)J@g;NUuII|0^5r>_DyvoRA zwW2AlRQwavsju1*1BMo*O~TF;Z0=$fN*a6*h(c@dwe`dFEZ$$Y}#6~bxjokXDtMSn1dTC zKTq_;!c*=ku3aW=gSvWM4d5C&fF%bJs|qqb);w{;f@fBc<7xjAJKGLqVXRZ7K<17m zYE-2_8jZ^VRc)U%R|ss~N!(_XQN+N~N;*Gc3&ROi zyn3Fzh%|Q9MKLC6!;AU9#Gk^vMMd9(k&D?~ig;>FwxF8L15Wn7Db>$-vZ2tZv*zol zxaq?+Dj#I^6rY#}!ln;2lkNti>1qc<4tb$=P&Pz`g|PybY6N{J zaZF{5y5ejnF?xggpS!m&M)^wR;tByUw*c0dym+}n3x*~W9DU!spL#TVb$e(2n&B29 zI(;n46#3PI3sc4Q^|2s$tT4XMCn}HT37fnNYSv8}&RE~Lw9-iw*A3qD=m3T$`?P}d zvosGx_fnAOBtWQODuxD#F7dBj&!Zty{Kzc&$1?5Z>Y#>ix0I-^myIR8@mO5j_tg99 znoo7E=X)tDre<*`Ee0ie_Z<^4N>UXqBQW`U(%E=5n2i9ls$}1!qHl0tx33=G&_lQH z&>x*q!})^1gx-1{%&M2_d@QJ{y1UiVAo$*R8)++?E$bbMuk@>mgp&vzu1-PVNm4Z8whCG9h7dsTntopyL;* zgE}{68?K|i80y^GYmFd^OcwZc*ZryCvWPF%E=|E{8`y6W1t~rV$jZv|)Jec>$f5Nv zpJ^=*FOGQsb~PSE_v|d5ebh;$;D7#>IwQ0gn+_Y7DT`a=mpRDEx*CI2v)BM_e_=HT znO*&v_Op6Cv?u>XZ{m((=c`D0H5bCTBjpn5r*uUJo#_hhM#hct#^pjM#s^H-txN9YGxTe= zr{G%EJ267YC10B6j{fUHWYcL+(e^eu(J$Vz{+|LogJEObkdqel`%b3GeV(GCO)T&p zoTk$$msL$K@&CFwYC6$mv$9)Rn>?+es>7fBpJGFHyD;vj?o!OlpU`YLXt!i0@br38 zdW#XB(UzT{42rjMZ?dJIS@tFuuT5)LNV^d^bOuxU%*LOUtzs+p#_u!e_s8!$)W{7o zL_=|E`EWEwQ-mmJUv@{V$qn$+s`ewu8j`%i?El;4L~f8jS4H!(nBgT%ZeZrnD%}lI z@MvF}m*5)g)^(|6K{LUOXkXAWQmXdH5n;7PQHi7~=1IW_`J8#v5VkK7m-l@km#pV4+^necvL{_@ z>h&_6ZWXo{OePipxU3IUWF%H!<~ux2o0i(Tc7jIvF3YmDnl5}sWw?w{f|`9BvxO>V zOLw)tBIeWm7|-0XCT7Z8aa8$kvj*%Og1tF=zfydmuU_ymn+|4*Vi)LC{PgN@86nP! z@bQc9r8Jko5VOdvL7de9_ zR7SXkCUni`Z7R9r91X|J>ihVks&Fyki@`|Gn^eZREO*6nzE;!u5hgBvhw*`e;Ay%h>QMnzJsUxT~h z=)N*wTuM49^*R;kc0WZ?a#Lp4bmkNd`iQ=D^MFvbO*aYNI`hZFc6{Upn{A5Ve#?~1 z$18Ef!DS+VbAn1Q370qqIQ@1-}KIdAUW>ASBn*Z zfTYMQo?_@VuV2)9m~WhFrAb}BIw6Ou9m*79EgK~eCFy<=oTt5IAavI#p5NuTK&Jxa zOiO6MMk#0r*Xlp5Q*5D_OiOUU)_=RK-TpJd($rYPnNt1%fn)z~nNMGICf5QY$Ip$7 zsaYKBM9-^+*rQsbOK%*8O=TUJ{mqmRaJCR6$19anB5UH>9dyLB*N_>U^NMxPDpQxZ zKN9YjU5nLcP%z#%XE}&kj5vg$0{B71knXZwNC&c+yu-hywMhx(>>pVR`KkQ1^;OBpXS(cQzZ2 z{&LRO$z1Ls`D-xWCeygnL1W9D9T1dLt;3!Gt=eHiadb!Q>ZPbGDRsMIl(XxOx<>}r zBM>%b=SDG|C|33Y; zf}sbtNnUe@c|u33+8;0P@MdzEdh6_X6Wv_9mX0$;(g?L944K!v?P&E+y`F5JO`rFj z=+ShveL)3^6;0oVqn(tVH{&>>kDEOmpT=Rq{WC*m;op*yn}wOtg7qXhXLg^j_P-Yi z1wT0fsyOK{=?@|N-Iaf;7E9}~MT$-2Ki zE<#p72=H&hQ`-)j50vYiOucjEn{|nBtVj-ev{h&3u0%YrsExEap*qk|=pfZkt_Y6| z0>)_eaeBU+)Grp|u#KERPO@@S#sW;td*DPU%+b1_(nez!h~FH7)nk7+3|6L_3+TXd z*V@lkymO1%2a{$TtBq_E7Vbxh?Q@B6?lm( zO)vn?*hi+aNdskPA(i!5ORiJV`fuR>6b4%J$sq6kNb3_MU;(U{N!zgr@E|cAN8(4- zcoITqJ47G#>f;Y#K{0uY1GNG;{kp)HhZLwjrKsRYtPYobpdedEcGUy}{k)fiJN{{D z@z>mP3e2HR_VcgTk(fLV)RxJc8vUFsb{NE1d@gNB%X=xXmY(PGJ!N{Og=5rN@Chm- zNs}!f{Zp2QE;bo$x3&QuA|F-rX zb-;_IAIBCK*V7J4RR}W0lmq_2?m5iZ-2A-G2^l;3xaqltbzf)mHKQCM@#^8PIGxn)2?{(&>HOf9ql1K;1e$ zI-!io=eZkOjffwXm5O{427wqk7Mso0+Y7`w1vU7hMDXHGjsKd2%ZSzoE~{1XE6xkM zLI!>JLno;beT+qP8r6p?hEDI>$CRTPt0=Cwa31B^As;5H$AHq+2~CQvZBLW}TNfX( zuxuNEehQ{_sW;bC1Y?AypIk@BwcHp@3>4TW)5FJPc9*J-`o7RFzgt>m%8G$a&oa-X z{ae>85?cv&Xk}43CcpbjzqH;`od=pErV1}D7_m~5)N5%8tqHuHgYfjVO@GP>sO3?=@k4{rRt~hl4@YyRTNqH zR$-?vtT~omnUtB~lu;a_-3ZtDMiXJ#x9Byq&GDSz#p+GggWrY&;ffK(_|@c)lN`b_ zVPRqrO^aeV4qUwUa`>)}V>_his%%bXXuSqt*rMu#=djY;o9Z?N(%hXwKA2M{;;V@i zDf1=x3N19}Q`Ez(qIudG4qp713eSAjQ``bvN<0^(wFXls&e76?r-{)LP1H?Oc-8G1 zyfnu)NrC!TY*yHBG}*E7#ZHh`*}tn+cSmYZZ z^8Wt%rAlhN0VkD=^*h~+UZ}{&_UPm}f8bRTi=Z^9N=fL)<$Sc46^Cjiy!ewq-5+X5LiDk08kLNhavE5t(%HlxwkexX6v>PaL$HtNh<#x^I!h z_Gk1%hhqC3G7600=hHcwlE-q>y}k1XFv&nWUoKnZ)~qB!em-9dvK~}@vj!_y3`CBW zoVDNvWPeW?Fhd?2lGZ1TPL?bVOumWnbtg3qzlN88P`Miu7tP@KT5B4)LeOj1uS4L2 z*5?bsOMu(5DUSth#TXpTkPYTVY)UaImReX9>q>G`sh?$&Ej-r8l`}=wIM-tqCoX=v zHE?HdcJ(CHS3Tpez16M9sCkbBzbMZt;E{ktRPLTdja+Q2aMIm4W4*Q>#TtvM(IRoj zHJg1p<7!f=Wc$@*%}Jb#RC850)u|ikqDHZnbLA>8foEvy8B+)UB+C9YgL#Ah$iQzH zOJEg_FP*Qk4cGiUs{W!r% z-8{+qrTyt~T_ZY_jf1v{|F5GqqHa}I(1PC0JNqgk{ymd0=h}N7#&zR1b4yS|(AtODZew+1-d2QxE|Z__~lp>=`982&uq})*xKaJEEfB ztSl9{8nFPlqtIU<@E-eMF z+tnyw^H`-)Qt^%_{C&u;RXTq13R!t6kG+{+D_yn&2F6cAln6kM%1(NcMv{;)fcmXr z$;I}{@JG08XXbeP8+1{#r)Ehkk`C~zEDvU-iQ1ITAzUZgE1Mmgd(e=4OD5TM5F+yz z)2Sd(dkXh&s7j-aIpVLs)cVU)T!VY(6V^*=s^q4@x9=7YaRw=W2);jBLrD}floH+y z#cfau>+`Fs8ku~xDOn<8E)2!e7RDkpY2l`ps&|$bflSO|4sPP`}9~2F`4H!Jw@26R*3^jD>!?CVtQF!;W2dM^_Lm#U-flU<5!F=1%RSfY;cM|7t{=}UOd zL0(&et=NW_jGhc|*Y6@>OlWRy))77Q!~EAD%fAL-o-o1+#)c-1_<}Py_*yc?hWj5t zS>q8oHVMC~VrGCfeblU>l|`hb{9`_|T#pA#l-8M61~Bqe{wbfi1169+N(=YuiV;OBws^$g}0u)=~fwgQSzE`JE4KG?YFk38opA2;nIQZmxt#ey3Zk<>Y5SS zr2U(S#l;(17lKCs<7hrh6JR|^lyT5AMvG#aX9>U@R5(QEm5If7W ze>8C|gqp6I-SpGx&RV~P5mn*FT^tluhF`2?VG%AWBBe3NI{M~3E)8>Oc#O~*lHiS* z_EonEoQ~0KTNB;M5bU-Le1S3Xz+wNN)Ije48#R!fo%R2hqq)!HvT^i3Iht&pOopHw z%>pZPx9_-VD|k!!8qn_#6zq!dK_WboiD)Qpp~?&V8l+dUx3@WVr+SB9uU}hVh`#Sd zn_b^oj-USP$^}u}t{Hr8beFtKzJ0#&ekpZ-k$v?j^AVT2(swb9c7Oeo2WE{Ke4Jfz zk{`TXeP!5xU2Eoyh!{R z@1IQ3N-_Q*19#G}BdsiU;nV*c%BbP!2hQePxS%4}0E=$&FPuv`gVYNXWsG4nPF_fK zUi>2#+zU$51T$FN-zFBKBC!{!xZ5K zqi>G-ms7t)w2a6P@s-MyUTDFgkRqb6BphaH*Y^ztK-D%*-UmAbS|n_;mz5$_!6aDD z(dMf#je#iT8o4}Tjf|>k3CkO+B}YZO+O1DJb+5>I51}*Ij*&U6ep>YUqJnlpqVXNZ+kbbNGi7@z!fL zF~3?-GM?7=K4={+_T{@fNu8BSwpl%vbsF<2>ewr9h420H`pf$@b!5u$=*w-8NK(-- zCS`wgnKn(!hQvKOArAMPvd680*OJ)7tRll)q_}*e*k?cgeD9Z4#J1S>(eYlI7o1~#5wk>`16r7w5WLk>t-!KbH{B1kISXS22 z;0XJe12!_jzpB66>71fo0&beQ(HfJzt~@=YF%Pa8zwYD?OZ&RN?0oX;%V^GQeK)PK zoQhPvL8;NcFr~LwrGexBY9FtnkYBbss5)g?^KbeX4m9J_f1V|HuWpO|LuuSg&|8hS z^C&QDd>9q5iR6}ja9q6^WvHrauP~GQZy)>y&vK-TSH1As^s&RG`M=uSA{HLn_({TM zRp`ov&NQxAF`6WFjgD#7VNrJbu9BK2HP}pZ`M(iQD@SPq7S+Y^9|5z7EZY1dyOrT- zCFStd=uUKniHY>HBa9V%TAcr~NqV*FO0`GT*H&j=aII`!r5(PL!mQoiK^mN+Y z!Dt_`eUI%`2_PU4|E1Qt0EatgM@aV03!GJpcJAN{sYTg>(@}IS-)ayC+CK*d%DJyB z;o%;8a!IZFu(Jr?u zu?(laF5hCC(8{jO`3tQvNu;A5HStw$nzDF-15Pj6c6;Wm4Wc2Uf6!=rkztxZ*eun9 zUZlm{s_FZC)-(K z|08#RnD_DNOA!RX>Gw&kR6y!|_(E<$8D74yhG7gq%qRiigwY`$0GoYef%=d~>-;1N znyAz$74TXWlR||GHhGEy5f$d9mUFk&ZaFP{jCIhbm0iL+Vcv`>K(VlL=pJ_XOx)O3 zEH7l#&@O6}Fy`3jsd2&mx=DX3dd;WcTZ$4zNj-x+ht58-Oogu%2!=V*`p#{N$VjD$ zn<93OETgg<3yy0CWdQQtJ1QD!TgFHhb47+I=^)r3&RJ787FQ(Myy?m+Z=Ce!(Dg;Z zJGFwl29_Z7L**i}*Nkq}nh6Y<=PM8KMQ*T!9$_1mW47m}Dpk#3E(d^)x>c%X6smhP zXy+`kgyx#Tjgzn_ny~uz zuThAmej-yI>E{%!702t5kgq-@q{dLv(#~ER<~X=V-zs>6&oE3WeU>RaTBICNl_VtT zG)Aa|E0A?4@J1b4m5b_0j<>ng=p#(M*hs=fQ$7%was{hlOK}pK20s)|6?oDeRfQ1A zZY1NKy4EYt5TV{LdnWpI8%t&n9Tq^ct$8Q@NtPFxF@94zt(qH7f69G}0iXx2UK2`+ znI8*E3kT%0-V>4MCbfwkT@QU0KsI*rQWfI8#jx0UbE7}f-5+DloQTu5V3#SbVcug zm(hE2BeG~p7IK)-?yRi96meKNXn?|4EE7f-qXv8uSF1Lln*|xC1JMk7>AVj0KMqfNW%>|=<;C9Ul8|}706zNl^1LBEMyNa8z#w-4Ikc$ zf;4CX5s>kM_^4sqK|hL+FvAp+x52C)zHJ}SX7cV!G92VGO=WC z94Hoc82k}}cI?0pgB(U=rC}`+bUmSwk|hRMn99@nOkg`Qhb=I`_g9JCIx$3-hN1Bo=cvU`3@jk9+$ zkp^9=OVPidoe7{+c43>+sha{0^&;4k$(CwVY)r)jVIkLu% zaoXM$&em)DVt2%|2Dl0WGxlaaV%#(FfQwOaTASQj;=I3)j=Aq$XR@oHiyUj3D}(*y z*u4#2OLFrvgdR}Z|FB<02S0`$g;Br{(|kX9v$+HQjoR*ePzp=OM% zK9ViqxQ3XEM#>N;Ff&BbT@lS}kg^XA#`WpuvnAUX6}r4~xq6!xwi{+f0kA;SQ$l+V z7wu%8Otr6wspxbx_&E0JL;yTQtJg<l+`X-(*o*+fPB*Ju^#cjNzi5m1>{+5=KDdx>BFp0wyPU z*t(Xf&^kv~rpC`97kFHYK$;}6)2h0S3+`t1Y=D(TueDl*&(-{kgC3fZ91^>AL`Qs% zac&Yg_U2GJ5g5`X2i=in$7lNAKVDkbmeo6l#v+xVP?d9jE+a&8&r&$*3jd7@ElIhN zU-m!!V*19Ra$b(ZZVINU(_fF03TEc0`)R zlv%ae091>~?*oC2z;zRh!Z7WSpxq|Ud1g0aGiVX)aty|jdbf_kklRq2U$`- za0(DL-QdNIZWkH6T`Y_gDj#gEBn}6PQ6vGqYGv9YMa|+yp)W{T-2Zb=>PCJ%R0Imv zp|Ofn@XDg-hAESwgTF>EI+|_F*69j?oje@*%h0a52mDiMkujU1oK+O4`xUyleT_ zd+w+FIM*}IE8}tPabvV7*C;PmN6Cycu(g*hu?l=vMP9igbmLE@E_SBg&Eo1|Ze%@A zDY%Ytd(|*DFpWMX)tJyqW?Vhsiv-n&08j({l_cHG3!HaO{N%ibX!+Y;$sG}`&-81Z@Z``M@V|g7T%1d3>`3vzAL}KjcfcOaqG;eDS z#5u!D9YC=kec4mmi@$>^93nqL_!%X`fD_Biz)eG3Lw^Y5*I!FukKk51*y3?9pLU@? z6k`)uF4A2cP8(d$^=?e1HE7M{H)FnwSSIVR(czFhXFgDQ9>p1$0XnhZ8oyUn?Q%$N z&phH;yDCL7BVY97Vg707_QyH1gCG}gD)tjC$a1li+wDUMkJja!-9B-atP#}kf+^D~D$|=dV z%NiR3b#w`d_@Cd+-&LuU!8y5~DxEnUXZwZ1zn^=oF1J^k2Id7T;#wQ6O4HLF$rcR* z-gJsyUF!dy16LN8woZ2#Ol)0pk;IGB#Dz z_{__@draZ*uc?1Q1Nl`GYf}LV%ty#`A?>Ut9wn*h!4g-?*}vr9tLWQEQv9HGk`_|Y zLnKl}ttQ|^&)!p(PYuw@?gP0EL>gmA#ZRktbe2Ui>KlW24MfHWnczyPiC~iG4fU?{ zeqqgW{cP{P`*``K*ZhZi)B>@+yD&;IJ-$n_P5`YEhdwbN(BTqUw@Pwt9MJsUWCkKR^^{_wG#X;D_ zqcP^kb%{2egAx5h0D(j(A(Z2OvU}-^sP^FAa9F8ZGsFo!QR0x|pGUM^YD!%4L(b}Q z*6b{>=A~3aKAYLdKWoeoyszI`()A}XCDPyLN}??VHE=A31h3E-SOT=lYlYiKFtY`0 zg+1srV5{$9HLGj?aYe>1X@vkf`A%1+kcR%bDE*6;%y`YptWvNR46f+$Cmd0yB>ULsCpU;=XhTF?AW3MfIp0=8ax3?Lye(JUlP8Hx;| zxn#WPlMW>h9>{fN?3-L-!#MS|ncjzZ)Q!xFOdhz~y@) zpYM);a)h*WMFgqPC>*Uq*Seg0UWW%V)W%|k&FuiM>`~rj*8KoeW4!BmbI@ss5zwuw z=hX;DTjHAOb@?b52h|B-Zss^RRoo3!p9JGrHX3p^w{sgjTGnLTnbvT0{O7PGqoBUU z=m;j`X%)VD^+lR|%Uk}yTj<=296)%k!cg^Ua?}FEcKJL(NNEf??_^wh{VQ|+Zgh;r z3wj51TlE{C3<8hrfhWD}IkQuHGmTlpd5$zNhu;FSD2LJ;@BYd(xMbs4E>7hzdM^BL z1yNGhl8aBHdrj4LdR9*9tsPm=g!@xl5@CczBNg<;o0VyT%Ha~RV zlWYI(%(FPO^vF*nSTAFBEL8F`Fn4EOG_^#>kso{vyZ&lzREZFfpR=&Www>$J`s$tB z)>H;~-m6xOEvLi(5ts0Q-QoWcmQCh9ULavP{J(@{4DXiSt$PqrN$y&EXmo^!C*RQ- z4P1lFUOpi*lHF{D6a}IjQD0x)!iM9Z*lv~5v|56!SEbT4JHzSsnbIQw_Csi0F+Voq zq$dOZE8nzuD)g$Ol3B>TF2yXMW3i}!+~TKPL~$?!pOsQ0v5*nh96Ap4yz zUL(Tv!+TJNS4oYBxZ01Z6ppDY(>*l`mgj0e@Gi5)6D4O#UyOTF?<`+Td+uFEEuNAy zVp+l$jYuK}iNG;&h91j&!?jBRI!V2C!k!SBlz}lH-e2qW5Da=uVT|*%5737$!*r#= zX=R?h>6Exe5FrSgB4qygzw0uxs!rrlnOc`E%H}ux$09}7peh+)N4GqFoz@``aeaL@#gkXg?YJ91`TX& zeiErK-aP*w47?x;+W#91FB|Ls*U{gl2O>voNBS>0qOLgF1EfD4_>Tw^=eQLpEmaL? z^8~H+|2X=oQph{r`5G%2ppVNOI8jU^_zFuyeBYR`C%*^7~}o7ejFeTqzg14iGC6m|2J~=%N(Cjc6tp z4+J7EVMLjbE6?xl)#Cwbm6noZf@87eaYcMf$K-&5F|(z(A(Nd6f9X*lmL4%yg)+D5ij`YZ{o1ozci)B_| z+gH1f9|m>U%MarGAb8#nI~x(x(u(IZ{}5M1L2C#x&FPCv8#GhWeDZyMLYchWX81aw zHCaBsJva(Mkia!Q4f^tWH#U$k=-l}rl3D5hK19UgS8fci+gPSsjPQtACvH$QEjSiR5M!SxF7!#8j2E`Y-3hbUT~_ zKvBX7M|XEFldwE(vjyDkZm*;e+kVrng~358O7)_s>)xADW~e11Ji&T*nV{%&eRq-2 z9q|P_+E)Aw_7A#+p35E)lCrV+D@CsK&5;$wzfv_Ec5vdP`%W|%O`&xKju_0H2>GF4 zWNQ^E;)pmae|h&M=znc1hz7*9Ng(3CB-EBDkwHgRdjCW%JFaB;f7pAgsJfbFQ4|lh zAV7kV?4H%t z)zw|qRXtnayeH!rkUMKO8dHpsyM}(DB4gc0>?OG1$Nczxho^R?!E2!WiPSQTTRFrl zo(vRXJRshBuQpR&6t9J>qTADl@-85tHhMT#xTttQ)zGuj2j&)dFN@Ebf397({DLPw z%NL^nhL?NTGG+J0qb0yNM;M%~R>V{K%V#2n#0@C$`OE8}R_?)sh>z9YQX`zGgezuU zJ(=|*{*+%94$;h5kO4C5=PT8d8(r|RN{M`^;^ZE^)DHA^#?ssukI(^xy^<{eVgvCh ziC=|fZAr<2cTPiov?Py|OaOTFpOn#&)FvUOQ!h9OtS5KfXRR-=OS?3QBF>*hx)y{y zg#ujj`dFP!!smtYN}^|R{sgz}vaWXcL{Y{EUm)@44hhnB_(f3~eXbp1|H7Xe|2amkllQ$iOu|Ze( z`rr1Stt8wHruGYeFUpk2K%5=oswzr-J&YZnQ;j9;O^HI{wGBo!X+pPZvrQ)s%O1S8 z{V*^&z`eT|1D??#o2h+{;O8hgVCFJ~bZBnw(J8pK@NvbMiWY(UHLa>|PP9PU@Bx5# zo)UE+GHBIYue=;K_Bk^qLhcZ%D#l$ZQFt^Dk=Xn7M#VAjB@c<%nQ%#86nY0g;3GII zbeXH7nL=gJ$T!;~DWb~#k#BZKK%z>glyCO7ss`>w%{B3PZ9ZjJ4jPg^-y?G~#fM{w znev8nNhK2F%VzHA6k=<1#dy}PrMXPT#}{hr3wZ6Lwv;dze8=z(##gRcZGdc?%&mf3oG661=8)JsU+;6N}h{ zCH?RY%>%+DF8kpx`|N$7(ytPJTs85sn)$s)Qe-F%T1AQ{YZKn)6XPeSaxskhIcQ>E z3 zMpSkfmr&eHhA^`N1eXxnJJnd-l;Vrg8NXq#dD4gQM^T>jQ%-qop-^smA`ul%du}AJ zBWGd=26&ntzurr-AX?~aES?b^;@w4m^j>jsvTzKgom zDu7D9LUJ0f|X^dozl03&w z8b%^aQld3jwg#IC&PL5wRyt)hYW1?BQ=OKl2JSdOq0}l1d-O0DwSGyYB}2M3xd*W) zZHIf-LgSQ2?;G8(UfEDs7Ai6SRV&t}>icuMNk(gpybJUs1_u@!A-kC^b-vSEq>Urf zCS^}g`m@ylt3lIvYyE|?>30Xz{o#8}EE=WBOd@=CE z0F1q}H{_%mT*X~RTgN@1T)q^N5#>fmj26qget9c$=CUP)hTUxy7{pjNp@N7D4DwaV zD@8Ut{TSGwq#y7J|0I>vSL}nLh#^~H@wB{t3EgiYF7F>BfP9Msk9MEvs1b74AfKm9FA?EFJbiId0xP7NA!=Ej!D9VXU(*|!EOB7Kyb zr3BstCZ~A*aj-8-!(GXYb)%adu`N4)Z_Dv9w{=Q6+{+tV9i%~f8p#V77Md#dI?l~x zi#w|rxNgh3e>E6Tbg;MfmYfi2>oY5!44hxo_f8q3X7Ls5q{xPywv}1Zddn%7!D_5w z2C-+sq#c!qM1ei-Rh{Hp!hYn9Mzs8R>;wgi4T#)dP6WeUHnqR2-asQ{inc;*v4nRP zE@ukuw@E{%JzZL2HZPB z9`g2Ck}fo}F0XZM&nlnj8Hw%3lj~KRN&DCr`SC}wti>LU-LbV97sFLlQ^OYj{Ne48 zSd{bVM{)_EmF-_5x2MsoIxBJuy?#Azvyt$fE=zC{WifV%9eoWUbYuob#;DaHO~ZNjWY$T9t;PX3#uU5!hRmEE|Ne zbQ3v)#vVZuW`P~Z?sSs9)?KK3z?W&szP2*ZQct^VA2*}v6V?gIzUF@v02mIDomA(F z;WL`$cf9UQmd)aMEQ_GNi;uj9M6ejeT!jtmwm2O!DDcRf`uVsE zJW`X+#E5ivBABXYA}Y(TG>dbiL^B3gJ*(+s_Kt%PSt%!qPh8C26zn;! zy27^GA=gT0BS>`WNwMS17o6>Bbq->sCky)_THK=_+j5x$HxwU7k}gHQQHjP(%%1Or z$Tiz028kGJXsFOTkE2|-CLHqejOx_OLk33@05CXH7!u&J&BKFHrhm_lp$P-KbGGF0w#{eDY!6iIL251M=DG==3OntMjZG1Yq8D3ZKzP#P!mh%zYRL^z^!>#goHt*bE) zx>PY4X5hO8AI=2!rbgC|is?|))vl`{%_x5U9~K@F7?@o@nf5CBKfI_aCOfqUIYiCZ z&FV{kT4nB4dre%l4^faj`sm?UrE(n-;E({dCglpSY7sM_U~`Hw=8g>>oLMTrUW~{) zFr}_ip)Ci)EJ6qjfY0=U+OP^KXNtKTU}bXawcF-^u0eW4-k-%%qT}r# z==Zg~iij)c$mOluH*xQuL04faXK4se13&OcAzM4p;BQV*DmNa1BLdu9=m<6=#7bJ` zk#$Uxf2xCn2f=JqF@OJPZF2FMMi@>IETUWm7YN(r!;4o_Cn(z2r)0t$+1 zYX5RNK?6M9=jNJsTFgE317eMXGa)q`n?+S8v%H3ZUe;OuP}6qa79}#$51)D4$*J?e zrPuj{wXVv7@q>m&PXOF*O)xdLQw^WIKTy4nmD^z#ZzBrb_JH(5`BJTtoIw=yW=-9% zT!-{HnoS^{vHW2OcO;ma+F*B1zXPsdX@LVSE+~dVD1FQcVPc9W4i+)60gB%ct2I@C zzF~Ws8IFw!qQpTSwj<~?rVf(DvfD*55m0Co=A9z8iW6`tR-poSQg@8>E0 zfsh0PL?t{P#bsj%R#?tcgs6JyiUSso;=s5ytL>VOQPDxvlv;R^#(`nEms%LkI(TY^ zL&$~-Bqh}mrEPt9R~M+zd*vVlD-5E#E%491OTtNX^*JS9T=mY>b~s*OqVb7yX+IVZ zBHhHIje*TTq;MFEvm@s6)aP`{Vl1B5FYXW}Ek+<%-Jca$JV+6?4wEj& zv`s_vZ>4!)!z~{2fCfjLShR}FMq6UH@KP>{VC=O+H%sVN!)uA%{(Cp6D1#F=M38_f z|6&9a?$uc90b2(;yXFOgW2!N?U&2Civhuc12Z7^aWv&(LZr-*p_JAP)Dq^vEz$^*n zOAR7F)zpigzBr&!^!@=qckvLocPwVEat==t<#46fE)S}daQ)BUvZT#)XNi)h{Bn#})got{0Q$UQ82S5OvkAHMqpz-*#cXVPMh1 z@H9(Te_E>wLv`MnHidoe*?gWiV8vl6KrcAvn9Xc8j)2-;+QZlY+7aX=w6SJSC zLD!;m)QF=o!{NNTM!I>R+q~**xdST5*52)CiyScsSz*9GrkPe*4{ecW)xU3BM_&jJ z{yt#&>C!dLk#`S0W-l(l9GpV5$Ff`PL=qYmoPsZkLA1Y;;O__7b?Djua?XYAzcc5; z!p_C~A2(OL&$%?AwB0MuAtR38Lo&KE>JXgF_Smtw7gwC!^}8+3LcF>b{S^Hf<|-;N zKL7@qU__jp%j{=xm9wEWCOVom*=f}oDd3eXZ7)UPCb|AIf9FEJv;BFi^7Y&AqR!{% z=&Z*ptA|!1e9W=_zT7s4Bmz~{tRSz4>q(5f+uePy&QH{Te+oB0Ki}?VdD&a_|2@30fhrIn=?@fNp|@n>^#jX|&Y#*!g`kz)J;Vy&DNzFx!jS&DAMFB3u|P*{W>)yqoBq-z_K|sCU_{*41=B0Pot09izrq&D~FYo?5Y(k!}mJa*=drH+xbin z`cvJ?l%%cg&Z^f|!tr{273C4$5$s8Bik0-*h<5w*B8qKxyat8kWwpsKeK?kKavUuz zj8qztv>ubh2rKwVYgCUOM@?S8J|Ywq{;`Q1gU2v48X-9)5%eS=Bqt{#v@vh<6yE=! zx88G~kJs3&xA8y*1!L=iwoGChKu$}&8#1E=sr95Vn72akclC_4gLp|XhN*1mWaxUh z>WgC4(^vIvu1Yw>!BbWp|M^gR99o&rVAu~wOuHtYlE3=6 z8^HX!-o@v7G1h_PGUOMgP+fL^K%mK)X?|g_NrK#_yypW`$zH(7vbs56_{k`6tqF#8 z3=wqrkO*4eomc>?*7&)PnUqahM)%KV_JXEye&e519xY~^`UxTNvrB&hC02_uOHpe` zZ2%;Hv)f0=PRulV!#f+jqlh_btAg;qapi^8y~4#etD1EWYb1oX3n3q9%p;~_qqiuq zS{tbx`~+^!Rn7cZA}sEvRhR|j{v@~(ITlpmb6p!u>ai9YuCKpOwC6yg_}X6W_hiROkF& zK5h*=71x8D$H5t*N8ML)T-1*_@MEpV5AVCmmsq8`ks<_FB(fKM+t4m=9BvAG`!M(C;dpln~l+Q(}~GRC@Tj z3Qjoh!tYi_S$PV3iqokpH;RH=Qa00XWyY^6Z^HcKV2{p#nk+x58f0zy^ur&0c2l+G zdU5qhD~E!7!v^SjhgW1&v|(f9`kIm50FxGF;z8T?Q`kTDNs%DTIgEp{c5x37+?cFg zeYS!bbR5%MOaK6RoxwI($^GeHb|UBuiU?R}+-M63=u6G}9Li%3tPj4Ef3jYuN@JF8 zuj;xFW;Yvq~Webctj=%(CK9#W}}@O&h)jBE^`hfbD} zg+Z2+ZN-fEXX+^%3X+gC+AI3TnECixE^7o)2mVdi%p3?~SPfQkRK}Ov0hpS&!sZ0L zyJS{q7el0ssNMXKT>fU>nhLrVnw!3D=JZr8%|ON3(NSxlqX$;63_T;s&s0raG0tGG zU3Mo%B)y!Unct(Tus_YU4256teg7)1tCsXrRM3Lb!-;9%+w>OhyOlX1k6?y+b65tg zx;Wkn9It^&ylQx$g(i8s zL+=>ws6%JqVeP|0U4v5E<^qg5j>L}n2fm&vvne-!T_e{hMqG*md|eVB z)Q&UBpHA#fa2)X(JWl5rC+BFEZ#-W*{gkP`q>C)8!i^>TWUbS)HFnq8E+h{{G$A8S zBm-c8x6}<*JTLPBu5&#Ov^1LM{pQB}3|S>>1o0-96GiWG$&Z&?=YAlTLSbRLMswpY zzcW@R-#gdR=BHVFG|N~oYuX^HcV-bMUg0*HD-WVzP?r-TpYvTmoVdGM8V2$0%?^h> z=ebDGf{e8AP>4Yf2Nfr2?kqC5*cH9w&OmJT#QLXIHCmj48u+gVzvxz6bbXL(4`@T| zmY(?%l1b$dUVOV8WlPORIBbI4dXCkPNRyr-!D63&zgB#UN9cmQM93+6 zY&-gnXoNSTC!WLHVryg!!F8N>zo{ec=Sm!v3<*9a@z=dy@oMftFbi~K($;Cm0B-rB z0xhi8X{xqVSHmXR0i$K$(JjwO1sA<9j`kQ+p;ieu__YSxt(0}|QZoqTBvA32{!v1S z6(^NpLKrDWdScCeEq-y6yVA&_+o6faV0A1bQ#x~l*rN<+T~)ZnG?W%rF)cfsw}n`L zL1D9v(RWlc?(GNms3q7{wy$hu!?3x`U+Bu3VUw|xdQ$fWEMOd}3YsrnVSZGVCv>GK z0OB|C(bG|hU<>!!5q{=ZN}jtKo0&7_{N{EppsPwUd2il9lrdkB{Cpi5l&0PHKO^IA zrDhM8eUi)h0JZG4o1t5*8-OJD0QP+zrMY%y;M-WSh%^KBYQm?&g$GEPj-zUlD8)SL zjL{bptv$M2=}Q9>G}K+U1A4on*%$w>g+g6eiP+o6f}Ihu#|8;=2#$S46=q}ORc(cy)1I7?(6p!b+=Aw$i3EQ!gA8mwe`E*r0^w-qUJz8>pyQ-8M z`Ml8m)2#e_jWxaa*QSTF3I3KsTrQy|IAABA9_v}e&OUXQlwYcNwgn>ehG%?U>wzxn zP%A54?}08XoMa>_^Q@i1N}A96<>AhRiUZ_K0IYD zt(y{V&$OS~1*uqKlp-UN7`;8>m~0~wl%l|uKF0;#SM+Z7YS)_eZoFibr}{?7T)n-N=8PC>>jc6;jbPL`lb_B*Uw54&JS^{pRWp7_@yoI=+;*Rtc`+#|Ml4Y$hZ zwiW*pjs>5Ly>Sb7fBZOJ?R9PEfa(rpMNGlxo9rkUaeq^M$vhPZqVNHIkT&?YR;p=5a$EG5sW8sDTSCx`ZEn3aVHeS+bH zA?P;&9lPY3hkel$3p2dpHFv1G zECQ9>I5pMSm^77~tQplSx+zmYi3?kQdEst+vDroVcwte~xsS2A(*IEH&56{vFv)G1 z@8bvB+}rpOoh^16A7RpX^Bb%E$Jcv!KB8hyHo9W}`Lb-(x%}+yu{ux)dbf)C{M{Fu z&$AMqT7hWu(oObjN((u3!haq)LiARvAWgNu;uL#^IY2JK9gU6PyB+*#H;J%!@7(>v z7x^d|gns_n)d29DQ`%o~$Bb}LmAD6JJIv9ISm}dn9MaK!zzzCv%rRJgPgtzEIWeS< zo4@+e^yk|MC_TdpvYcE#BUT~Uzl-o$>y#bH{$etXO?E`llm}%i)e$5&+9BasOTgnT7yS^`Q5-_Xii%Cq6y#IFvPw)g42NocHL(ofSR99@ zXKuoGP-3o{c;bZ3xj_z(X8ZQ?F_aD#s4tqVhH)X1&92l}-T`x=i0n}I$NodgKqw*` z`}FESsB>Q*vI%<=aJ>bd9_S!E>@ah++C>5X&)`w#YPn1ASYr-gqueZl|0ZSSDVWd@bN<@*@^@z({*@>jYV1rN^U)P1x{W#yyFo|{km%|%^+iXZ^vBQgmHHc2JU55_lcxooDT_Mj7 z7K%guPmvf$SHHJbiZ*mAZ}RPPooh2WD1_lU+n$jh8?NpCOP`hVzvHtqaWJ#~N1wGm zZ8UO+{iEppEBs3rBWajC;Slkc8VM!88~ULh3%8nKS|heE9sFb~pc}Z)>v>GF)n!{P z6~1TaDdcvXY8c<{Up-yiKAuzjGBg9u33R8KEB>8sTtn^*tT^h-aeK=ByL@K#vPO&l zNn<}Zz4NgIlR)b4@T3)wvBmw}d4}T4+`w|X$J)z79{wy!oq(tkK zT$J1Tts3l0j3~$Rles(!UL&RggPxt7mJ;znXGHS+5og+~WiIqez3{;on*kCu?)fx5 z4!-q($nvw7JzLc!b*2t;v7vU`5u|U9*k>UMcTfIQPu7W~kGN6b-x76djN{23;HiR4 z+CaaSw5z6rr}Hhg&k}^!gh!~bk|+%uC!=lU$f3oS@Yk7kVbtB>7l%?PyIwPtN+o(I83q` zb%gS2Vt3R%ipFnyW+-QLr$qt@q(JRS@ z6pSe=1<%<-v$l*!4HqFl*xM6xd)YqcDNWEn=r9Z8M9X*7b|Ny>;Nf6>u6@#98F0)= z&7MD9Z4@o_Kj%5$aiKP67w!$+?Vl_bZp4qIEy3y}oz;FU?!}5$;C1manlv#7G+9cx zSznzfT9Nr59|n(Sq`LTh>~ZtzDU|anG2J49xvrSyw8nmHs-g*MHl)O*Azo5xzAA60WOx2@yb(7{w{?%2|_djX$DG_q%|$ z66>s&6F=D&6C*IBBe7Q`N$@Jr7E>v38fQdTJ>Fg;@4QE>*O;kc|GsK=vIG^+x;GY0?g9K#+(b8; z!Y=W9dJ1m2L#-*a#SxTJ2uF`&(saAXB zyBB7WsGqUdYn4w$6;D8+s69#0!ZoW1L-+((d^X9ofP+%HYu2M|fP#?TvHKJK#f9@T{i5srg8+sVrD@h<;IBApo z`~apJLXhoJY7*xj^sO@>Kz>I6IR z50Y>YlG5bZm>^+}(uEp59$%Z~$r!p1J5@;KySUUty`IQ)8CJ(%RhC63`O^CfYzzV& zDCu8phRpxC!(mCeIhctE?_oQS=5U6|)YfD;O?;2yoo-eI(3v%m7?8i8^h z(h~5WfYkOFzm4YAl*|cYQVv1YEAi-ixx3r09wc*{G$$pG_X~&*Vovx9%1 zSTUhgxIJ^zj+6WA0O=q{roUi|ZmQQ&PY8PrlJA6qJipgoSE8u>+Kf}3Ut7v;5?Gnv zZg!<2M^S59sd{KbIp7MquVDOVec58<%z9l`T0>(8o$Bqc8(YniFg)LR+_G!nh-46M zS`dB%M45>hA@nJK3E%Q>J1@OHX`k4>zU2pVQaS-WXJ?9!t6Js}NOXBm%V}P@e#TFu z?Pp9`+QO}ox|zdZV~d|FV-iy0ZsN*SS0$CKY(blRqH|iKb7@d%(i!V`5npHmQc&r? zqTt!PMns|o?!``Z{=`fvbsdUp#h#p($LbLkdr~!%G}CU(OOsEkU_-I(Ny11+*a3xLCna<~1|WDQCKjguIL@AC9Otf3){4BmGMw6VgfvEEH%r1w zjjMU-jcTa36eI8bz)`D4l%N`!8RvRoCoze9t7RP(;SLr|{s|eT!8; zw2*X*ePlcS;zYU#n`?x35DA4NI9CR_7NbKFoa&IxgK7??P>WS!!=R0vKl|b7H@7ou3JK^b{Y|29euXc~E;Y5Hx&vG`|)XR<90J zb;W+i0Gz9H7p3x8Kxez;Ah-LXF7qSQjHi*iDD91o$++z0-%EBn`-1$y@WF&ph1r&s z6r3!Wx2DU&WxGwL6o~&0--tA`HRJS!xylx11)-rxX<*FfEwg+);mOrRaW(b0sO+Vh zWwjb%{1F*28>xjMG?m5c*YDS2s&fkg;mcZV6Yw=-@$rCmbTQdim(nfIqh6z1!uK+$ zy7lu0UVqNH^32=B^?E)fYD2W3u?3WD88evuB~oBHzjrc?*c5hI0Cr7fZ zV6vfUy!S^}R09Nfe0tlR$2@YGnCAxFu4j7oqe8ou5K!lBO^15uy=Z=g_hh3;Ll}@p z7PL&rqCq0?cjFi>%wv2foI%j`Mi%H7Mv!pNv+n4*{ls~}(ZXQrpIYXeXH9cZfz5VX zRx&UO0yC$u$>ys@ZWG|7Nl*3oP(U3DJzYA@xMMmY>CR1Sky z-*%34Lrkqy0!fk{82am^c=#nS5rHKWcv4U~3DhK8t0?i_j&99=DED01p4{|=(?VHT z-_I>{dAf}wAOLM`O39}>>&F-X6@`t3^w0H_dD#MWc>V~0MuSTvLR1(o zXlWPN0XiRJ;TKkyg@T>qn!&dU#iJ*OrkE7NPF!dO7DZnT{rc}H{etvV;fVqoe>zOl z%)Uo2D0UvAkCcXQHMCFAKc#)X6^z3$rVb7am_>D3Im?Mr#YbRK@D+mpUK$)}IM~eB z_P66foqRo~=I?n(D;p(s!U6{7kY?IvCAxF;y%HQmSb>^1u5_`25j{?`^Hl8<%DlhtT7M?xtq&gc5 z)W%J_k8wm&ohQDhQ2Km^h){^jyghKqxA`SCH^&|&_d|V=bye-~+GiD;EdX#zO?#S} zOWtTCEGRNAgf1?t|57KIzo`4G3e?W>T*rP8gTuF(LvGP z6nPC!&v>L!S+BpI7K?Wre4SY~E+7BNFK)$?yLZvwQD^0c#bv_`#R5c?$a;2Q*7~Z9(OB&{UVI=`N`5h zW5tq6e0*$PTb;ig8T{2d(bSKiL9-=ut7A3AE{5jpxqBN$OHx)LshyzBqS^MdOEt?s z2}bA?uGMS2wruCz=`mOE8sz>y2@c2_nUes?YgmC}9HxSJ3UQIeVzPJYOHP{r)$0t_ z*Aonmb}C@5GM`--#thkxHLNGkki09$qx1MI@jq1~SZ5U*-|saq=>Cv`FTLT<5DScb z=xx2?IE`$eKjU_8Rko+uo#%;iYtfsdtUNy#yu2M%*H$85^Sp?a*UyCtDvx{;!!wu| zReF5tIzn;#bs(AtKm16M#(c2Hv)od1`lpzScH>+3l73d(1M2{fNm{1*7$O<)Oh;i( zWeWaajdkNF*ZiiJYBr_|JJM!yfcazj$#vNTsM@7PvBS8h?wb!-X45v3t z+Mt$OqavF1P~K%^o^4HpMr1s;m?^v=_25aeU}l>xAN;enrGTg75*>@%LR(Z??tuHO znyha7?>daQJ(k9=BFY7M9z;NLsgI69FDt4{rj}u;dnB=3*Z>xqFfH{QtIC`wGNp`2 z?Bn}5gZ3)E*nBwt39Cho1D%}U)O%hyPY<1QlMk}bH!+$mO_i7QYK@})8bV4Gcl53} zd3oe7nnbUjs%f|#Tpbcg0%H$uF-_`C?UX<*z^9{g|Kb$VZqpCtj&@xPa?}Rj~9>XrThfaM~Z)>{5ukCz~ctd!~zW$scJWQujJW$i_Pq z&=}AwGk%m=SNTx|sIg?tSu(KyeNO813{J&D#pQ0BoE>v2v45FaUs%y@Y=7-|NIGT~ z=v>Vfj`G~G^t+S(RTDe-xTPdN_xpZA>HA+8!*C+t*}f-SB*403O+Byh29ZE~yfHqI zzMT$OK|9sCvRPa*%YTXo|BZ6~m9W#8cM{X46Z33RgZ-d9pI$-rck{1-ddd zET=z4wi0_WSTxQIX%vyA5DT6O5=ocLjLhly^hzCyTZof!RDCr~IBH+-J-{p9__B;p zUG!TZ1je5Y*NTSbY`^E+RvHbUS1}t)8=pP<`}|hQ?-@N99X_eSsf2$zzuCl@XG9$78k0wSU5%Nzy&Uofai>Ir}7y874N@=VBufd8IsR zaHE@z!hUF# zAh~WXaP-q{`^bhS=_|HqW} zHtrE2&=LynPFH5GZ6ZcxJ;gtVvBdR(oKY#gAr6N*b-tshv^S;*j+6Nct~c{`T3DCo=A$o@U+nQ(8S7_X@3{M2djI`mxoof2`)ZU|9l{BxA_gqU9 zp|cr+x&<;rsH){3Z+G$y-dtCg1*;nB@MMd@2T{hvgHiFq*ezzmpKN6}SD76FC zZbyCts1K-2o4opA8I_ubo;d+HYy+eB3m-T48$Sz9@&IK)S*EagHhb%F%a=mKfDtzNPu0n{4uT1*2Wznp)F@D{}x7TJ_ygYYl|zBu0wj5H#fw zlRc#>+;UHqB*`{=cixhs3CoCrQ%U(oyhc2@f!p;F5$d^xTg!TH9$u?2)Ll~Hl7hac zm9)UvL}fWO*t_i=O&Eu|pf7t*9N`7wuu3zWp(si6$LaAsi#L=4cykt%*9Plz+in7x zwlI0@1Vx0_!n-304yVQN6lJ!pc=^;_-8{snU`J-U4%8KX^D0G2O+r#<=1UdqhEh3! z)Cm~k5_p#HoFWqB$5ulliAdcZm4Vh&+&0}+r-?`j_(s?2bB2v-FE0D-3WSNzbbTol zgYf%^V|J@Q6d&97+&u^9B##tT4t(V-6r=-$L1@^78oUE~B0+ILbM000BL=5_ZlQ)U zmufIJte_J#oad>wl&`aS%fR_;oB~>V_y9$%`nBku_nUj-1P&JJGme9OtfwLy_f z{ztel51=WuwarlDcCD)>~yj z5K}Jz1^sc)!NzG+w%v9q(LS@fHN9H=`*+{^Gbv}F;0~4iFO$%iM5faptY(cGJAdC> zUk&wlXbHv=0o#K(DwU*|&>Pe0Nt3bJ)_(BfzcY%gd#ISIgZGE1KAp`1gg7OIx0aJ~|%%H5)trCiTwz69jq4vWb z(o)h3^kLZOO6bmtjpouSQQ{YzoiK=C2%7v*fN>@t4Qm+5K?@U za6TI^5dh)`P~A8`v+YiXq!PS$aB1JO;u3+Yk8A?({VWlxJwyS3olE{MGiH)gFV^1# zctysM|HX;nVy?#D*;FC`R_`-4)SJIU1!|tG-kr)MKc@NLXnavn9FN@TD{TE&HM&EJ z57lZ;^D}}|QHw@8pxZ<5z(FK5Ih&Lgby(o#!UXz(@M!SW>DLsVbE1n&mq^diLV+NL zFlL=a0#^YFkiCLVba3?I<5kq43c-VT_%$-s<;P6~{VQ}&X@B^?2qpX>LxN15{3hxD z*Uzs6W6&Db{|!^66X>EZ<3IjSFJsWXzp5Y07>w$l858DD9YY2;z`kIqX+XMz?N4oE zZ$fegq5lFS=;Eqtg82hBk<-uC^}!m6t^%Cj+s?!WZ~>k!9A@T?yovkoEdTd$%-KUl z^Fx>H)H-%sWEuSj9oCzA7>2ZYL-254&jms>Hc}*KAF+kaEacs;ZYpO+)+!irf?!xyCc_%EU%k^L9uHp7ugk$7QUzxg4& zCCPhh#p{TWf8@$W&cH>c1Da34`N21Wskb4QE;B(+3WBzz%oT=o5sif}ly> z&5IL^s{*-3*6j|0PDZdG>t+T)`$$g7q0%<`^!cRaM3H{2?miZtu%o%}je8nI0kZS5 z+sr(^x)o_$(VK8guoo|1v<-!fKHZlZmAerwGqw_0_WE@wFWm;P0q0wh^&)C$kgK=2 zLhNYSBC$)PoWR$}oD%^($XwHVf(y76V+@E>n!d)%gvp$P7G43*n&=X}nu3mS_!fRM z!V@;V8?T+(!KtEztx)vl(ZT7~MLH|Wf4pwezQKxQw?S2ytE6!TIlDk>r!RZS2;;AT z=Spo(2Z|zdZS+UAwrw}g_gMY3QlI(`G08qAmp=J(`slFLwZB(-1^ZKi4kS(?-|uI2 zIxW`mjG0J-ap#ZUeIv}9_-s!4dm8D~W7zTp<>A=twmOEYfBn%kS@A2wLbR2tsstqT zapi^b-MSSx7}glk7E^(TKAaivdzfc*{v+s$4F|l<8GMC$+X#t~(t{O# zL71E5;o>#Za;34oLLzevGV=@L%M`ydn9KQ~#V zxRtKK&hTI4$4cvPKU&NAoVPWk!U z*YN&iT|y8AjFDxDTf$P;UP2JYVm`5NAR`L1)kF8A3so}>Fk~RQZ9e4{8pjM&s!hR2 zfhxa)iNeMwFz>_u6+|7T_?_Fg)}bwAhbp6wupoval05eoDql$sVn3)RJHWVVfM5nj zH}3@pQM=QgksuN7k!&Ts0lj}DQvex(pL08*Ox)Ky&-Mu8K(vI9A`?vyH53!s{LGF5 z#XqW#E>KD^_ok{y;1E+lwn%sbAglY#|8l^{D%j!5Y}a`cf(VwVi6V-yivsnEtLRxU zArKIWWR%mjPh)NlADu)x1SKJetlhCVNly(Yxr=E1>hla~AAoR(y!|m&qj<)|2Vx3? zPM$<4oB=&C*;!Jv#d#euL7iT*5%C7e)orFuGAKv4p-X3ZWGEal9fDtX;;GM7Jjj3PV|EU; z@DbS&^Ig@R{&Knvl-y@>(pzpn==3_<7P0X)0gPSNU7VhxuMf6gyaA00d{wd(&aZ+_ zNt}~q%Xo{{9L;&luGY$UHUh|8lRp>e78yhSgf|fU>NkFR2)T}CZubM&J;b%{B!{LS z?TbY^yR>=(%nlSZk9d_)#dG>Fr)wM`aqzvjB|X1xgRCa1#S18r$%`i}WG-q4b0l_N zi1J#q>~zji1n<8-fGC|87YpGlqJ5%emk&6Z-M!{5bhZ<(K|OL-uz6iDO)=9Uc0hDK zdT{ox7eu!qt^|dfCa6WQ>!x(hqRij}8@MX)Lc3R@{kh(c??B9tX#0JBpmzxNF56|2 zqH`?DWP9z)DOh%I_=G-}-JrQ&8McsLA#lD#sQtbv1iWSPrtF;w#0TvN`;tCtDjX&4 z4Y)v@D0=_YWyhJs{$Aqb)+z_pTQ~FGpTcL;RiE8K)q&&r`gX=m9_9(&O5t-at3;-tdE+ zPradb4tk@gi|4)Y^_)SnE|?3XcWRy9Yu)xv=)bf4Z{ipP!#m^QHzAsW$d$n`y7*X| zA)3I>a)v*5L0cosR)EoayP4QRTMMFUV8OjbC3-dlG2!&6y%A#DhEkc@UR5+|U2P6lI7b34+y1*V3=Fd9uh zNTSGt`S-97c`RDk{Y!FUlGeJsd~lam=4T%*P}uMLq}zJ`wB#UzAR|e1@$)y#8&&Px z+WOKWsBk9y5S(=IKT4ZCu|l8o8p;~Cg}0gspz>pBG(qo_B^T}6UH+NgTAR%?`q9?M zwpznz?~TwHor&{A=|K-o@bWY)Yf9$9y|a7Q>Xzw?-yPsKBpPAEXcfm>pUXv;ZdRHL5b*$08+GOH?K7G2|^txkOWXLHDevjU}7 ze)xEIfVv5fP4}(-+>q*3n=>2=t*Nl}7V(0g)J`>m03UgTKSjo6?pIrw(<4W4jEXCG zugn#P8zeuijdOLHzuqhIZT`GP-zGPEe#m8Y+8;PQuG*b2YYAnl)^k{IQ5PZW@|)Uv zAs7>8Twa~vyF3G$z%VLiTu~!*n9!wOWA1}dqj*kG7>Ft?_o_iSmh;FTc-RiPhqci< z-1m5P`VCn?$FmyyASfS(q*@z*obu*)lMUdpGu+Y^{%v=_C?+cUD~gjY%C)ux+djl) ztYPERJQN1KzOg^sPZm>O0kBC@5#zR#qnm+7dMJ90fk^BpxPmH?%T7iVBk0Q+1ZGNa zgrsUDd)E^Cv++qJg=s7X6<09PPhA0{&l#szor9M0sqW^ZyPedQiX#dT+@5eqMO z6n^W@Tin_JY1OzF!robRTJ^z;rn}MwHOqCKMrBgrF3on1 zzl$2t==VfbY>Z80XG1hu=VLQ~{?(D&5y=Oqj=rT_bi8I6a%#xbkYmM^WH;_CQ1Kd2DuqV!o|T}|G1cpL@|So&Ta;WeA1w?^ zfm!*Gq-Zs~&dF;B3`?;ca)NM~JagG31gDI1kkpu^0VOLpI^~Ae{Wd+C!9h!xoOCY~ zyqw$o=SIw0a4y~4Sxrj6B^a#B@nXqwN6Vu;~_CM{N`+hj^pEOM1LNs^C zNJCQRp#`A|DWmOjIE2~5lA@I_#Ft9Vz!B0Fy6k=24|OYBJ&4oT@+nIY`lJa~*8kWo zHgY8dYY=L;2tv9XC_)Qi3?;E-2lCdHL1<$*$8&uE9te+8UrYv6q<1$$1`{FEm42}r z`p9;{X`%`pjBO2ycMU?EgmYvum$EdS=%zdOwTneqa+iJvP5!3%c&kqwLyJQoIx{L36z7a}g%_+M}U zBx~Y-xgw3_f9r}gCPp^q|FI;EiGzcS>wm6EWBYHcNn>SW`A=)o)|T{kIBP@|UjE9r zw$3DqK={O0JCtE*Lv{x`w1-FiG{`Nn(C7((zr&xi-IRcQCp;)fhQR z^MNx8ny6j6Ur1SMw4d!_pxP+6r9J`#13aA2-e+vAk@;qGq1}SrPBN zJcm5&Xj?DImunhHZr`|Ade4l>8m+4D)$Yo0G3?nBISOT!62RH-KF>Jv#gkB~_fg5{ zRB`_$;oeCPPAR>4pW4+)=H%C3b>SuAQS0{>^7*E!EK^#+@OPx;s^t1^WZ%Q4^<*iF zPu1xp<T>mMlq;AOezxG~}#A8Iq(K@(2O~L&hNt>2Bcne^b46?}t;T>fCeAr`glJcJHU3 zes=d--Ces2SX1npAf{8s`~D(4<Sr>7BDnA-rj51vRFb6oM}ON6(@LDjZfs1 zeDmikq~5m3+Pe#LH+b?lKJGz=7jpASwEMyQKm&S&c?2ogZp9HszOS3>Jj55eXM%Dn z@(A&}(fM0V@864R&5)M+8=LsoRGy45Y{cKXDp?V$5w2K%(m|?1Ybu$wv$&aXcI8Q1M%hwHsdG-SaqZShY2fz#4UDw* zdSXf~^OYg@aYiQ$`hL@-cpi+8oTM5Xw{47XhxmYy+is3oGYQanoPC{6cC4U&%t=&+ zq>K4nZSWp-#mY=uy)c|s`#c^xf9DD?)Ndf(E)OaUBED@J@kxhP=ijq*z-8X2uHZB2 zXGUo{>H8(g`u%^T*1TVw=l5a3XoP>WeWSQ4VmU;TW)cEzn^@kojB4sH=0=@thn!CB zQ-=k@&e;A2hLiX-RVdj%PN`aZHz(t@?# zo)v_{@wH2Y8 z)SRJ+meHZed7J%uW47x3!^8xweNJ#I^Hm#g;=JdGZ;%t*M!*wJ&%HYXoWq?x#*M~$ zkbz5BeF}VM@TMT|i}z3y%Bu?1V!f(^Xg97MD*4Z=QkDq>2vi-dqL*y<5QeR;9vO!%&fkBE^7lyfJkO(Cb5W^pV`d*T=Hb=)caJWIgc**f zpdBsqplLFmiKf6eISD^m!Nkuy^D6Ktm#yp%#-h1>}HpJ8KZEb-qY#4QV1$tM+Z)R_}G)FI}2~SP&adaSG?ix zDa!bvW7|Pdns`RNeYG{qVH=$eSDHr*LIT zKF)hTf(;JTyTLHJy!vHbu6nx~e=p&WWCd#6*{oGD0ktC$2(lJ-lnVc4gQ(NLZ0J5b zvDofr(a{N5$n6)_H- zeQ7@r#RgT@?wlu|Z}Y~nbH&TT`(E6ywr39_T4eX5OaJ3t4z3(A7R~`B%b0``?55V8 zV~qQK-{$ct=ing_BCtS-E31B!&=>1p712*a*BgYr>)Yl+Bpbn}n2p+0=?x{HbywsL z_&YlPpizfQTz49!5I$2APW9P+XR<-)`76j%>FS!P{dF20czQ)?!uwveH`k*IK|jVI zLatw&)7-pNK_|#n;9#$31Z1@ry)*fQI$e!M1YM!1MP;{u4Bd z*d2u%3+YlvxRuvEyFUntd`00D2vQnuoB(H;`qvC}S@5CQ-xGr*F>2jxONSqCZ$GN| zN+@%)E_(p+J#M7s_7`d!PL$biBao^6W}963?PYK`_>6fwwe7}kvZHNtQ{5I9sw6dt zlC;I$@HKKbr;JFLKGhRZ-qD_Rumx(j$0Yi#JuC@HgA&<4KV&lNIa z!Nl8_WS-RD^!N(8gL0nJv+@k*bn&l9)Rvl5pKM zLl>m#dv#~?^b*W(O!1u_-uYCw!uAawdh9hnZBsGb*)^k6#(3_Fm!K}~N&bbps9mJP z@kg5H!qF6&o=~tSCux8ARIOX!=qI`tG_8E6F)(*vyvfjpci`&;KYut8aK=y;(3Vb- zx0{5g(aK4<l%~CGz$>2w?$^+gd_Taij=zw`;N8s@qiijP#W!`aL*H#&Qg= zT49mxoBCluwXrbBE@q5dX|7b$4o>{QP^!YVzMdY0Eg&q|uaPZ+&VRF5#OqfvIB1(_;-o%Hr5 z;EDOD&Hg3r>5p_fc2W*_Zq$5^>Fnt*3odQ=Y^F~PA69!)7IDmqFEY`gbD|q`pQ**f z-Ng0}%KLjG7aJ3ENyzMGRL~%vNR@|uGFAc+L%V0+d@W?TI-Pgn++V>+b10Bxiuv`t zidu7kpDhm^5ZV*`rj4}8U0DT>=Ph#dhtX*N>OX2Hb3%dA3(LGfrJCtRtVsr=OL$Ov zN5&qo6a0>nCH%V=6Q7UCvX++rh&Tq9`e0l*jC&W@z8UlfR2)`aWXns)Hx6%moUGyL zrJvF+odk2BG~5pJFvu1`!h@h%i$DC5G8&Xhg|9Nj{2FV1ep$y78ZL6YU_ofc$PqDo88U0bdT7(?}PFF8Ez;HbsKSmxR5t=^)BTduO4QhKg$ zGGZW7!_`;?MDz7*b{<2A?g}%9@k8vbiJ~*Zht@0vI_GSw86BvI?;(a2EWvbzs0S~# z`~yrYq%&}-P7DtRGxT)ha&8y~?w|FP1YTHxdXorI=#yi! zgMG5&Lg^_SwPbm1EI5{}bWqLN@?9OA{_Z8$FuQ|b6L=bh{#$!u80JK0j7bqp#~?5< zF~XL(D9C{VVW)Vah}J0Ao5fF@X5M}|V{oW`dUV+a!bl} zW*50f-erKrs3CPIlT6k_=g!Qp^ujui{q84N;NxIchC^^&>4jP)Ix$UKAJkn{HvaJna;DZhuhuj4!o#{ zREnI)c9yvVg!(ke#0@Ml0+CtWnSknA8f}+Nr~1(WZ_iWJy_AtVtgxo@>6j?HYgyG_ z1knm!JFfqBHYZ&M;jmyt3Z?O)gY>`j+#A2f9!* z&rU^q%iG;nVz7?2E+iDpQhAj4Dj)P0)ZOn=Ertx^$Qd%ToKz`3!l=R z!_mej1rUYnK!I}FuMHoMI%cie9q)<-9iEickiz_KU2D-iCuG=$qhFBV;+m-;U^9M8WOIYp0hiu2Oe!IuTrbef)-4=`YfX&2eU+KEnw4= zD_A2AD6$g26PmUbCU9WIgjs^2Z;<`tMt{t=Mc*;5uaLM+>3gkp(s`xz?F*$e2Jlgi zP!W^u$PE|dcr>1~l`h~*chSVQA*uXQsrj9PSPoQC;PRPFZoFxK=GXNpd3^z}~v;E{@PSWEoegr#ayS<$G>ap^V0J;a_Hq3wOG}#%J59P56eR zOzC2SpP{Omg42dRvE|X2F=!g)SX2=UK34GT)24B#C@9a_-6 zP9<%)FhlJ){n7WWbI}Jcb2IIqF?*s9+>^vEVfygB^3lB7b#Y!WT~;y_zGTj*DS?Ar zsnDGMWjm_7{1=)gPyx~MKY&}ggOsctrEGno*iM>%TQDw!%KbGSG@UN>_w?uGvtt^A ziC5=1rjX$jLM9p?{E(t-T<6`UYiqmk*rGKV)dV6186Tc^P*LoH>B?ouNiG6TrdrZ1 z{kX!rWq1a!J2f6L$WE_?D}MF&V*zSz$yguxs}4Fu0qu;mcSclGUy;R3f=4>=;ihRz zLy6|hosE|w0w@QIwXeb%*|5(|B5|->wmfgEw^9X3&|o_lgTazzqlg#K2%Zq z@Z%Vzi5;ca&~;o%*- zl8`7LJ^S&AR7W1V>HZYjxt$l+IWCMyXuL^aHw|1;R102o#Z$l4VcDMEliOH&mwoPF z?MavC+muFr1+UzED&F6;)Athdnw3)Ed!0xC*_DAC68FNP(j;Xwe@bC*dwm9LkP9%9*_|-H?B$h27Dp`8P%Ud?a{8E;E zTX@QjqV=Y%d2r=LTB7_av*C5S1d#xatEY<6zEl7mw$yV(rq|s62NDJya`kzo^dIj3 z|52tmOuW}AS4*@dzu-DZTo_Y4<2#iM{^hogUPdt@KHGn*z9GoE-s{L_bNd~<<7xt+ zGejLOc3y77^DhU@kb`l4Ig8ReA8B5NjA#&Jq4D{y$n1lwmbmV|ufW%X%T+U94DIkd_8cpSU@8>#Bw5y*OJ z;GvIjJkO-bq_A&8$$q}Bd*E4^L|}*TqJCF%FKR*;@%>=8d@XMxldUlWg+j!2#I?SD zBh)FdIQM&E67C98f)ssj!C`i24PBg6nD11uk2~JAED+bYc1%T8_aF zZX83J+--jad2I52{NU@$t8&HrG3N;HQ6KU~;SDfm3`Vq8{I3uD%J=HHJ=oZk3 z{PypC))>ttJ+e~=r@JgncQ;6`Q0;m~v! zlIvvX_bHf7OZ9!DlxKE0|nW|6-hn|>k2KxD^(c}{g2+k;K&lo^;MGXbgSVWtDJ zrp)p!&MzyJX|Bn-J&C=$HL49CIY@_|pFZ9<%Q}9LUzyne;bY^bG&h#9y2J)7ef<)& z{jb)Wn`~oYPDh`NG^xX*-49aG%iapzy^Q2~A7|C7A)mZ#C2%VV7v~Dx9HO5Pic9Lf z3_$?AKLg$!;Y2ayig%vT2Uzi33^o;s)%F{RGJ**upSLvI0Q0v&t>Cls#{(xZ zoZzf!M)6-C%2@|@F8c*8)U!A#9@KEfTfME!J!(>%Krjo@OAwYC;2{{;@!<7Y*-t$y zcQmwIGF1H9h*~I-B5%E+oJd4-K-+m^u;(14(&~6;&HD>JJ;~#1Oc^xZU!>L08x(1Z zNcHSy(G3cc17YDsc~b&a;HmO3Q~+oBJg)XX4N(dZ%!8Jn8kvyTMp$+=$EbqZmAKI^ zS$^~vK^O0lO%C^DkR_>}2WJ^L!JgOMLSGeFIw7j<W1olH3uipF z2Fe1D-SqO4heenz$!ukm9g?H7ps}6sZvnd;8{kogO99@IXD`6-X?2p>6}llOTmfi zKk<0-}m)`*=YWpUw*TG7EFP{^0ta6cP8JQny!;vzcYwKaGgAp8=*I2Y+GuUi=<9v$O zXR`YM94NLrpT(1kW>xCFQ&0HBYW(9e?%}3`c^rz5T40OX!G{aAP4%SI!Pb?lf|6ra zX!3)GdFN2QmUT>wfm^|k-`U?IP|&taXY^2-UNxLrBis<1hAjns2tn!AwZ!V^MqyEf8Mby5=MR%8W*=UDS*nb z5g_hy=hu{gvHhW*i-dYad?=Y}i4*@XGrwz(GL3y1l{=;0;KDE#2G%jwQR$3)OXQoD zjoSBJ@y*^s<6|o}HgaR^?`F58XK#`;+^OVW9}$p7eH%klA*OVCm2=KcNL5;IZ{6aa zlo9?qB);V^Ot88U(OCe)9HO&U)*sa0q+myhr=_0lJPluVcw$3*5F_IC6eLo$y5VvG zmkVSlDOlE~cO0InDsucCSD*ox5|WUZ7C4LLW{@aaX=8B=l7mD2TdE$VDs;Au#Y=o5 z&w|B!ClRMgmbkPXOdK^Z$C!QK|2e~tS4ih2Xg@42QEPj)JIZEfBJV4qZI;6S6jZu~ z+CbKi&1lmCUpwwGrCR3E=y_!R2C56!p9=5ZKGG-EsLFZW!4-V88?{=(GKFaGf9 zd;pf3FMw3=z1WTvc_b`&+#@_co<>7Ti~eQ!(ao*JJRF++;?%uo7+7+6HJ>xf%|j0f zB_kRfWPO19R|Bq;*qdat*_6c>S!DDr8A_DqjTvN_SJy*e%d^pYl+eBI)o76Ee#oE? zCkxu-TRXb>lmXltmeI%NtbRZg&xslpCvwN2J8uAqCrdPJ`_1l)@&+lMm1Tc7*Xj@d zq9Sj?{BSkqYPU|Cg67hGyUKCG6F$dW}XMn@_a>s+Zv%2fXxlxGCzV|Jn>Kk6L?Sl|CG|>~+kcDz zhN=G2FM~N(9}{4`;h2J^b{cC)Gw&X(;<8^$^^r}feS`ay=F-U7&}Q`}i8B>m+D8FA z&AZ$5|CZGNA)C=YvyNY5rqp$jcrH$G$P+f$P#=3^I=`I$zTjwpD}%g+Q217gv*qT8 z)fr_-4otze4&S+=RpqQ`oi@aiCt`QS`4%tF1Kl zJN(r>^GZfSH*@^4{0*)Yv~~haJn%DSUipHRJq_)RfEW4>f4B)zhilD6BpvTCRkycn z|AwkMa&Iew+6A!mb0OAE2ty^1X^w5XDS3j9zU)|Cz4O|-48cuZcGSnFe)00vq4EHI z`1en<`iq2*Q_#wq$QK0wPsVYa!*KjqCMFFvZmhWA$G$8|F%4Z?9Ud|#bK0;qSM{b2 zdS1@s_tQzTUagDfvbd#T^2O1#b2np;8#B;&ICI7Jk-ySaII(Xu{&n|iF+EB>qI^cJ zmpH?25WBVVy5qH;C6prX>gRt zhC2LHBe@H-lzs(;YcRMGm7dP9=Nsoxl}x``1iUN$32GWD&ZvZAtJqEoASU} z>|-VBWa6avaV?H#q)+E18ZieP_t?L5&hw`!*#G3A!S|0Mn1RxsyD4b6i7oPQzgZ+p zaT2{9Gc&Wtm&Bau)%qY3I&ahn2_9uovPnU2>mBM2L4Gt_^4{;%fYYb+8$kNM;t|%R z0_%;RAB)dikXul|rjtBaV4laHAr;N6hDTkng8;`5F;MBy$@C`hoQG3Au#@>q|n3NqHt?& z${#{1!I@rL3Cy~_e+_Ey2(X!-GUoC}qs>hl9p>io+Xcj!byK)dM=W{n+oMzcyaY4- z>7I5HFbun^n4+icRPKq#fgjgf$|zC|KcMe57iPC5$lgt! zTQMMtLWE`{Q_1^)H0F&`BXr0?9>l;i5hI81J~+fWUpcA=SKE7;K}QqptXJx=NXWJ3 z&?@*z1FqjMm<2>sK{=#zKqi{mHi9a2XzR$dXkC&lQ74^e@b-JF2U=wtJ*`n9Kt%5- z7FN@EGtO5&19dh=X3gpE0Ix_1w1E2QXe@3MS99Ksr!K*)23+)&yLG+vJ2GeB{c`<` zfjI>bvCZ>qC6`SHV~tBN^FJN5^g=Tqf&EWXe?PAUOC7|16P+3=_djoAaQHRtdJjf@ z#DJp4I_3>>fIScA`DH;^O;I8a0ETmskOsiK^XbF}%m6}4Ah-0@V@aSK082@FX38Yw={o#obeR0BV8oHLFie-pmb4!VO0R%F|a@ zNsr!TmPkc|gT-lL9!69OWB`4>?2g?h_4*^c_912Gydu z$wToJEfedzIfD-)9ep@Z{kbCL8$QLKxM@wB!w8#Qb>T=dhp8zGP(|zOum&){KtYFm zmP_*xMOxjKMbbCAP+SC{80P3xdCF|NJs(EWV3TRt*(+v<_zX}`R*&Opgq++V`vc4- z%$9o9wM3;A@VJoZGby^PHbC3B&1+$*nXOe2Yc-15+aE-MRoyc5hco}_)ul3U>ko(F zZk{*cVskYH8Hm-5!?h0g^fXsr_k(ttUox||^grxBYP8AtqkHg2GJIbt_!bo%7MUxV zSqLoR5#n%4}(USM}TKu+rC-%hit@tbskb*C-+CTd+#jID-pIZmQ%L9iM9M2`&Lia{VkAhn zT}?eY35d-(xprvIM$U8sG&}t2zuK;V#BABxgQ+C3O~^V~)7| z`gY7~Vxz{l)7@XXv|6g(DI|mv4@+!0$VnD&`1E(l=I4Qj$28$vPJKcHq!@9A+d4xM z8?TwcoDzZG+qYL@L<2K7W`HxG_OoMq*>e-1bt8aeDpwuMH-a}_%vM>Ac9Q)9&YG8o zO>66bF9HqQZbr{|_!n;>k{dz7s`@M0|nZ{GdEIDcvepMthGLJ2sxN%{5Ca zbkl^Y!+-w(2Xbw0{k9s`Z*7PmqxU|{;AbpK&Ou{m`HVMGB(JWcUQSyje=0Br<@lYH z@G}(UL9827Ja=Gf2Qt>mr@OBYrkcP~wKMbQY37^py`s{WFL=do@%Q7#Nj+(;Azt9Q z+CLm0aDjfKKZ=IGO=OYhy$E@Nf&am~xXyjVmOnP@EzcCRpe9+L&@LFucMKyY!;6}k zj&E=5qM3FZetlpK=mC}ctnb?tMwF!LYnJD6X7HHA&$sAhZUDw0G=!71L2M#)+VJmG z3C^go3I+^2%5#==ls{|37+73I)DyS27MjWcof7J9zrk|5x-BOPMwSN4ka2r-X)NDw z>C*`Rq*hluaA2U!q%JQiBN@|u`?K=ux&{^V;LT#lZwcTiMgJ4KZ5!X_eyaJI^K<5T z^wA$Xpc_mTUIK5)Nf({pTy|bw91Tp|l)gr-|xamaT=xxyzU(kG$N zw)WmEmibCK&@iiHIo?H*;ultTu(9yU5Hu+Gxv{~K?}uA}k;!usTbMQHJ>L`E3}E5) zfk*$`(ab?>L-yEl?*o8SXLD=8kwX-9(cWzVXJ^d4U#k%gry!jpuJBJ7;>#i14?50V zGd_htv?GnY+JbdPx+cJM6)d$)8F^yzS6YEv2aeo!_GAxWqZc~yayi|=?nY7<9};)p zzAE1oKGMGl&e~oqA?#v3KRMVp?No9;9)*vXbbnhHIC+^+WWWB8ox|o&m z&n=6-Wc4%+I=?&vqMaPLQ19H^rH6+{%6CnX5+|48_#qb}k_h?sT+9xTRmo;EY9O41 ze-jGxPuvBMyU(XIJlb3zy`h(@ATo4 zW$VAn;O4kDf9yMrfDBUdsqu^{=n(l1D0Oqcr1BOFbJtB_Jq4}iGTy}Ev*}=+9vc3- zI`!muUGSsb&{fobGDIR=TV@rPq6t5yvh=z zx-SerP$I0>UHnt=_qQ~fAPgRm&Y^jqHGQKth!!wUZW2YuQ45Ab$fqZ?tS{vNlOcR< zligmA(@$_~U9X|E@1a-eMyqa2)@vvlmRj3KC6KP3wB1auy@EQxCt)7adQ+qpms=bR;K$EEawAKI%}=eb*!)7giFLhoDu7g}^I%YZ`8eWd(Z<0lkXOuu zs|KOa%@vQlsuXOA#g-)t_=qSjaKfPA51m{*mT(`tq?=>E;GT zVP}R{zO-k7-JZ5|a!MxwxhqhHhOQ}!-rT3RNBa}+`2bH_nd2jaut24H?Lk32jIN{-W z-wH6Xz+ufAP!zR|O|dq@!7`CBsv=COk*|Qdhk0XY|Xb^0(neA@#4Ea8tuw z?*jkH)gAZH!0aL}&Cj&qv=@J`=7j&H4VIwbednvGcW3=q;QlR3(f^J3{FOyT)+; zCwl&$SUI=yKN#izM9=>dD_0&^y)MV$zoX~Zto)xW=HJcNisV1j^J`Wfd(GUrI{(4^ zqX_|}`X7`dfC1#<Y}j%1R*fG&;j}p$g=jR zxehO2LC7vjMA2j>LrUx^Ns@fu1}xC-;PeK07!^x(zi#ga$1P$K%anm~kV>^Rt_SnC z9p;yhQwi0gcu((*DT6z4p5e;~+O8y%Y{b`eBv=4qU?V28BLOA^aDEcpa0V6Iuh1$= zD6Wk7s501+GM_ZaqwpiF2lIpZ)F;D=lLntTdPk0JQ2R;RbL@pkE8u?ah`-;7&xH2P zpQOod{EF1ckkUSoR|$EJ=<)}DFn1FyG$Qm z(Vw1z4w$`lRHc*=2~hoS1!RiB#*ZYiSr=KqCA5x8eue&4O&g}jI@&uoarcawxgq1F zTqLjJqppEQt|)VFJ4u?viyt0ibzJX08{|Y8Mm`gnD(QVCz3fWI0k_uXP)Rd zc#Tan`!+LZ9mj|aEej83rP4X3&Q_y?#qyUCF9xlO7KG0#%f?S3B_7QAmj#lBzly!VZ|27* ztmj*>mG1`8W~~^;m|PSe*F%D*rKfFpQ106%gxI%bUhWV7=}Z`|M_d@Ue*L|AI@r4I z{^XQM^#1P=&a7G*Yck8k!*%seRRIGd)n8uvw)^L z$S3;LZ5nqj%YoZLi7V>ku-u&I1$dw8L~Pwb3V$l*j_(p&W!ODjdl>JfJnp|am6M8g zbS*?0U9RA{fBu=aRu^x|S?k}s=02mSc2J0%`;Bu$0mv!&l~1p{DOv~Fww7!wQ)>_M zd6t1?e)Gwu=z{YWi#M=uBuYe*X)vVdhM`x05nN?6gAa9xt$>^d_la%zWg%w2H>3L06^>y#&2Srv_O$(=Rsz?r@1WP ztd6_CaBSO3IZy+^NkLPL7>VIj>tNh0W{RR%GX)1iS4R(~?V#OXEFu6=T8bIdd@IuMt{2{Vl zH#x_+CiDD2)pllw^2Hy#Oml2t`4rg&&YEODlAdm^;4(ZQfng3Pz-MwT3%IszuPDvj z@_r?+_s0w-J5IA{!9NbG5_R6YG?+x%AW`PcT|hdJdX-VRyMuz;N{o(OKimSW713ON zp;p`>w{fU+{4#x55zpG08+EuC#^Pogec5Dshw=Wn9dYF^vN=)1CXR&_lLyTuJ9>B` zXokz6*av2ikriQoHjbM6hrXwiCzo^E+j5Mqmt?O5GS34Rn*z&ndx4V?#n84*RyrP6 z%pNA+fZ~GZ4X`S(aM!l&owOD2DVxBqWu1@u0`q3q8co0WEE@gpT+g7o*F6Cj@JeRd z17&SE!g*=)cbpbZxz7Pb%#k5{A>tTI-23##ue-KRY1C8Spz*+0u63pljCzT0#3!!k z_F*fh{5}*8hn_dmanGao9_m~>$|;rp!zpgK8>oNgE3C;y=!H=DCpi?(QtG8^Mr2C0_zj zYObL*oknBsF`Q98=Ar!6`B9HB=Vf)l*Z1R`D1@31_Znp{m1?tzk9VWCMY!b_Z54GO!V z=rha2q3Whm2Zi*vzmrx{U#4=TSwkWIFt{tYx#8|FhS8Sn*Un$h4fnR|iT&VUuyb3$ zueU-KibVq_V+Vm_Hk4V_P9{?`ytGk?E4AHVo|-?Kn>jthW&751El?37!NjK-^^B4d zNMrzRj!|i*=QeEKuIed;?YwdcWSh^OK2O}yOq z`VyaFFjl0LoZ4y=1vjSp`A*20ZC$>Ko5$WG2WH}`@)WQxYc$wD$akXVsdv#vtuB_N zY({hL}mG+mb`8fEj_C)!c=F7($96=xE>L{;r@`|**X6Ubfeb1m@(2$2PwcCS=JG4l575)lTd9v*V^^ zJ{7*AuGhrx!!uD!JtBRkL4Ejs6YJ$`Vd<)d0p{b0M`L;ZUea{HHX7S9`>UN2Pew65 zR~6`y=9IxdmcPaYYNw+mCaw(J$SZ(cEdP^SlZw7b{s(T*j{!a~Ci*m^Dz3bob>8Kz zP$%IubvDW6rm#zg0Q2TR{r>Nt|JDce5w8*yF5N^Q{z~oJ&;PS7{#Ez?86mP_{^76B zW#p}BeE55tfbRdOi+|Pqf67}&A0hjHLzX^LmiX$u{lBsM|NVCTPYuWaw+3)pJd+8- z{^9W7el$k--#;4j-<(eN&yi$L1ck)@0QXl=Fn2 zvld?Hcp|>V#C&%+Lz4|CL&c>EhTH|Ksc(gqa-o?X|L_r{zc^Z$hn!~wx1Uv=?iTth zSvUZ@H++&E?Sjz>48fS;9bI(7!Y0D_!UlQ%wLKw6pQ%B_Ik~U9{p|1euF3NiWbl~_ zyzLCrt`>97-P40PKqW9-oH;LKZ0212K?I*2C78;b1N&K&{48Fj$Ei8l_t|v~b4~X* zpQ7FkC}14iCXIH-6q?j$s}fQyT4YX>()0x$X<3@-df>E=tjm-+%Y+I`UwFx~1akJj ztJh4R%a2iJE<^@jZ_+Rs*8xCN7V>lx@4*&yMjT zv4oI$TD<93t(F01DumBAo5URu-#`B1unBIpaAOkJ;<-a-@$#O>o;;pHq79O1bwlM9 ztw-PFGMB|8pLdK0XVET9+B0g_k0`pe)&I1~)fQ`LOI80WlLq}np% z&@Lh;HZ(6WH=ZI2}{B~OW=SMp-3+yT<)b(RC^`#?UJvhcEK^!7fL zmTpK-7SVbj$Avh`v;)^}toxa4WK6H9>@k9s$bi4}MM|*cug@AMM#l(0JnCgrjq^CT zYdUfDPnIGZ_WOUQpI_WEm=bz~XQ0x>rYgil{ixXH?u>ml2lew~gzKX)<9NuI5a<{6 zbh(s3x&jB_*G_g+)G-uePX*!;W~7)HGl zL&*gkdYX&9c%Mfe1pq;(QgWjwz=e0&q!I9)xt?DF0#eTikIFac@KLeqSh=?r$vk^n zBx4_RA?&l)^9;xdAK}Wzm@PfJr-?(5RhJ*8Y5E0YsQYYSi>1l*7=aT{_H-HfjL;L> zriwT>ITq3N4aXcdLJg>cwDr!jvYN&SZ&bk_DbVG)(|?ggbogz7XiE>F5Lt^4?jaA}YC9lau`sY4Y0sI-2dR#guHr-RIg~nnAH&17 zYk42CJe&3Z7C>eg>rz8>XfKvu7|Qi^a&!0?QpmTxo0zQ|^CN5^S}`Szhbn&m72?tJ zx3@%3O6oln)t|CNW|Ke{C3^gs*>5m6mmWqsO-E4#v@R86=Vr*zo~iq*Loqi$ic|fh z)o$j*#-pmm&O47SOw_Qf1nH#7VLQrtzO&0s)X-9QEa4YhI>LRMX66W|4kwWL!Zm}f zCfk{?I-g<3VY5vBL)3MYP&NP|vN70qr_e3-trv*@?emJgcQc-C=H{tOD!a4g%Ml~u zF(gW|F+9DBQbr`gb+_22Py*dYcWr+?x~&qWuypIs?Vn*juhoA2On*bp7`uT>J00?I zmDzuhCN4ZlcQ+3HtRG8d+`D5TFGF#iSbxGUd^s3>?CK-1)(QOrgvbp$b(dvHS2QF;*m6nsFWM97GR{`Hv zyc>6aEcfwh2r1gt{Tpf5)2#++DDD{k zeb-fTNJr)O6qtFWNAEn!IJ5Ma{o_6nw&fR&GN;&FT!T@@z9^ST8@qTd;u29J8r2~U zN|@ezRvWK)jJjCzq>W#^xQ6ttfhIN?h1Mc&+9#Qx^PEz=X`f&s;ERmK?@zF`JPa7S zz)!&2lU(eUQdem^e~T=^rnxc5dBYFHOfpXlMu z=1=V?yd7bWXDI`Cm=CU8b`XW^TUMp@cQ=CGe^DOANi|m5f^uZE_j$R8V$56juk>Q_Sut(9m4w(T1xbe zuSU|8dHiI#eQP*gOen1tu@HL~RL+lQd^`zFV=s;qVyou=sYfs!Q=IfR0-cYS$9P`| z!Yao8iP+D{ zW=~JeS9UGNDhM4wnL=cv)tbF=YwV`~^n;JQJAvQkh2=BwxmoUP-Fr{VG#-leiNf#q zClnzPhd=mXahdW?c(vJHvR&@D39W_^zs7JWHK{`8459z)-I7So+~2L;d;MKcygz=s zqvGe<_dJ2dsz{2j?autJdo`0;G3ghXt_J}KHjYqjU*k`@+<=XQQi9Q9h;r zUadrf;5Ych@+d!pf}x1V`GahafmBnSHR-XwrV7`ekLyj*j}?;bw8JKW^OtQz3+0Uq zK5*EG7RZN3#m$zFC`Z>wLP_2eJA%KAc0561M@H=1zWbogv0B?(iCR`r9s~wR1CH^1 z{iv~p!?;1cI+`DC#EBa8TW$ zE-Q;vyu*9nxu%44Tq^lTZ>(;y(@?{dea%)eCDf$g+d*!Q0slC&a*A7|s^jgCL-jQB znQH;f=3yB_^(P87(Ua(9vxw)!qGBu`Hf+LLd!bvoMRCHzEj_$c)_vP4_!Jig)b;#7 zkKesIE^x=c8F%2gU1sRTa7xKkDR}6Vd-rW?4tj;>w$Svd#qI0|s|3-pBxVoqTHyb^ z@$;mfzd2rCVq@f6_;+k1k33E~W#a1^7hfO-i7BxSD=AL%qVYR7>GQp}7dy-fC1?*n zPB+|}v@z+iL3GTLRsJ#@wEj&NO<0FdJ7+BBXBiTsJAi;4aAcTKyhLpqaQV02QQ~oI zG>V!xT?-Gblea%x?+~G(;Td==Opq&jD>k;q`twUgu#nJ~Ov&)O(MtG!NS<95(0itG zv-dj2C59hk?nraje~4!$=cY|k&#Mt1T`Dr`2pMKgT2ZcK(C5?UV0|8+#6r7~IwELM zk{BCMgHf}{QUcDd4zHsf@}jR(ik{~3de%KyEy*!)09t1XA%50iObVCl@=Jb+4*mKt zT=(Re!2)VAU5ezBE_rBFf|lG9=A+$Pobju@CY%o!5?YCRLyjV!FMrUY0*8sY*rce* z!w8Au+CC&?(%cd^F5aVvVEm;u{-cS>i!h^%d2{8|l6FnFYZ+@Z&1CD@)4X#9K3{XM zI9BPuP|6kB5tE0lf5Vw@r^!>n#^{;AJ66ir{;c$Xam`x zFq>$I0om&Gt9Se z;;@14Qw*FbI4NM}$ylQP&{yt5bjg#-dcKbGKiUOKbOp4fJ+8R}Q%i<1<E z{c=C&{6FlyWmH_v(=Un>2$B#aI0Sbc++BhNcelaaJxFkZ5AHI!yM*BGZo%CWB-kBz zp7Wk_*LpwPb=SHd&bj|j)4QsF)m>FRv#Wa7^xoEI%Zg90VeYa#;t4c1H0N|-hyA*` zhYn8%bj%DIhWlL}s7j=_`Vkus45alql@}K__K^b*?GK3L( zzBk@0G}v>BQD67-{G6X%eUq#aHSTZpknwIsbwGJfjev={#iyFqf@|v|pw-94De?|J zq!Bbpxi_D(_Nxsk&PiNxOM7P3jzL=A(6yQ*s|p^~v9+p+_odcQIa`g6OBp z07q3=PGftZ2f-kmSa;bvcb6-9>YwNBt-!ea-DW11fD>Jw!o9tmZYYHep6>a?=B&fF zaOSf0QeipmRC<%Y9o(Zf2uiS9;rE_YA~yDjj0b{6*YT27-ooIGeLK!!B*0@Z+b_W$ zspvKe$pm%_5tqv!aevgd%1k|+k(EoCrhys!qX+yEt60S)#sn~QMdi>qETBYT|LAd6 zKncfA;C)m;IpfpoyiW}cSHs{0bZs9@-hc%`gWGI(61 zX#Op+`gb_S(5Eh1s^$IFMFr9^j8R;Dy!w?}L0V{VTo$CCfPVK)@EUA;3gr2Uze zqN+lpa&;{z@x2Dlxwj|r9L}4b$%w>F`L~X~XZCMmE!nhKo2{jd{&JDvt(Z8TG!8NZ!t5BSB*k| z=TajNx?wey{yNV<|d@+r9g~i_U;}bqg|3YXo1sWoi7kKGQU40hCdJ&jstH4 zw;P23pK$W-joCYM4`;C=x4{MEH!8kj=CbbtPIsdT;DRf{h8}gV2P^1Z6b-+V@#IBN zDyZW9bt?y3=utX1980Y4uGEDpVr?@J&$V8o7roDLI13wV`Ya!1LtTGgh?_wJnmGM2 zmurr8pn}V`Q}@A&s3LO$)|r7jMDxlbP6~gAb_FDPMAc`Z_zNS)({}{Qv`Uy?FvOoV znRw>P7@4}(PH{YjC3~b}Gy9YkF=3IDU`7`q0At}ic2WQ-p(eyg@ebeZXCvR zKWYrOyflq~#GEtuJ~}*QdsoF5txVG-2N$~TY}ipOB}`J z`8+j$&T-*9eVi+%sb~x%<4@|)ajjB1?AZN?EG*+GJOd}RS~DaRuSXu=8^Ue*3!YU|i+Em)h(Zf);uodJ%O}aAy&BmHh7!O)E?){E z?R%pN$>AIe%Ct#-KhmzB)Fxv1Ng z6BL28dZqPX z7XhDz`86xduCowZZSs5OB3P}|_DFyK5dP<<%Q1tzOg}#lsw%_r&dxSAs&Af8k2@LM zGBa0aOlK(VN-tC=^TEXT%nQ{9O2JQ;@{{;h&VqVtCA{wTC>!qIi}H87g^O*pEKN(^ z0Pk2Teq#akRAfHSZQXgU(NQ5P80o{z*?riTL^%K*?wVq3j905n^sW>+`0vi78O>Vk1|F@_Hi}`mYch}DKglDh={Xku<|MN-Q`LD23BFTDGQ8Btkqyw@d9U7` zb75#9s{Dvs}>n zO#x|^*SLM=itIw}MzPTU_FluV3LVYIPfUjc`%(9-qY{=;xnCFtk6`T7h=p}A3Wa^n zo2_2AcB23AN-M0N$K%_WC26K2x3xP=G+qM0X`xueDlWYwk5Dvz7A`%boF5Dok-0cH zCHbMSj8sA=IEa|mVKDPnqI<KvoL-O3Z;ueYyF|mr%H*t+WagL;{?a|Vkl2k;E@+7>#;hz|e@;+6J zS|j^+2wuJSzU8;HHFV5%VtpV&z$5BrzUSv+X9+UA_IhLC{if&mW@Ey_?DpL2jaCr! z*5=DqoBJ)KOZrEF75u=3^Q&`K=-BR%tk7g6|CvY8*Uu59ALBj4a6-HEn|qt4FeJTP z`&agaO}vOTE3;eUNcmDtZxiIEe-N=}9v>&x|4Mo>b#L24TH zRt`yW6P(Rao>-{R)_)!n3DUj(!S^jbu~_o#5#v@gqj#y!M)?MH2V2gt5+!Se zG2Lhy(!VXH`!$M)-O9qU8xM@DBKk4VJktb1C=IFyA)Ng>uioz$UTFeD5#65U(HuUJ z>=N2g*Bm|x=AnrXf@^h1$EwxR_p`T7yOV`-Lv`BLxmLDiiPJN?n>TpPEqo^MY7{4t zS-?l?{oDIWBTBSo?4wH$S~Ah!c|ig+hiY{2UR8#XR-3g^f7JTE2rPV~Qn*IB2!4{T zi@p`9#8FL&Z`ncr?4XeA-`$&AY>M|&as&JG?%1l~N1e~MvzBngqM^o>=ZEN;r=n;a zs#Eas%%7WEgn6;8M@tWP1HrM^CxiZMW_3-UZKn^Co5h`IL*L@6ik~=mbo*+5rB-fw z76epIHkY5z6FeE+$bsYdc3}dqZPW zCNWc2OJh?>M?(*$|K`btl&Ph;g)<2U7yEx5a?i{PIq_cJ(8iR>(#D+Q|G^>mENm?Q z>r;`F^!cPC9yGB(&w?kKP72FLQ1KYD8*AuJm>-2OHRM|F#~Qln1+3V3AECg^UX==F zu79D`46pUFMvi~Omi;(x7f4+^2;EE7b)pkllkOHV09=urS zo&5BX&3e7OzFz7g`(7+5?I~~`&1pH2q4qbHj9mA<7?4=Do1*rsS1-YY#^;Cq z`R2(At{cTR!*N)`N`zPB1aRqUCe0dp@Fb~?PM*MJOww*Fli!-5#C*U1)dj@$pv)NR zdN&`ncwZw{{NIZzWKA7D;M&$|h(B-kzD&?x{t~Eq%(e#fIqcNU{vLBR*^GI0qM$Xv zCasuQ1}{JxpT_gIRV={zxckZfq#}xA-2cVPf+>MjLx|;l;dLf}S@VK!tq{cs9B=@~ zw$Jxjf;;W_`|?78MxT&ht$6zZZGtucs$Gx;VCPD$-*ag+vsCzH0X+_4w#@;LV`SQg zEgQTRj+2@0Xky*U3a0?xjha{bMu71X-`9SY;O2^ZC$+0a{w?gsG}ohC^ZeS^m5HuB zI(T|j)<;lc$L*tb_4Uom`fN2ombp0Qc)w052l7)lzOJzDew3RqGZ=T(8il2O#d*?D zBVZCR%AE9-Q#!|8*5z~`qw`)B{$m%nX3PZ6p7kq++xcT_w3JLDnDx>ux?G&il~v2> zLFShw|KyEaQ*Ji})bUZxV$ySM-lDQ?Y9w;P%lQOm#Iy}=18d1GTWRq}TonvgXvzI; z%k@tgY5QZd)@a=PJWbyDtE16v*0@Ow#gS zJkcBLxLLLk5>!#AESQctpGogA4#nwIJ7GNdcj#KIS@8ZHBY*b8lL1 zFbfeuaY)CT$h$HFTdDVIS7OK=c%a}}{NPQM0<%P_xLFP7ukZd;NM0Sy64djL!LOJB zB>P8s5@`$g*ZuK=^{#hR4FC#-*(w_RO60DJj>vi2d5E299UT&I9(*U_H;TkNc(!Rr z`&C|*`DiV5To}Sr^v6jh%Z(xOnNu1mh{}o%0cMzk4Fn5~laFV+yq|eQjh`NWu3BM6 zNiDC6e)yHhQx^C(IZSyRU_QR5rM)Oe(Xexye+7R#|)f$kYL_Vu= z$5FTda1HXQs?sz*Y)j?8eTV+me$-jKwd&w_`OfFtMVql!t&@B52!B#6CHhd=P*0*> zQ;gmYba1cnysgh%8`Mqr53}C2EJv_}C8vjmzf~dKvUq>yxJsD*&Zx|);C(0I^y%vG z6>bdEFX2>GkEW^kWoYm>fra_L@=*}BM|;cV_fb0c<>f@<;)^OM9Jyo*x5UwFEjh>3 zhBEQrCx&C{;YWNLqb6V${rd7k9$TBa8KA&syU*A-u~r`O_%GgaO8h_e^Or%-6(?G6 zik?hr>R@a5kipHVmTI+FCLCqE>&r&@jT)nFur`D<*t#fSroXbyy})bIe#8px(REnk z7K_7&XTbpt6Jbba;XQzfYCTe$JvY& z|JgtZVb)txle4gW4Vb&>^@*$Hq&BVd$1R*GTg^`q<+5EgN=>;h=$qyB8MS-5!Kvss zt%Do`1!` zOU9Em>cy!tRWPnj0HKw-yHfV5lYZC07s(LziebXsjyd~3%`);=_!R`=2h(1F0kHc& zN3lq{^74$1^dRQcjPjVqmosg%ZdA|Mt+b;E%aN*_ zg9m#s!yCFR2#%G?JEhG!+r|Bu+uvXO_y#F`pUE+5;J^NvF& z{&S~ia;TP+tT8$#Oz|XK1q%IQuOSR3DDMWd;k(^$on}|zIko+=`2|})=B42RzWZtR zp6?BhO6L(0Qx(YEgB-rqK4?0)99>iHlCcqV+Cs}c+M*VZmK3c!qG4)`s7qUoy;hf$ z9Panfv(BY4`hg~l*8B7H5Azc5hozOd6Fr;dn|MEd#;eBzn0DtQw=vgA?>mj8D-C_y zC=EG}QzNkx1w{$`vR&U(1z{bi{^9m{Akh4F2I!mPta4zZ=49r7vB=l};&@yYFchK9 zSz;P;DtwH@Zag|Ko&Z69ZN(nV#1r&f)$}|+_6z;Q_xF_*nA)TWjzcL z(dx@-hW9K6-}B6OtIoT$GQdGUWB#&>yNZPzk(6-hV>gD4YAirgrE#;#OLJFg@ogAB z=x$5|3uf*a*1zPsO2wZFj89gxo6u58eiG4B@5A}eA zF|~WQ#y?u4iQhamfa2s|CMYiK^EL02rW1aZit%A8u20;MS_4X0gRAK|Z|^y^K)Rp( z+#G86KRqNXkM_1v!6TMY5*wP70oyYe`}Q&kJu3T4suLeny!XGjB01us#yfF8;Fur0<%sb?ARe|s!bo;1T>wfBJ z(-`74^w9Ya-ZR)>52!CyXf0|V*atz4Xf$_u(Op{y)gUU8*Up%Jqkaa*D^ZSCrIB|w z3z@U7{AIh+Qr$c{kO*KiH0YZ#D@x8azd|FMhD6XT-&-0DL?rN{V-3rX{_7M6b*Eyj z&<#W9fZ3Hd5Dq-J1aI`|Td^6yG^SL{prZ$v2~i>_aP}v$=?L5C+Wy(psUG1%`g|ls zOBc}gh4+2-m~$7(3!E)(KuN(#(^*es1W*t`o)i87%-!luTFYv0N~R==-$}+;F7^$~B6Va;kz~hR!YBQ6Wrx3DrL_$%EtWgna_+Z7apR98UOUq_4y@*gC z(NIOo?*SEA(uBakA8x17wtxN7$71Tk@@Hr6SJNhk&^gO?9i6`@E+8T{NS6G$NW2!e zzfu#3%AS32v5xfQEA0E-E7I&OztiIWCIfQ@4PZ=~v_z~2G)Gw;^}3^P)EGg@%OlKf0Au;SrEUzvt+>MRrtK^x=KFE|-O`zND-ig@#k_D)K zu^#~fR|B!{OxcodJG`KEtuhc^f>6fqf$L~td3W&Yk(V&w!OUH?Y57UI>(>C4@jJ}2 zGDh0|^HGEncoB&1*-$hoL0XRV8Xrp_Uz6l+$-P^OQk&-Kbv{;@wuHL`y+-x2`6Q8$ zWN(E3uyaSi8gQ`C_mf|3`ofy^6)1vyj4r339d*~t;HP=Kj;9Ls5}xalz{4k3MFV<* zoSzVAGwH4}MCHkDIelIsLdf5tWY*!HZFxHE7Q+*asWqk?iYBk{{sk_ZJ-1MeTjN%sE6{n*9s~i!ygrDCE5I3K%HXYWsBm#7LwICi1wYF%b@wS?BJG~h548@6> zzE=6DGIeha-nK3oe2-duuy@RCx*JG=ud!2p02ZJ$&;n; z%iJnE2dwS?o%%%~eIwFy)V0>fZCZtOC&_!an-k<2=nZ|t==`EzYaqR zUybX0dg&d>h<{)?O)TzqTDW&B_zEq@ObE0@QYv!Xx(=-5V2rVyM(6TmvwI_r!0gOC)IYtaAk>IAECcOpB&i zL(Xm7Byyv{twaM=2km867X}^twe6T*iu33Hl7xNcIlQ#i&rQ-Je%MCM3c+4hBnHYb zM{$wSaUTHw2X69%^wK8_F9V zQ$r3xr#cz^pIj~rKz~SE@mn=m!WVra{dT5M1TDMPXQjmJ(6)8y;J4JKe@8bN&jYLR znh0K|1FOcyZn7@VYXAVC1^c}9d|wXxqRgP&^2#3{h&}DOUts2(CjdRR210OoK~2Q$ z=dW#61=$3j_pqBy{!0x=0!xovhQJv7!m|a8i?htN{6+j~9@LES>Sj9lFWt_Ux&AL{ z`Tr@~EMcgHtlH0mBl3b>v?FUr@u?ZU{;DbM^Hh+{r*rx@0x^qTKCHFV=rOFVEAkhA z;h|=7egcFL?a?SIpn3eAs2xxzpwmUaS^1-F5Xk7jIz#O#{=&r-P1)gWOn zZj9QYFF1&}nY&UQHbvCd9V3=9Wbz-LpuMDvTFGs>U|IP_<3_JerW)S^%6B!rq|H0* zxwsHmSETQ(mUHrn*CTgaW8Mf_Fmb|*MalZ3xEYx?`l)BE$7tT)wy`l!?dR8?P@wKV zX=X!1FjZ;3mbSK4ZyQbL%p-n$B&-mKOX?)==I0^RAnD0~yQgiTE?ikk=mZ;<*OZjG zk7ZjiStd+VhB6J<(^YprJVm58%%;Rh^dk2ST|cm?IeCWA#Uh#5#BO>9CQzzfwH_Ye zqrBG`-B1VIJfUV)b;42i)sYNLj8FJoHtAE2_njE6cl+>igZQrfxoX~)?;cCJ zh6|ci+`=OfWfIN8L;)kMnaH*FeQPWHy~oo{1*$V=UE~?6e8t93VOQ3Vp;LJL0Ovie z!ACWSkT*;l0O-n9@J#l}mevR}<26Tbg1*}Tt}X7t#d6!!4oB{X-XdiPW&tR=*1LLk zF1N>>@PAEtZmGCKW++F;DR(-S1@>+@Jd^c#%rg>Yf>8KPcw2Vgbz-lFWNpaCj~ET* zeXR_?(q4V$XJw$kt!Z~e|3{CYDc_1zIST-MP|0%}ix53=BfC zK~AeN<;eQp`|}K}`DCK?H6{O=Vwa+_suZ`5RE|>FCu`kw&UKTRT?aK> zCzOBqwiz-v$~whVt7sFOBN96O;FKCpDwfgt{Gox_OB^RS?#Qseajw-gU*9Zei9|GN z!a$3+a|8Ez%~@N{2tKro@~;R2SkwHK$50*o*R82D%xFC)M?`GCRH!fJWh;yw3OI$A&V*9k*_HoL50Bt@ORX~r*-An^u3 zyv?FZsT9-IP1LqFKqLkYfAny^HTQueWpG-R@5h(h4*6XU>~*V zQ?A)Ag4mqU?XYucPNzAp(>p*(-5>$@fS~6^ne<>2u8#T|bh7(I7K1yk1nVa?q0n+l zq)}__3mLnz8hMBG;i>`xVhTJaqSi$=tH0}}Y}rHid1_ALJZpWdZ)f}RP*OY7SF{_Z z^RIr3W3+ME0?O;jD{Jw~5HkBCPyk-s&5f)@G~-Jslt&Bc%{2p=vCpeJOx1YqDeA)$ zM@&W6suL~|6;ba-s%i{>aEz8%4VPV8GadF0p;wQ|6nJEy1YJ9NI*1nyMp1m5+)rmR zb}yIK*g1=8P2R~2PAVOtGjU(in=0v{zC0RwPikpWR>I%BYJ2o|IQ{QJKTk)D`b?9b zvuTPsljS>ME@^ASR^ZtK=Hv&Lf^Qf2&eTHDxrisG@&)Ab@jpA( zRqt`IC+j(`%H@66V359N)AYDtJtBKa|3HO_$xIgfSU|QQd#G(u9V!#O2L0`OHe=7- zkZ*E39J%}lL8e=Xt(^nbkFINWu71NvrNCj~qN(3zw@W1nTeG7U;qrehRKI(}G?XA< zA|Lo2rKdo^gz<7}ukd`)Zk%h>7gB1A%`-qHOZbI4fJU@Z7)4`vx#9D*WcNDn)=_+) zR40d@x~V=c9*!qzGR8J5d)trd_K({V%6z{tC7D0}{K$c~e_}cP>(O*Su&l4rU4j*e(y-C^ANI zO9lJ%g-qK`pOP8x{Xh$xC}nNFQ8F&7JR8y!Bea?_l{SaO6_3<|H-e9ucrUWV^p&L7 zUC(e{5K$7n4n?1jnMbeZbd`5*UA8?{&@74wh8{9Vx@y>eUWF945`LDPdI*x~lyyA0 z1=(Ua4_BS4^_c6SO-cKss8-=3l4QXRC_<+>Kx4@GqhLuzzl~LbF@ZW$+`=G%bq~c$ zhQjUQooRv_fLhDxqYy$kM*}cIv--OgJ0QhEw~4;o$u#vL90OB zC~hNX!!(6{Qujw!+#mw#1TdJmGDEou+0a$tjzlAEe4z%y(}TMmyRa~8VF2K6hc0-P zYM21X9}aH69;$XJLJvdhE7l{csB}4WAtr!fY_PbtyM}W1cD?XI^RA%p;*scOhQ?9g01AApQJqST$UwIJN-%3UD@2VYpa zaS&@PdEepU4u^^vtJod1h55^S9EKnW0hzkw{7_V$RP3<}2MQHaQDrkKNjcn}#9%bo zL#W4p0@2*Y^~%}cqL}_gi)KY5te%#@>Fzuh+=r< zM=ML*TAba0yB%md72&JcY35khSn(o{G=acaG59rbVA9r1k+r0{kFRMqod_D1dpq){ z(Dcj_TEi%wcacKKSoV28bcS(Le}q$cVf*!aOGh4wK!`;@2>Q9XUGWTWE7^R^gfOtq zOMmo)rk|yBcfrPEivF}@44|jo&zP@b|ZG|Ft$c)qvYvX zn2bh4dLMz=%oR~$pSWz47>_j5q@FwK#Bm?B z900*sf$e8Wsd!SpDwH3{=!&v5n2emT5n+0hS|Mluc;-Ih`o;jKP;NOTdB-f>(-k;z z1Vt_ft@4J;dw|;-aB*^DvxFAJjd-98g@qDA*e~F!(P5+|%NltiHQ@ZQrU;5wWxpZ) zr~Z%AMf-~&=MICZx;>X8Ez}oIou#MT0rdx7u>&cU6nZcBZW-+0V;X$o6C#ZY6xP^xGv;c%TDghKv&0iFRs29bsceY!?<;R2BegW;Kby!7WUjt{_!KJu zueeFhkHo%=NnDs2w45Hi0?~MHzuNzTAh`{p98LHaL_;S6ftjDE;g1c!(+J@3L(?H$ zikf~}@;n*KYz1Nca1pJ5bW+wa1L)@EXBAeZ3k<|T1`Bz-lB<=oN@=is@UqLYvroq( zmxL(Y&FL{ay5?t8El2hc)Ax3?I-Q4H{DscsrdqWB7-p(1QNSBLjkKr;g%w>}RM9q@ z_mJe6!GXsX6|zObB+dv;OVBr_V+zLM?0_5}#bBR~5y7Mnr^59a;BY6;WOo<-fuI_R zp2~F6G$H`mZK`qB3eA3n2rs(!`(XrwI;M)de;<)u2CyRCTe@Ep^5U87AI6w&Zbynv zC&zEKqHq4R!>YK0q}4t|HKlAd=`MhUg75f%fXyzjMszEDJBCV%yp7d5<2XjrmKkX! z0#>2&@?y;3){?_oCk%S_4`(3ny`_gYk>eVEGnJwt&pN;L@sZ{7a`ILivq>m~kAakM zT^}zx79rw-Li@QtLC8w5bH!2b-7lEzKvv-WZ9#M%!7>k|oqO1J5}WsN+7r_Lb=cPH zkRPatt)jR~xHLfQNFJy`q~Z^bbs-4XfmZR4nB?7l{S{sLiJIh8r9tBeuLy0s%hS(& zsD#-JQw%k3-%Yx=|1Ip3IuzE1raaeJ>h#25@g{pQlrop&0Jr_Szkga89k~!_yHq6T z&ClOq{%NIf{|JR86iC#6Ao#p(yiOp%E)1`j>oUN-&G9NST<7qg#t)sXe;Q01>C3OP zXbbMK6@B>^HjN~tEU#n`*H6kK*h%ltbIio*qd;}liu)6qPXLFkK zGKxL=%K-jf)Gzw4yiQ?*=*2?+%S{IAKal@etQhM5ZwrP5rU?-o2Zh?jtAPr|2c-rJ zh3-EK)%AhP5%dhLXM(Ez-<`C;%KZOf;UYWWzX}&Q|KAiY9(f*>)`&emF=afK^M8;P zf{n6G0I~R{n-0T(N(&3qO|r%j%`R#=YIhJdf)~vpd&mDx15&!U>O>cKDpmDPY?N<; z5D7c5I2EyltXt$A;7Z7iT;oly8PR?;+*{$95!lr@1JW>%M>a18J)9C7y0c_pFbQxs z;6Gr9!2;5Hcn0@nU#zrF)m`QpL;M9d_#4Dn_ebQnb5`oQdXE}*<@|0YT)v-8qd8y9 z=l3~KR&6m0%SptT?V#XnW6Wo^KJ;)khL8Ci_+sY!Af;*jBA;P%$?NNQA2nSrT%EBs z-S(!1|Uvqc^Sx zPcsA9jv_&bIKwW&(*mP6#$GL0m3zVnLH0I8Zn9& zy)C@3pTS(0Xj8=u&Bq3eTDi{5JPCt?aTNg9GkcOA<}}GpSQBkKjFt_Hc4?4uMW$}5 z9<6(gnWki>^@W_7)^p>tyjI_!Q{ub8TEqW@GIB=$vp;yS)PKrR!lZ2{1Dudrl*hwuY;iB6#w0F!&6A zT_Z2BCiAI~zs|flWO7GSSIK+ZDZdwGHaa%St-M>Ok)#{gQGJ>T2h(o?h9MG3C)^ zHk{fU6p7JB)d$2zi}KY7t$9_oXG{PuOx}D$Bf(SO7tS(Q_bb0F-)pAtT1Q8VY&Le< z^`IWtO1pOl-A;u=K^PjO8C4U)s89$>+(N$!7F%xDEJdv`V$=` z<+N#~cS>w=gGyUvpN{(a6pTwnr`Z=Mm)GYsTiQl5y~9FLo6MSlItyI=JbrpcI&Sn< zXltFrb3`BVhl4mEobcrm(j0CwAcIr;_zq%M(U)eEU(yKTY=O zcRzxE=Up}|ooAhNMw>Qn{`nI*jB}AaTFSR_u(%vhEZwotxNB1m;`C^39ZF*0y{%nU zugvM~LC~qw*h>Kx^nXuK+{UA zNZJ8EeX;!pvKhMgwybpJ)vdv(+4AsAY+_wwgs*f(qMX;~t&Gk74zNSGT3q5wcfaN? zI_Hh3>vx?Nv4#m)1jkj6zTHXi;5vTdE=K?B@Yj88ni72pQp}l=+2$ZIdKNk><3_CF zS>|2qr=+4B+1Wphqd6M zMSuj?N^V{coW#C?dsseUS(S)kK_LPr*@_I z5l)^)2QQ~^pxRlH6}jAB?cE*zaBLE-4ZkuSIK$q9I zs$QS3$qBq1yle)C1JJH*rSj&6sM=3I3L(3Ihh4s%rZuU1fC29y@c@!mWXHONBVKyR!)2JB&-}e;ZpBcqlbyeDP9WIa=Ld>~j?n#K!%Vd3=uk(^t|70aKT~l>N{K0;##y@Z+CIV>1 zBa#oa3ohigqt#%`{&f{Rn@ciPy+)YAAC0;@&*SbOP92sBT7Rb0u1!0*(e>26G6y{S8$KC_Ey-P=&psBZliNzOZE8SjWi#BbNfsi*t6Mx$+x=FTYz*CCf z6aP+dQkm4dIv6FfkkIoDWJ%J^^En*v=;wTGVI2E)p6s2a&1Tl|{RgEhYN;wTr`*CO z5Pz6P?M(QH0Be@EC;m$RTgVR^gr%I@r!nPTMvb5new?_zzF~f^#QG12Ew`}U%ty>6 zicDMs{*gld3!;(}83ZveHoEt5w)yz(<}7sh3Nvd(c7_iMqb$gF=Gd0T_KZJ2A(&!^{o$>~w1l3S=5=ocY28V?yGOiYd=pLNAO&|yX}3GffiLQGB|pJT~A zo3iX&oj<`P2L~JQoq9`%9tEFW$S`%XBI@u`$2J< zkDSpDeET0o_N=i*FjQpTmsUl%meeRI6M9r_Y!){gO_Iqn1joW*g`V*d+CDs|k5$%( zo6OYpuYxVMh&gj1)r;iC=|Qmld9F7X8GmV;?x?dQn1Q~Cu4ept%I0^#Je`h0M}5Ap z(QxIVplS@O8{)On+K};4b4c}~r3JVma?Y@YW29fB`~$t=bx?O+n>1Ly<}#(Vu5E! zQs6sm_43QWVw#F1rRn5-Ec28XP=u6$xeWG)r_PR#Q6Pn*z&&@o8|nejYsv;7UkH~X zvU4q1{Rn6;`q+QR9xov@|C$3Zl6H55=+0msOg=H(Y!(mhabRDIMQtsayu|;lfpFK! zg++ON4{K_^8ieaQkqA>zl=Xu)rPDhDWaeod_Y|kzJjoHiXoV9?LYI9Vzj21& zKdvpHdI(VYbl^U%?@JJ2Ub`-+CcHI5f2i?VkdS*8`dF^+foVs3T;SYC^Q?_3FY{%2UwT_r;b|YK0 zYIOHSVpFY2gSV{m;p3}=gaR+upZ}7HD3$qa#T85MJ>0B2<}CesB=l74!2QQ|-4*wQ zO2$!7gN>WtK-XI3pDww*wVjU~h+hQ=2ePB27qzALV3B2dJ*YO-r&U}$lfGmuS{O6o z2RPhBfIpHLG}0BXE5%Cs++qer{lfFrTS;*05^`5NIkcs2#1H2V|I%>8NB1_1OV$`% zYhD#eg2R!Bx>$No}(a-RRbaqCgO=3w9_2B|)5fe2nIZZ<1z{dZ^r zKMoQg!RvMa0}`-T2NN)sfdMJy+pnMyCIhaJ)pEPqwQExVHykH)WdpZ*AEM~TzJP=) z4!%LE0wKb)eSocGEIt7X~h9(FTlJM`3&iV^bx#V1V+TwdUCG6V&B)RTW`9a z!u~;RD9+RgQUN*s)ucyh+Hafmzb^B>O`_uEnxVg}toiQ-x10HX?qML*7b{m#baxkX zbL@zVhT+-!LrfR>JW!zR>k8|qPNq7^liivGx1}^a8tt5I)%dTz_9VcN!rvKnuu9Xv z6c-z_)&J>6g>G{*bH7XauV%HO*Pt?7-ssWRf*A@RW#EffA{>a~WL-sPx^`aV7Uk{M z&_d>q`Jy!;U|f~O)$I!X%{aCb#jAs5VM>hB+lmcdruo1BmWlv#;^LEnS;GV5pRxC4 z|F_0D{YOZ-;_H@EsATG@ZISyU0@TvPFT4#{xKQkQC}I+>x+a8MsP3FzKo{a0G=>Uj z0U>(}2h?-uK+y;*fAn_*S~{@a{u}>+{GVvCITO-lONg@#r3JEFBK6ISmNt3yrn>8V1yC)T8PaehRTO3Ahx9+wt!pfAve=i zOF!cPRzywtle@c)roM3SwkyP5CCg-pvsR`p-tkPy?JsK;DbcK0$?n)uiI48X!=nz+ zHNYSBEdKy>B)$8nG#!SM354qo;hY-#)}^!+kxXu}@9@5AGwK-q%g*%nn6rj2<}5b` z)7>qSsVFi>TaaKDpRiJ&EXx-GAi`Eb^ZSFS3Rnm^?n+f63ZTLaWQz3cCuraLhM}%cwx(pf*Y`Wu-doXqG>i4Dy0T|0&zCLgCVbTP6Jc zGLkR`IV#^FRQGb-78=WS7tu|W?UK`ss=qtDqlP@gqt#(@l}@+AfMS7xdqly!># zp26aQK_^>3NIjEl4ddcFj`K6^1T?;F-^9Gjz?ei-`?hY8H?v-*4Y#KbjCE7$iG@$% zHDTiiCFK#vdExn}6r);}d)*>dh7SOkO6)n)nb9J+PtE z?IMbOmu4OJZNvDZDmO_w6ECKf);kE(Ny&J$wtZCZ#BM~s9ZMVMV!J>CqOS5)L4|39) zpfTc17-)z+(_`4HB@a(iY^H0=ASkVyiOA3G?D_0kn7e#y+$4I2_pg$W+7g&~VS_>% zF2-7X<^eN?n`RfTclbEu^zW<>{novV7Zw73dj8(@BT3D(kF#%19P7QfFR)~ihV*%% z(c)h?nP5gHZ0qGJ&R{4*2mE0ud{^D@Ec&chQx=8dH<&@I~p`rm1Ydu%A0}RCEQUUkl zrSX3*bKi@B)PTcOF(Xjd?^P5% z%)^_AfWLJ7ryAW?gys64tG4xdFTD7|M4bO=#3XX)mAztJR2!M{w`WWNkE#{7A?+_+ zVKQx2egA!U^uRwIG|XocKeR4~%btA5ivG-am)BR}iBHr4|HJN_&>$!RHU{oMa||YL zgrJ|GRmNM;%2M@l&^%K1{G=V;+CrJT>~Y$XQtqyr4LDVYC(}AqelU~MN^*Uw2g|Xb zfezOzDlFQ}ihn$gm|I9c+8EI%xjXmcy{FTeAt`>yn6ks0cy+-5>9q&xO6reNy#M$LXU)9U` zZW7^&D}ztfL+`kz?}^`yg}t&{S!IXl#>};`JcXsRtXA1FcVQwt`7N4y9Q)n+e56W} zzFSoJ$UcqNV&t7^Gpf}k5Wnrt@vrwuA60xkj%D&@=`dtRb02`wmSW0T(R*ZVQ8XwQ zYL!NlRZmRbI-Ho3x#|kPzhbWzz*+nEN!&dcwVkW^UdN`^tXm0NJwfMLn_HoImc)`z zX%*c2Ru}=v+2&(dQW|G9LzO;VOl(=0Gvu_bMMFPJI!j-a;FakLc%alq<0euk!q!eI z0+3wp+NXr4#l4w$=eFA3=I51B+xwq!U6wr=t7RXV#64O?;&UJKhPe*yO1{(gF%T5; z6q5x!H|YQu4B9>)C%8`C*3sz|I{khQVZxozf<=jy46Hz%&$zw$IULPrd9D8FS7~KC z)VK(1C4yWkJ<+iFaNuX$c6_UrICDd@=0aI@&DG?h6tD)>B0W*HX^(-@7h#X@J$ytS zbu=$^5b~^d=NzjpgPRbaZPsH?{qS@Ed7b6ayOmK(z5LWq7E}S2L7XHI zjZA(0tT<{ZeCC(68Nc#}@{iK>D#QFCr?%NQ={0C+o8Pkgb08p3F2`yh*cZo6#aYX~ zPbF;DV-X7%k<8zT&!SA~v*(>Z*!R(oP#NFH8unZ^CCQs}u3M8!UnVk}JCR+`wL&b( zo(lyEclM?vE1S^O9m?)VP4rId&7k2*ZB@tz;opOidn38gSlWVk><_;@(ZC!PC}L6Z zG866{e5=|YZ@Z9?IPeGX(BE7LRLKUGqKZX9v$nlQiSM$3HIHobq0yj(=HMc=(0f}b z?T<<{kjfckhhZR!8DdEWu43OZLbM)p6D|6MGmz7h25UT7Wv^NDTb z4VbT?l4 zd+p=r?2qp!hVTQ7I4cxmp;>TSPWS7r`7As}{} zkeTd{a`ao$KN|#qD(il~iZWJzZ1)xgM?#OXBNqOx^2cie5;PDBma6&ePjH&_kB1;e z5CW>K{cc>+LbXl7t`yu*KfrWZPz{`|befjGcz%5M^$j{?957yyq4hVhS!tfSez{Th zm?)SbFkTVv*N@o5&!v@Gme#nn9GL$1#~*B+gf58-(TJW&N~JE@eZhr*@rs85YQO6e zkJRT|eZFMV27H5UU4w`Y#+y(IuMtOs78ewT=x$=-a1c+Z`a@ljFJRoB*Y7L@Y;0zt zw3i=GS8sZ?W%4!k`wlDWytx^i*1_e9hD4`CAD!0>uA)Np6Ap=dytwF|HlHdYuNl%r z#Q+8C#Aon6b<2^+GR6$MWeNDv#xR-!%ZwT8Bm~cFX67}EA~|34XbKezauHo)Ca4t6 z42v!EDaBq}G35IE6v|}G;8PVVoGekSrZYk_ zG|JGRRaML6CnYX9mo0{XvqO;Y1t1JZoKI1XoPb}AzL~qXC`@~T{1A3s2AuXs1BkTh zqvk^e)o3uOh=Crk8^U0&+a~ulgnF`xdV}-J^eK_8Hu|OhZ#|hdb29{Aetj+CLsiA3 zWzegN6%*nE&NG3gXw1)w!nP*}tQjULD{iGNJy^C|mgu9*D1%@j8o!oU5DI5{oT!+t zi08R({rYI`0AaVuI~$x>T{J|HP$R`y?#BGLt)j@DGMtY#4TKz{Gw2e1-5H=bo!oPG z55K1KL72u5uJGP1ryw0ye9~#a57$Wr1WSG^B4rnRZZCd>37Y0@K(X)XIq!^DiO{9U zoDMh%u*uBg`FsB3=gURq*QceBL@*fO)V15Nri#XEwJn#oq&)U1%;0*+pFikuN__o%`>yA(vN570|96^g3xUeQVfKKi9dck)*Li0S}tcH(1 z(`|(uassR`-Zld3QJnP162Kk1GTp{{PJj`MBF3)*IF&2%+jT; zgt#&1k1cRE;DNWSe$7UDP z0&Gm_j;Cz%*~XQ!Bcu49mL}Fn56Q6dDAYl)Ht54d<$le* zPr_)(WZ{x7_qO&kR7BA+TgU0Q^|pfN?5+YgU;V9^#rgFZOx~J&>oiDh8IidES!QH} zg6x8TMv|)lVGwkCKeg`nqaqWe==_KG77#2V-uJ_8X1}fFU%UM47W+T$0h0u>Nem$C z1pAJt2#i(~oB`F^<~7fAN@}w7Fqs##NvOFLGd3p6elw)>%Y%}*q1&M zLEmgIws%W=g5(rZX%geN;cw`0!xofQ?c$4vBszMY%OmzOPtSN7Mko5+K`)6<*C zlRf?8(=CM+;)V4>jp2#)x!3B~*G%9H>5uo1uTK|4>%-f-50|$cKod&fQ7QA~K*0C) zmhkoAF|uRj1waV@0M(W%?Q_@nMe9i5r}q?JTY>Kr$=wfrg|+PUyQ^*f_Pc>jVuepB zt#N?Qep@Wftyw7ZSP-1_(`m?OQ#%<5bi7Z$lSk6G&?mQ>cjg&in9ooPA>=Z&^)Mlt z@~FSU`x$#DvYX3sRAzw%7an04obC=`eLV`T6KTsVOoOTMg~6#wE>(bD95937+NBOo zCK{j|LUH?~k!o4Pwo77-AdpH+1-=-ca~y8vOGUb!wobmCpY$lLezd1FCWm68o)Rv_o*i#lEIe)u_d{wGInrQ)2W8vY1Y4yYs|H$%I2^Fj)osg zT_Bi!1p~-uk8#qPnb6mF=swJ|5XaURNBPAj(sc?urN*Fm_3leoXEz*nIndewGgKDL?*X5e zxPk`OdE;x3SfMp=&rJwC0lPUOyCq_4+2mb z-|kyj=z#nC%w<{Dl!6DiSVaHM+lW~uM|P6!V0cpBtJd`c4M=d$#3e=T;Aq{~8FKB% z8cJRM(&6YnJBSF!PMa#+0&YGkgovqDqgV>p0Uk=*;l4RmWt>af?zqWQ4yH!QYYDgR zj&E>&&PHOi_rz(9%xSQ>nkw$GplWY31AbO9q1v*)3`|lBP9JM-+ClwkzlTnXJu{lX z_fiF?e41xZTX@fvf$3}bMsp`3`?o!>PYYBTm*H8CyktZ^G2M4U7k)w$%|r=%UL*Ld z6N)1{yb4#!)wn;6L|oP>cq1e5^sy`;xYKhkF}tRb@`Y}9QJzLd-)jig9~Xo_bDyuxyP^rrRd{=I91Na(Nzidv zm*cJh)O&OIFS^ZN2tE`{MYnk-^shKZf?S}o71+q|gVJK>?z=V~k>Y!}$QxI2pF)b4 zn+7dFutczR2nuUlUN;f z^ioX*U0z+dC`V0|Wix-^D32oz&Db&{riS2&uYi$IDq|g1 zdrrn@p2mwV<;DB-gh>I1>+{mE`uegT>s<3{u8kYcH)`qgE#i?iSj6&VWM=oI3+i;G z}!$-?54F#emY4W>*uxBc>}oK6DQ{VLtYEdCkwHDCN8NEr!Jy zgu5}>w*B=wPhPcSJaL?-)w#-9mdh}qSd=M ze6r6Vu3_J$AG6zwx-~JjISAek$rcOMejskDZMX3F!1s)-qq`E?A8>os(-s{ZecOGT1T9?8@Ta^!$w zskRh!!TEclMXVK-)h*kXsdQJQd9wr`PYEc?OC`~e`7}w>NeAj8_vqfN$ix7fTO^Yh zEj@!u7O_bvsWrVX(l?Dsy9=eV{*;PC&w5{AG1m&Dw;~&9lpW+JaCVkTWxI4JkMX~# zB!liJu|n2j#pZws1)dCRn|~BrbB^8ACB;Cvx2#XG0OqDXseyBt)gMXmvc)5r!jJ#qj`I&k$GHv;i4IvF zT47b9MF2Hj<&w7r?KIgpWU|ZSCm6v9&5`jHx0p*Xzi>*fbtfJLhxQ%BjO`}_=QA?T zKvjQA;$U4~@k(pnAvN~Ar=;AMT=d+*;vXMw!#@bj_*gS-bL2 zv<9O_b#uuW_?ifF9@GTbwdNCT=txANyDKv1gS=SfdKHPk{eNH{vPu9uuO08U`S4N5 zwZjSQV1gM()2WF|N#{zO3%+tfRBM!fBH#0@5&s?sB2nI4BP5@8Is(aM-~I`AyZ3(0 zDhh3{rS`3H0+QmUrvyb*~ZC1pEv@5i#fSCO#kWE*n%U=J{8E%dR~96S*G zEgmI2qRDZ~cyR4Bu&m=6@>PImmdLJ$i=-2XV6ba>T~RPM$Wn*-H4*6?acoN^^ctvHyDV2;;;r_UATJC+Q*lFWvfIL5R=DSPvzTZ4 zT`r_++26*o4GALrXp8yZ_^v*6c|8){$0DW6GEur(@7{pBvT1RWd0ma}Gc1J@bKl5Z zpV^?13NEB%&6rC$_`BlDNim$+O~ljkf; zNxXLy6R@ZFnkY3IQ;pO=4+kYI7jncz8gVCq&m{Z)>sZ?u5jV}yh)$QP@Gk=3P&(&|o7BaU_8zm|vU`%TvGM3g-#j68Sbt34-9)0Q7m9IYh|XP$T!d@zrW zZEPar&F|6*_akLb)WgPDf=ICY82SrjiMy%Wi8PJ$`1)#2#xi9fMw>#cm>>{qUd^NH|oV z>Z$|<3qUQChDQ^W+Fe}EC0WR87x;S%iy7>w6L(@gNM7~5_s_Q3xAGH#b(2`z0oJ70GW>iWm)KkQ zWnmfS?D_JLMU(c~kmJ6};RSR0dRAraOI14m(IH?uiuk4QiJM_^M^v38qM8)9!(7b> zGoDEsejL>pHFCoMdj82^PFoYqBs8|?LBv|N=kFThEjMXwmyTT>fabIEKW>OeUWv+I z6IgLoLvr_BnKoFt)j3zFu!2GxZ;!QE__>&Z2GengQ_P{;{K`&eSGC&jjyIYhB43JY zdQhQkrs8=MPt=TrFKy}2%%uGx1MWE_Ymr-27nzrI*m1r-utPy+@i2Y`t)GZ0o74C&t#GxLr$zyp>ZRX$Wj=eTGl^Yll~^NCyrJa z5e`09!`MMy~MVp4)1S88uiEcbu8y|;+1Br zcgE}UE7+>{tx$38x#6xiH}e2L>t3>{Yo5#5E3L;E=5pkjY^pu2zmF|`%A`B2q-en; zbE^nxKsy>%B#L;4vIpZaKbhnC9jf%_z^e;;Fa7klS09NBfi;ovvey zfX?)Z!Zy-g5GXw9Zj&V-ogEsD`${qL1r7!~cZ@w>c2lvB|ZJPTyg$((0 zalB5lD)`$ZmSMT_rHDJsbN}d^%@2+O>Yb<_rag0hcCxU1A$;q+df%>WpqY!1ec63C+3tYzM3DO zkZ8*^qjp>E&5fLgOix%*P6#JeZQWV^A(>Gh%13q?2%umL&DoZ>I9#}mM{aqLbCG|< zoj9KS`3Pw~2#`{~E}h(jNM&yr%?C#i_O89Li0|&`j1uS-V@QfkDs&3RA24Z5fOwEo zl{9V`52vA(!i0CgetSJQ}hrHVn~QxaE;f`BOvAjA|}t(z8=++BK4< z@oPp})zlo(flG=i6%UaKsy?l^A}mN3@1#^JP88YzL4rC%vAE_(KefyRjjEG@MzOG; zX8!Pj2thmzc(Q6q8vib^+c6_jrG)ox8}YLZkYfa_SE* zKaDC#15G72jcRAw_iKc5r9SF`<%|c&mea8e!;x!*wUe0mx2=npbXRZ2!#C_g56>A& z&(CGHk`|=3APpMpXVDtM{oYmW*mNrjc!sv))CGadXo z|J?pjcG^qPr%*s`&xTpFR`#qfaRRlG&s>k)bl!$Jo*rWs?%=Me@*LKoq=?@3m<`1 zqLCu@Z@}I`lhW|F!C%XrEkDZfe-|prM{65`>YhWT5syWx0qYA3nc4f*VaIhI*QII z*H1<$J92SrYfGuw7!F2Copb&0nyHwV;U|Z^Br4<)Yd+~=+Ou{0&+|h~r<|F(^b+jN zJEtr4xjTapr2<+JI#my(v>TxMJiy|HrNjsd>d&CEc&@7iQY_Ki+#Tq18(Z6@rp5$P z6S(%TftnwV%WeY9en*zk(+V!7JUv$mVUc^dUx9oNVQ=`B)l2W)o%-y-IpLyc^|Q5B zF1Bm2!-|3<*cqB!wn9;(VP`nTmqMUfmGojS^X1UicTC`Qr^ELoi(SiMuY9sbo%wjp z)bG_&GqVv9Gm_tfG zxGN^IR0Fy*Auu0VolQM}o*d+UgKcCOMC1> zK2DWWdu*6Cf(G~c4=do1W7bO)?$aKf5(v;mI6}U78Ea4pdWAhu#;Ln;2u~vWpwSpx z8gMMPA5}AK1INH-Cw;gp)HSH`{T{AmL92FeltWi9%N5A#%$kK6&a!4?D%e!E83c55kzR%Mta>>W1o=8_1JqxfV2lRrZjK}@kypEJ5V>)0THBmJkU&u0}O|_H)vK*4Z zQPa^IrVhJNqlt|NvRqH)cufT^%`!T!#(;LU;-qs>RB6~oj*ZzoKJE|x;*?2fSzM#G zvNN)FUcT26Gs&Xw?ln3Fp&G3HJk$t28gh>C9zmrQbGq3yRMrL>WL<*pOGnXJ4B!BEdcVfXR0ehAh z^1-}Hu;P~{I@qK^0$%*k5{loqzE;t13kp(35CNJFR$5?#B%917V`fNqilI23g2S1#XC3a@#h&Ou#`X^G#X8!axG(-!}&F0E!-9FDB#P>IDF+ zG8zTsCd=cN5I7zEY>O|W6Un1?+hZgybF~aJzVpiWAB4PA;CJ?_K4(*o`d|&PR4k!@ zmSnvTVpX#)pV~lSAwH#iy`*v?NjU1IoVF+BUyl*6>Gh;{SJ$5NQKe|PA;M*+$*O?v z^n{p!K)EaO`$+^&i18V#ccTsTPXIP=3bCgLNoa1xmmE{N{*9qgY=&Iy07_fL0A2c7 zXx`-F1_38A@HJF~-NCA@<(7VpFi|iE@ix5a_!U$Ht@Vro*kJ0Vfgg|{T54SDZZII_ zG-ED$0kVT5bQobydI5r=SY_ifQ7|Z{>gkC@xtK^7z#2Y@_%^VHMgj@k2#&a&(c2)u zy(F2A^0FWdK5V;IHyDnv3f2}~tKcR>nxFUSJZ4x3?uw4ppC&_MB`poIHg(R47ko&z zjRp`VLxMk2&GRcEN7dtpT|-qm_}3%o1&#h*t~|fX@bsb7A@IHujXx6V^&>3Nvw%Wz z^w<6fq zIIbBnxlAK#dD@TVA<1WGfzK*FV)2tdkuxf90Tv>PGe|{Zc0HzZVuTG7oWQdzexdjk zNJ)UCP~fAO^BtIn13zhS9hh4N$|oqwaStoY+kM>0BW)wNtw)Ow3&Ev3N7+Q4cCvd8#&w&t&rto?UXATc$G^ zv&!<%o_-~72RKMIC~e-yVYDzqBQtyx;L zb$Sf6bx^fl*F&WhR!jZ!Qxyw`m~nt4rKSPa>q?5Mn2#facoy>3m87^0FMcLN+ggJ= zYo%R6>2XS;GHM2LomWmN)yt7m|9soL*Fw%jn@<>uoMMjh3Iv9MdNF&aVHKx+Y!M+-AyTxj%yv=rlK|5n{*F)QDaktW)ly@J&gK=7E zBVw6P>yJ766UskJgfQ{*(P(#|ZN`INqZA-;y;z(9cvA{l`pYEFKu!Wyev#J$-`X0S zq^v>8*ZhI2O}30a{S&j)J1E+2iT)FnR(a>AXEtrJHE^|9KT)mTH#rDY5x`nZJ#Z1g zPEDEk>pwvigASr|rC2{%rl+=ldh*eJY^0j!BdZ_sD*Y`1Jfp>k8$4vw(0Se!N-Z%h z<#Bm9+*@z4C3UNQ7Iz$!Udm?j`Er^VgHjSrm#lnP@3Nl?3Eb{(SwE;%2(Lb1-{`{5 z&R=yM$76+S%UD}o3HfcFcmuXFI;V1G#bCZF%nrhi(1gkO6uUu%OuZm4Yd9zro80#G zK1I@C6Yg<;nK;tG2#XBWE**ktpu%3y5AV2bP=1cfJqwg?J5jm(eI}Z4%43rZFi{Ly z$tb#oYT4+&6f#Zo-MJ_F^c{B|V8TBLk37cjoe*CaIBM?fuE{IQhJP<)3Su7ZN?-!% zr)IG?uDL(?bLlYw;X_trf>s#o52*E4;Um6fABMh6cUQvFT#+pu41AnD;CC8MbqK-f zzZJhPdCfEiAMGn(ldRH8L95;hXf!wSRmBTDHMmqa@@eQ8o)Qb6kJ2^Bfdx#YzO^4i z%GItWmn2}H98?F>zQfDTV~f0qI#J_~VoMFgEr(F5Ki{$i8&c7`G;^4rh5gyCiK-sAF=bM0c={V;t-#S}>iEe! zeYvCbc@5roqH&{eaS@M+j}N?ERX|;ovAeltx**o@&CGbdM>o-4&zo&}DB;&{J#rXO zSh2I^+hr9NQ`4ndfpu4}PidI1^T6DbNz|=RxpKEpc?f91T_3jFxBIy5Ee!ju%=8r` z)&`aKEM|6_V{w|lkgG=5Ipj#ZR8jLc%!#hQJcjJn5PF{Sv7@V~edBE0Ze0Pkbh3Q( zDu7KwoGq-i#q4ot(Eym!2uL+n&6;G2d*lwXOAP@^Cag-SpM`0YKNjM6?q9ZfNDLJo z!e%XPSIivcuCw3qGzmax2e92TmmXyBcT~$2UvC&!=5qPgAJ?k+My^3YvHSX7!N)cp zh7fTSIeopE0Wv^(rfkQbBfb1^!VS$w8no85H}6#()QovKKO=afU|(u>twfQO?fyXb zVq=9X<$&!emL8)~AStchhbI1`8@W4Q$_4ODgKHWCL`0-I)2K>&wtrxQZ95t%?F3}V z3Kds*&3#-Sb4_yk*8lYQqh+27C%OTuDXN8{G)ya#K91D$bHt2W zB0u$5iW9a ze7&dJV@y5K>V&;oi6vXh>Xg-hL)@6F4SwaFE_4lwNei}nJ%w@7^jh|^0yg)W(udIk zV~hG*EQiur6^gptDu?+mZ28PQpxpopmPG(}u4GB|g|%$8+?4E%$*s)4el>WKTL`If6LN_+Z*LJHobMFxb$6iq(fQ_YWt5L1Q6p z0y}Eqzick5K;~uD8$u)aGK-NrhEwBz`rc&ze?>6*&b!cmRrY1kT>79%5H!0o%38Vz z%L2@$|G$c0od17EF!KCwAsBtJ!$TCGDx?+XB(Qh?nwWtjS2{ZGi7vKrRu*$5v+xz2 z5%sjKRFfyoj0Psfq#`);JBW(jJd3t2W>dps=QRSG)U?XKJl4|H|6to z!6x4yP*Vc0Pdi$5tM?{>xr~5mW;wVUrdqj0r%HP^Y2;&lN0cKgEK%AF*p$oqk(X$4 z)>FmvX34i97BEm`)lp-mHnLcGOC3p0LL#`zy6A) zF;>eP6QJAFb1{h4sYN`Vn;x*uGwMJz61YS06@!nph zL^1daEH-OZ_n74b;jkuRFHj0-O@VYYR+)z^G zBB(hE+!his_-*a1S+doC@&d4ReC95>VlUo> z_A$@8SZ%t9-FwzlR#Z0Y<;EC20t~HKN+p9i?_$94Q! zrpf;nFPX|Z?}4N~Vg3wyfYf`U^KA-4(i@(7p~O%}KX;8-BCf zq+wyI<&D#QcdgSv1ZgNOUuBVQDZDHD!@6(h^;@aznbLmGjt7xkEj3giz>@s zw$W5W&U@S;@;9DDKo#f%w>&zOnj7zAVqZNqnwKxyuc6FIdEV)?HdH1xvk5sTKu3YzvSwkdWR=S2Pr zkdhj5POS^SQfJg))szvkeSiF&3%NQaPbRy?KH%WH@2F)}3MFtsS%z#DiAuIx@Y857 znx)l&TnLY0=yYF!FDl;QXwnnlW@QEUI~RrvX42GDq9kbgP)pT+w8B?sx#z;dme%dI zAG3_1k83rd^RtjcK7W;~6N#@+F`5Yc07SVlVhNG~)L)f8f4&=EosxU4oW8HdjIK-Z z=> zQno2wuhL_W%yF1ui#ucHj!S8?#l}FhA$j+gb95GJNf)6jEdM55=QwXFT+3g2Kh=n0 zfJux%@I}^~m7=)iHY>BP-5RYk=J!vH-?23ch@f=7hMmK<(RT012X(uwE#r4Tj)t0Q zLAZxenlYB*jatm5#Xh|Sz8V5SacS5HO}TRINsCQKsQB3J<`GY-c z$3}>vo&nq9^a@~!+M|!){UfZHl7XkR5!&`*b;QPMs zhV~UGe%Hw}<3CP2;rO>wye|Wl8rm4TjKVSULBAPETaLSd**`X>ReafJv zQmKWgo;7iO^Se+NjviN@JS@t48?jV=O~1Fk8RlY=GpzzP6Do|H)sNQ&PwZGQEYDFn2`UW9dp_D!t`^>jmol z&WI0CVmc-oC@=6Li&Ex~$Weo>s7v{?lT8&;j@0gj_kKWH2rSL9 zo2prK?a*VZf3|3a+poUjpA^lq?h^v@82#3Sc>@Ty9_tr=cRp18!y}y68e7NZIY}Y`l6Y(Fn zfMKZxp?g&d{y)}{8!^R-Q%3Pmjq+?WukGLULY40>L}5910kYn?$MZ^^lub&6J6ATP zf6$6ev#f2TCkypjKrAsBh$RBwRNxU78>bO9J9Xq|G`Tx z%6W#*hglB*EQ^nf*wEe(N-C)7W-$g$1U0Zkk+(gT01Tm^rT#MSK&AGWqheTn#S2(> zZI=$r-!lO%HsE$w?0mc1c&PvP{6bNM{9k+YUP$HS@>dhnLP7%!)6?t!U@^L3f@cmK zwecq}9sqM1>AvMO0tNZ=FJkdu!sNdLHmgWvq~zZSPTHEdKQi=c*iIVJ*4mP{K?yVn z+-1;eV3C1{1Qt?1W2QgF}wwV#S zUo_<=NvmC`bwr+i64SH^KX}H9|B>;ua$9bRjy>M1al9_Y?3g_LzI$^68`w8B zSIK(d9@}7PyWAZPxP4B{4t9AK47|Y<4?%RPz&9TMk z6H&f)pnJ(Z*T}%fC4-ZXyZ&>0*Bl@H*B&r63l%>5UZk@c4NwXkn*L^c8Ml0g#nybI86EBgoLsh#m&rr6a`k2L1@_Bq*l>b3=!g9P2XbQn;L3nfoZ z;oj4pJdz#v&C+A}-wZ@YPghUH=O@F7RtQ@-_AeT8J=;|{N#HDTKU~cp_SehLT{F62 z3ie_nn4M>fxyvZhKa~1Q5s4(zzl@CC43!rcpzS(aU|L4qF{$vPVU+JqZ!(TZc8m(w z3w>i5YFK%_KxZ#9t6U@D@gZ}>t%!E53`!H|2N<9ZekOBFq330N@?7DqkBg+E&S%do znV!i=t^hvo$fB|(eTwdnUN1cXw@+mFfvMjHdaYwQFEDqKM$~GT1j;nueMXpNix>Hi zuY3&nfS8OnUt$G{N=`Xd*fGx?hEEg(C z*<#L%Td50f{I(I3nkkvYcuB9CVeUR5$k+|M%jMPNd!SnXMY%d9tszC4Ode?Xym^bi znUZI{{>Upob5r`Dw@5SDN+s2*O$)@~s%aK-4jP>E)Gq|5>@$k?edx~YvLNAN=p*ez zRL5;*w)aWC)e?LBt1^NUe6CITLs`@md(5=R*^zpw7CX+){m)5iPsh&`6dw;2?7>c- z1r{^g=mVw1@7HF^3UV|S0e`IdYTuUm4RkYMf@Nl@m%bE6Yg>QKE39y6=DKN1;j_jV z%^|uO@kgyxR_nG~ny{PMW?l`3$4=Cyg6Kcip1Ro58H77((w2#rtc{}SGT z%*Zlxv=cVFy$(a!gD(E6DR;3AS-L1)8G6_U*l^dQ7pd&PTT>IS^dfT%0DjpR)XM3C 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

    w&@ivhh@#+1kT0DDdD%hI{Cg80D=`SMgEC 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�hR{$Ue8NC1QGogAksq zpwP)+le>gE1It84GlpV2!9zGaT+?V*?w2I`Dl_EbHrzGuJk#G#r@APz-!x~3rZZs;fW$|40Y~pWe{L29uDgHN5`QdG&qqNskktBb zED#tw848>tp*H?{rkn~O@F`vZfseJGL=$0r?a@ojx zm!-UQupS`zv5fu1r*^3j?+sW!q)137-%)n+Dv9e5_0Z9d6K+69?km-BXs2riaxdJS zr{9nRw*XB*vcD09zRG?FSG}~T8lJW-IXQ$d`DU}qb+VT#YwE3&eG^ZzcFJi5-^l|eTI{IjQgIn@vy*fIWb z(mO`~mO9m;E0XS^?Jo|35Z65vv(WI306le54|bAq)d%>-bLV0=mC-CH+GDX?Xai3o zBh)T?>S)6+1EpmWt1J5(htB?%gG({YkX_2|$y^{dqO0PJIo0G0Q1%!U`#_umHKdB; zA_pQkcZb6lFu0Mi3`}49ZNMX6fq}UyzE%ABl}+19UZM_tk_m8yTZ91)D$6˙j8O#c_tJ}Z?U#W$QVTbGR$me)z#5=$ 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

    }C!d*a12)O7xGAKQ6dKWL& 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%0AnUW;0la1ypB!DHi0m|c8Ejr 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 Izh2@04_+sF5dZ)H literal 0 HcmV?d00001 diff --git a/session-core/pom.xml b/session-core/pom.xml new file mode 100644 index 00000000..a24f02ab --- /dev/null +++ b/session-core/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + session-core + session-core + 设备会话 + 鉴权 + Token + Redis 兜底。 + + + + com.lingniu.ingest + ingest-api + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-autoconfigure + + + com.github.ben-manes.caffeine + caffeine + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + diff --git a/session-core/src/main/java/com/lingniu/ingest/session/CommandDispatcher.java b/session-core/src/main/java/com/lingniu/ingest/session/CommandDispatcher.java new file mode 100644 index 00000000..30958922 --- /dev/null +++ b/session-core/src/main/java/com/lingniu/ingest/session/CommandDispatcher.java @@ -0,0 +1,23 @@ +package com.lingniu.ingest.session; + +import java.time.Duration; +import java.util.concurrent.CompletableFuture; + +/** + * 下行命令调度器 SPI。 + * + *

    用于 command-gateway 把 HTTP 请求转为设备命令,等待设备应答。真正的实现需要与协议 + * 模块(如 jt808)的 Netty 通道绑定:按 sessionId 找到 Channel → 发送命令字节 → 用 + * {@code CompletableFuture + 序列号 map} 实现同步请求/应答。 + * + *

    当前阶段提供接口 + 占位实现,具体 Netty 绑定在 command-gateway / protocol-jt808 + * 的下一批次落地。 + */ +public interface CommandDispatcher { + + /** 异步下发命令,不等应答。 */ + CompletableFuture notify(String sessionId, Object command); + + /** 同步下发命令并等待应答。 */ + CompletableFuture request(String sessionId, Object command, Class responseType, Duration timeout); +} diff --git a/session-core/src/main/java/com/lingniu/ingest/session/DeviceSession.java b/session-core/src/main/java/com/lingniu/ingest/session/DeviceSession.java new file mode 100644 index 00000000..b2261608 --- /dev/null +++ b/session-core/src/main/java/com/lingniu/ingest/session/DeviceSession.java @@ -0,0 +1,46 @@ +package com.lingniu.ingest.session; + +import com.lingniu.ingest.api.ProtocolId; + +import java.time.Instant; +import java.util.Map; + +/** + * 设备会话领域模型。不可变;更新通过 {@link SessionStore#update} 原子替换。 + * + * @param sessionId 会话 ID(通常由 Netty channel id + 终端号生成) + * @param protocol 协议 ID + * @param vin 车架号(注册/鉴权后补齐,注册前为 null) + * @param phone 终端手机号 / 设备号 + * @param token 鉴权 Token(平台下发) + * @param peerAddress 对端 IP:port + * @param registeredAt 注册时间 + * @param lastSeenAt 最后活跃时间 + * @param attributes 协议特定属性(协议版本、型号等) + */ +public record DeviceSession( + String sessionId, + ProtocolId protocol, + String vin, + String phone, + String token, + String peerAddress, + Instant registeredAt, + Instant lastSeenAt, + Map attributes +) { + public DeviceSession touch(Instant now) { + return new DeviceSession(sessionId, protocol, vin, phone, token, peerAddress, + registeredAt, now, attributes); + } + + public DeviceSession withVin(String vin) { + return new DeviceSession(sessionId, protocol, vin, phone, token, peerAddress, + registeredAt, lastSeenAt, attributes); + } + + public DeviceSession withToken(String token) { + return new DeviceSession(sessionId, protocol, vin, phone, token, peerAddress, + registeredAt, lastSeenAt, attributes); + } +} diff --git a/session-core/src/main/java/com/lingniu/ingest/session/InMemorySessionStore.java b/session-core/src/main/java/com/lingniu/ingest/session/InMemorySessionStore.java new file mode 100644 index 00000000..3b59d0c2 --- /dev/null +++ b/session-core/src/main/java/com/lingniu/ingest/session/InMemorySessionStore.java @@ -0,0 +1,82 @@ +package com.lingniu.ingest.session; + +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; + +import java.time.Duration; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.function.UnaryOperator; + +/** + * 纯内存会话存储。支持按 sessionId / vin / phone 三种 key 查询。 + * + *

    失活清理:基于 {@link Caffeine} 的 {@code expireAfterAccess 30 分钟}。 + * 生产环境若需多节点一致性,可用 Redis 实现替换此 Bean。 + */ +public final class InMemorySessionStore implements SessionStore { + + private final Cache byId; + private final ConcurrentMap vinToId = new ConcurrentHashMap<>(); + private final ConcurrentMap phoneToId = new ConcurrentHashMap<>(); + + public InMemorySessionStore() { + this.byId = Caffeine.newBuilder() + .expireAfterAccess(Duration.ofMinutes(30)) + .removalListener((String sid, DeviceSession s, com.github.benmanes.caffeine.cache.RemovalCause c) -> { + if (s == null) return; + if (s.vin() != null) vinToId.remove(s.vin(), sid); + if (s.phone() != null) phoneToId.remove(s.phone(), sid); + }) + .build(); + } + + @Override + public void put(DeviceSession session) { + byId.put(session.sessionId(), session); + if (session.vin() != null) vinToId.put(session.vin(), session.sessionId()); + if (session.phone() != null) phoneToId.put(session.phone(), session.sessionId()); + } + + @Override + public Optional findBySessionId(String sessionId) { + return Optional.ofNullable(byId.getIfPresent(sessionId)); + } + + @Override + public Optional findByVin(String vin) { + String sid = vinToId.get(vin); + return sid == null ? Optional.empty() : findBySessionId(sid); + } + + @Override + public Optional findByPhone(String phone) { + String sid = phoneToId.get(phone); + return sid == null ? Optional.empty() : findBySessionId(sid); + } + + @Override + public synchronized Optional update(String sessionId, UnaryOperator updater) { + DeviceSession old = byId.getIfPresent(sessionId); + if (old == null) return Optional.empty(); + DeviceSession next = updater.apply(old); + put(next); + return Optional.of(next); + } + + @Override + public void remove(String sessionId) { + DeviceSession s = byId.getIfPresent(sessionId); + if (s != null) { + byId.invalidate(sessionId); + if (s.vin() != null) vinToId.remove(s.vin(), sessionId); + if (s.phone() != null) phoneToId.remove(s.phone(), sessionId); + } + } + + @Override + public int size() { + return (int) byId.estimatedSize(); + } +} diff --git a/session-core/src/main/java/com/lingniu/ingest/session/NoopCommandDispatcher.java b/session-core/src/main/java/com/lingniu/ingest/session/NoopCommandDispatcher.java new file mode 100644 index 00000000..6539dabe --- /dev/null +++ b/session-core/src/main/java/com/lingniu/ingest/session/NoopCommandDispatcher.java @@ -0,0 +1,31 @@ +package com.lingniu.ingest.session; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.Duration; +import java.util.concurrent.CompletableFuture; + +/** + * 占位命令调度器:返回 {@link UnsupportedOperationException}, + * 待 command-gateway 与协议模块的下行通道打通后替换为真实实现。 + */ +public final class NoopCommandDispatcher implements CommandDispatcher { + + private static final Logger log = LoggerFactory.getLogger(NoopCommandDispatcher.class); + + @Override + public CompletableFuture notify(String sessionId, Object command) { + log.warn("[noop] notify sessionId={} command={} dropped", sessionId, command); + return CompletableFuture.failedFuture(new UnsupportedOperationException( + "CommandDispatcher not yet implemented; configure a real one in protocol module.")); + } + + @Override + public CompletableFuture request(String sessionId, Object command, Class responseType, Duration timeout) { + log.warn("[noop] request sessionId={} command={} responseType={} dropped", + sessionId, command, responseType.getSimpleName()); + return CompletableFuture.failedFuture(new UnsupportedOperationException( + "CommandDispatcher not yet implemented; configure a real one in protocol module.")); + } +} diff --git a/session-core/src/main/java/com/lingniu/ingest/session/SessionStore.java b/session-core/src/main/java/com/lingniu/ingest/session/SessionStore.java new file mode 100644 index 00000000..32c94941 --- /dev/null +++ b/session-core/src/main/java/com/lingniu/ingest/session/SessionStore.java @@ -0,0 +1,25 @@ +package com.lingniu.ingest.session; + +import java.util.Optional; +import java.util.function.UnaryOperator; + +/** + * 设备会话存储 SPI。默认实现是内存 + Caffeine,生产可替换为 Redis 兜底。 + */ +public interface SessionStore { + + void put(DeviceSession session); + + Optional findBySessionId(String sessionId); + + Optional findByVin(String vin); + + Optional findByPhone(String phone); + + /** 原子更新:读 → 修改 → 写。返回更新后的会话;若原会话不存在返回 empty。 */ + Optional update(String sessionId, UnaryOperator updater); + + void remove(String sessionId); + + int size(); +} diff --git a/session-core/src/main/java/com/lingniu/ingest/session/config/SessionCoreAutoConfiguration.java b/session-core/src/main/java/com/lingniu/ingest/session/config/SessionCoreAutoConfiguration.java new file mode 100644 index 00000000..8c63d795 --- /dev/null +++ b/session-core/src/main/java/com/lingniu/ingest/session/config/SessionCoreAutoConfiguration.java @@ -0,0 +1,25 @@ +package com.lingniu.ingest.session.config; + +import com.lingniu.ingest.session.CommandDispatcher; +import com.lingniu.ingest.session.InMemorySessionStore; +import com.lingniu.ingest.session.NoopCommandDispatcher; +import com.lingniu.ingest.session.SessionStore; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; + +@AutoConfiguration +public class SessionCoreAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public SessionStore sessionStore() { + return new InMemorySessionStore(); + } + + @Bean + @ConditionalOnMissingBean + public CommandDispatcher commandDispatcher() { + return new NoopCommandDispatcher(); + } +} diff --git a/session-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/session-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..0f53ea0f --- /dev/null +++ b/session-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.session.config.SessionCoreAutoConfiguration diff --git a/sink-archive/pom.xml b/sink-archive/pom.xml new file mode 100644 index 00000000..9669e047 --- /dev/null +++ b/sink-archive/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + sink-archive + sink-archive + 原始报文冷存:本地文件系统实现 + S3/OSS 扩展点。 + + + + com.lingniu.ingest + ingest-api + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + diff --git a/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/ArchiveStore.java b/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/ArchiveStore.java new file mode 100644 index 00000000..1e7f7205 --- /dev/null +++ b/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/ArchiveStore.java @@ -0,0 +1,32 @@ +package com.lingniu.ingest.sink.archive; + +import java.io.IOException; +import java.io.InputStream; + +/** + * 冷存后端 SPI。 + * + *

    当前提供本地文件系统实现 {@link LocalArchiveStore},未来可加 S3/OSS 实现。 + * 同一接口既用于 JSATL12 报警附件的分块写入,也用于 Envelope 的原始报文存档。 + */ +public interface ArchiveStore { + + /** + * 写入一段字节流。 + * + * @param key 逻辑路径,例如 {@code 2026/04/13/LTEST000.../session-abc/file.bin} + * @param data 数据流(调用方负责关闭) + * @return 可回传给下游的引用 URI({@code file://...} 或 {@code s3://...}) + */ + String put(String key, InputStream data, long length) throws IOException; + + /** 追加写:用于分块上传场景。key 应在同一文件上稳定。 */ + String append(String key, byte[] chunk) throws IOException; + + /** 读取(用于重放 / 回放测试)。 */ + InputStream get(String key) throws IOException; + + boolean exists(String key); + + long size(String key) throws IOException; +} diff --git a/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/LocalArchiveStore.java b/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/LocalArchiveStore.java new file mode 100644 index 00000000..039d908e --- /dev/null +++ b/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/LocalArchiveStore.java @@ -0,0 +1,83 @@ +package com.lingniu.ingest.sink.archive; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; + +/** + * 本地文件系统冷存实现。根路径支持 {@code file:///abs/path} 或相对路径。 + */ +public final class LocalArchiveStore implements ArchiveStore { + + private static final Logger log = LoggerFactory.getLogger(LocalArchiveStore.class); + + private final Path root; + + public LocalArchiveStore(String rootUri) { + Path path; + if (rootUri == null || rootUri.isBlank()) { + path = Paths.get(System.getProperty("java.io.tmpdir"), "lingniu-archive"); + } else if (rootUri.startsWith("file://")) { + path = Paths.get(rootUri.substring("file://".length())); + } else { + path = Paths.get(rootUri); + } + this.root = path.toAbsolutePath(); + try { + Files.createDirectories(this.root); + } catch (IOException e) { + throw new IllegalStateException("archive root init failed: " + this.root, e); + } + log.info("local archive store initialized root={}", this.root); + } + + @Override + public String put(String key, InputStream data, long length) throws IOException { + Path target = resolve(key); + Files.createDirectories(target.getParent()); + try (InputStream in = data) { + Files.copy(in, target, java.nio.file.StandardCopyOption.REPLACE_EXISTING); + } + return "file://" + target; + } + + @Override + public String append(String key, byte[] chunk) throws IOException { + Path target = resolve(key); + Files.createDirectories(target.getParent()); + Files.write(target, chunk, + StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.WRITE); + return "file://" + target; + } + + @Override + public InputStream get(String key) throws IOException { + return Files.newInputStream(resolve(key)); + } + + @Override + public boolean exists(String key) { + return Files.exists(resolve(key)); + } + + @Override + public long size(String key) throws IOException { + return Files.size(resolve(key)); + } + + public Path root() { + return root; + } + + private Path resolve(String key) { + // 防目录穿越 + String normalized = key.replace("..", "_").replaceAll("^/+", ""); + return root.resolve(normalized); + } +} diff --git a/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/config/SinkArchiveAutoConfiguration.java b/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/config/SinkArchiveAutoConfiguration.java new file mode 100644 index 00000000..f455b55e --- /dev/null +++ b/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/config/SinkArchiveAutoConfiguration.java @@ -0,0 +1,26 @@ +package com.lingniu.ingest.sink.archive.config; + +import com.lingniu.ingest.sink.archive.ArchiveStore; +import com.lingniu.ingest.sink.archive.LocalArchiveStore; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +@AutoConfiguration +@EnableConfigurationProperties(SinkArchiveProperties.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.sink.archive", name = "enabled", havingValue = "true", matchIfMissing = true) +public class SinkArchiveAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public ArchiveStore archiveStore(SinkArchiveProperties props) { + return switch (props.getType() == null ? "local" : props.getType().toLowerCase()) { + case "local" -> new LocalArchiveStore(props.getPath()); + default -> throw new IllegalStateException( + "archive type not supported yet: " + props.getType() + + " (only 'local' is implemented; s3/oss TBD)"); + }; + } +} diff --git a/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/config/SinkArchiveProperties.java b/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/config/SinkArchiveProperties.java new file mode 100644 index 00000000..a7174655 --- /dev/null +++ b/sink-archive/src/main/java/com/lingniu/ingest/sink/archive/config/SinkArchiveProperties.java @@ -0,0 +1,20 @@ +package com.lingniu.ingest.sink.archive.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties(prefix = "lingniu.ingest.sink.archive") +public class SinkArchiveProperties { + + private boolean enabled = true; + /** local / s3 / oss (仅 local 有实现,其余待补) */ + private String type = "local"; + /** 根路径(URI 或绝对路径)。 */ + private String path = System.getProperty("java.io.tmpdir") + "/lingniu-archive"; + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public String getType() { return type; } + public void setType(String type) { this.type = type; } + public String getPath() { return path; } + public void setPath(String path) { this.path = path; } +} diff --git a/sink-archive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sink-archive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..4dcf699d --- /dev/null +++ b/sink-archive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.sink.archive.config.SinkArchiveAutoConfiguration diff --git a/sink-archive/src/test/java/com/lingniu/ingest/sink/archive/LocalArchiveStoreTest.java b/sink-archive/src/test/java/com/lingniu/ingest/sink/archive/LocalArchiveStoreTest.java new file mode 100644 index 00000000..3dbb60b7 --- /dev/null +++ b/sink-archive/src/test/java/com/lingniu/ingest/sink/archive/LocalArchiveStoreTest.java @@ -0,0 +1,38 @@ +package com.lingniu.ingest.sink.archive; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.ByteArrayInputStream; +import java.nio.file.Path; + +import static org.assertj.core.api.Assertions.assertThat; + +class LocalArchiveStoreTest { + + @Test + void putThenGet(@TempDir Path tmp) throws Exception { + LocalArchiveStore store = new LocalArchiveStore(tmp.toString()); + byte[] data = "hello-raw".getBytes(); + String ref = store.put("2026/04/13/sample.bin", new ByteArrayInputStream(data), data.length); + assertThat(ref).startsWith("file://"); + assertThat(store.exists("2026/04/13/sample.bin")).isTrue(); + assertThat(store.size("2026/04/13/sample.bin")).isEqualTo(data.length); + } + + @Test + void appendChunksAccumulate(@TempDir Path tmp) throws Exception { + LocalArchiveStore store = new LocalArchiveStore(tmp.toString()); + store.append("chunks/a.bin", new byte[]{1, 2, 3}); + store.append("chunks/a.bin", new byte[]{4, 5}); + assertThat(store.size("chunks/a.bin")).isEqualTo(5); + } + + @Test + void rejectsPathTraversal(@TempDir Path tmp) throws Exception { + LocalArchiveStore store = new LocalArchiveStore(tmp.toString()); + store.append("../../evil.bin", new byte[]{1}); + // 目录穿越:每个 .. 被替换为 _ + assertThat(store.exists("_/_/evil.bin")).isTrue(); + } +} diff --git a/sink-mq/pom.xml b/sink-mq/pom.xml new file mode 100644 index 00000000..639dc7d3 --- /dev/null +++ b/sink-mq/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + + com.lingniu.ingest + lingniu-vehicle-ingest + 0.1.0-SNAPSHOT + + sink-mq + sink-mq + Kafka producer + Protobuf Envelope + 重试/熔断/DLQ。 + + + + com.lingniu.ingest + ingest-api + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.apache.kafka + kafka-clients + + + com.google.protobuf + protobuf-java + + + com.google.protobuf + protobuf-java-util + + + io.github.resilience4j + resilience4j-retry + + + io.github.resilience4j + resilience4j-circuitbreaker + + + org.testcontainers + kafka + test + + + + + + + kr.motd.maven + os-maven-plugin + 1.7.1 + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.6.1 + + com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier} + + + + + compile + test-compile + + + + + + + diff --git a/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/EnvelopeMapper.java b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/EnvelopeMapper.java new file mode 100644 index 00000000..3eb4a645 --- /dev/null +++ b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/EnvelopeMapper.java @@ -0,0 +1,119 @@ +package com.lingniu.ingest.sink.mq; + +import com.lingniu.ingest.api.event.AlarmPayload; +import com.lingniu.ingest.api.event.LocationPayload; +import com.lingniu.ingest.api.event.RealtimePayload; +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.sink.mq.proto.VehicleEnvelope; + +/** + * 领域事件 → Protobuf Envelope 的纯函数映射。通过 switch 模式匹配穷尽处理, + * 新增 {@link VehicleEvent} 子类型时编译期就会提示补齐分支。 + */ +public final class EnvelopeMapper { + + private static final String SCHEMA_VERSION = "1.0"; + private final String nodeId; + + public EnvelopeMapper(String nodeId) { + this.nodeId = nodeId; + } + + public VehicleEnvelope toEnvelope(VehicleEvent event) { + VehicleEnvelope.Builder b = VehicleEnvelope.newBuilder() + .setSchemaVersion(SCHEMA_VERSION) + .setEventId(event.eventId()) + .setTraceId(event.traceId() == null ? "" : event.traceId()) + .setVin(event.vin()) + .setSource(event.source().name()) + .setEventTimeMs(event.eventTime().toEpochMilli()) + .setIngestTimeMs(event.ingestTime().toEpochMilli()) + .setIngestNodeId(nodeId); + if (event.metadata() != null) b.putAllMetadata(event.metadata()); + + switch (event) { + case VehicleEvent.Realtime r -> b.setRealtime(buildRealtime(r.payload())); + case VehicleEvent.Location l -> b.setLocation(buildLocation(l.payload())); + case VehicleEvent.Alarm a -> b.setAlarm(buildAlarm(a.payload())); + case VehicleEvent.Login lg -> b.setLogin( + com.lingniu.ingest.sink.mq.proto.LoginPayload.newBuilder() + .setIccid(nullToEmpty(lg.iccid())) + .setProtocolVersion(nullToEmpty(lg.protocolVersion())) + .build()); + case VehicleEvent.Logout ignored -> b.setLogout( + com.lingniu.ingest.sink.mq.proto.LogoutPayload.getDefaultInstance()); + case VehicleEvent.Heartbeat ignored -> b.setHeartbeat( + com.lingniu.ingest.sink.mq.proto.HeartbeatPayload.getDefaultInstance()); + case VehicleEvent.MediaMeta m -> b.setMediaMeta( + com.lingniu.ingest.sink.mq.proto.MediaMetaPayload.newBuilder() + .setMediaId(nullToEmpty(m.mediaId())) + .setMediaType(nullToEmpty(m.mediaType())) + .setSizeBytes(m.sizeBytes()) + .setArchiveRef(nullToEmpty(m.archiveRef())) + .build()); + case VehicleEvent.Passthrough p -> b.setPassthrough( + com.lingniu.ingest.sink.mq.proto.PassthroughPayload.newBuilder() + .setPassthroughType(p.passthroughType()) + .setData(com.google.protobuf.ByteString.copyFrom( + p.data() == null ? new byte[0] : p.data())) + .build()); + } + return b.build(); + } + + private static com.lingniu.ingest.sink.mq.proto.RealtimePayload buildRealtime(RealtimePayload p) { + var b = com.lingniu.ingest.sink.mq.proto.RealtimePayload.newBuilder(); + if (p.speedKmh() != null) b.setSpeedKmh(p.speedKmh()); + if (p.totalMileageKm() != null) b.setTotalMileageKm(p.totalMileageKm()); + if (p.batterySoc() != null) b.setBatterySoc(p.batterySoc()); + if (p.batteryVoltageV() != null) b.setBatteryVoltageV(p.batteryVoltageV()); + if (p.batteryCurrentA() != null) b.setBatteryCurrentA(p.batteryCurrentA()); + if (p.fcVoltageV() != null) b.setFcVoltageV(p.fcVoltageV()); + if (p.fcCurrentA() != null) b.setFcCurrentA(p.fcCurrentA()); + if (p.fcTempC() != null) b.setFcTempC(p.fcTempC()); + if (p.hydrogenRemainingKg() != null) b.setHydrogenRemainingKg(p.hydrogenRemainingKg()); + if (p.hydrogenHighPressureMpa() != null) b.setHydrogenHighPressureMpa(p.hydrogenHighPressureMpa()); + if (p.hydrogenLowPressureMpa() != null) b.setHydrogenLowPressureMpa(p.hydrogenLowPressureMpa()); + if (p.vehicleState() != null) b.setVehicleState(p.vehicleState().name()); + if (p.chargingState() != null) b.setChargingState(p.chargingState().name()); + if (p.runningMode() != null) b.setRunningMode(p.runningMode().name()); + if (p.gearLevel() != null) b.setGearLevel(p.gearLevel()); + if (p.acceleratorPedal() != null) b.setAcceleratorPedal(p.acceleratorPedal()); + if (p.brakePedal() != null) b.setBrakePedal(p.brakePedal()); + if (p.longitude() != null) b.setLongitude(p.longitude()); + if (p.latitude() != null) b.setLatitude(p.latitude()); + if (p.altitudeM() != null) b.setAltitudeM(p.altitudeM()); + if (p.directionDeg() != null) b.setDirectionDeg(p.directionDeg()); + if (p.ambientTempC() != null) b.setAmbientTempC(p.ambientTempC()); + if (p.coolantTempC() != null) b.setCoolantTempC(p.coolantTempC()); + return b.build(); + } + + private static com.lingniu.ingest.sink.mq.proto.LocationPayload buildLocation(LocationPayload p) { + return com.lingniu.ingest.sink.mq.proto.LocationPayload.newBuilder() + .setLongitude(p.longitude()) + .setLatitude(p.latitude()) + .setAltitudeM(p.altitudeM()) + .setSpeedKmh(p.speedKmh()) + .setDirectionDeg(p.directionDeg()) + .setAlarmFlag(p.alarmFlag()) + .setStatusFlag(p.statusFlag()) + .build(); + } + + private static com.lingniu.ingest.sink.mq.proto.AlarmPayload buildAlarm(AlarmPayload p) { + var b = com.lingniu.ingest.sink.mq.proto.AlarmPayload.newBuilder() + .setLevel(p.level().name()) + .setAlarmTypeCode(p.alarmTypeCode()) + .setAlarmTypeName(nullToEmpty(p.alarmTypeName())); + if (p.faultCodes() != null) b.addAllFaultCodes(p.faultCodes()); + if (p.activeBits() != null) b.addAllActiveBits(p.activeBits()); + if (p.longitude() != null) b.setLongitude(p.longitude()); + if (p.latitude() != null) b.setLatitude(p.latitude()); + return b.build(); + } + + private static String nullToEmpty(String s) { + return s == null ? "" : s; + } +} diff --git a/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/KafkaEventSink.java b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/KafkaEventSink.java new file mode 100644 index 00000000..f2dd4540 --- /dev/null +++ b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/KafkaEventSink.java @@ -0,0 +1,80 @@ +package com.lingniu.ingest.sink.mq; + +import com.lingniu.ingest.api.event.VehicleEvent; +import com.lingniu.ingest.api.sink.EventSink; +import io.github.resilience4j.circuitbreaker.CircuitBreaker; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.CompletableFuture; + +/** + * Kafka Sink:序列化为 Protobuf Envelope,按 vin 分区,异步发送。 + * + *

    失败处理:Resilience4j 熔断;熔断开启时事件转投 DLQ topic。 + */ +public final class KafkaEventSink implements EventSink, AutoCloseable { + + private static final Logger log = LoggerFactory.getLogger(KafkaEventSink.class); + + private final KafkaProducer producer; + private final EnvelopeMapper mapper; + private final TopicRouter router; + private final String dlqTopic; + private final CircuitBreaker breaker; + + public KafkaEventSink(KafkaProducer producer, + EnvelopeMapper mapper, + TopicRouter router, + String dlqTopic, + CircuitBreaker breaker) { + this.producer = producer; + this.mapper = mapper; + this.router = router; + this.dlqTopic = dlqTopic; + this.breaker = breaker; + } + + @Override + public String name() { + return "kafka"; + } + + @Override + public CompletableFuture publish(VehicleEvent event) { + CompletableFuture cf = new CompletableFuture<>(); + byte[] payload; + try { + payload = mapper.toEnvelope(event).toByteArray(); + } catch (Exception e) { + log.error("envelope build failed eventId={} vin={}", event.eventId(), event.vin(), e); + cf.completeExceptionally(e); + return cf; + } + + String topic = breaker.tryAcquirePermission() ? router.route(event) : dlqTopic; + ProducerRecord record = new ProducerRecord<>(topic, event.vin(), payload); + record.headers().add("event-id", event.eventId().getBytes()); + record.headers().add("trace-id", event.traceId() == null ? new byte[0] : event.traceId().getBytes()); + record.headers().add("source", event.source().name().getBytes()); + + producer.send(record, (metadata, ex) -> { + if (ex != null) { + breaker.onError(0, java.util.concurrent.TimeUnit.MILLISECONDS, ex); + cf.completeExceptionally(ex); + } else { + breaker.onSuccess(0, java.util.concurrent.TimeUnit.MILLISECONDS); + cf.complete(null); + } + }); + return cf; + } + + @Override + public void close() { + producer.flush(); + producer.close(); + } +} diff --git a/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/SinkMqAutoConfiguration.java b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/SinkMqAutoConfiguration.java new file mode 100644 index 00000000..412cf1a5 --- /dev/null +++ b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/SinkMqAutoConfiguration.java @@ -0,0 +1,85 @@ +package com.lingniu.ingest.sink.mq; + +import io.github.resilience4j.circuitbreaker.CircuitBreaker; +import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.common.serialization.ByteArraySerializer; +import org.apache.kafka.common.serialization.StringSerializer; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +import java.time.Duration; +import java.util.Properties; + +/** + * MQ Sink 自动装配。 + * + *

    装配前提(两个条件都要满足): + *

      + *
    1. {@code lingniu.ingest.sink.mq.enabled=true}(默认 true)—— 总开关, + * 设为 false 时本模块完全不装配,ingest-core 的 DisruptorEventBus 仍然运行但 + * 没有 Kafka sink。 + *
    2. {@code lingniu.ingest.sink.mq.type=kafka}(默认 kafka)—— 后端选择,预留 + * rocketmq/pulsar 等扩展。 + *
    + */ +@AutoConfiguration +@EnableConfigurationProperties(SinkMqProperties.class) +@ConditionalOnProperty(prefix = "lingniu.ingest.sink.mq", name = "enabled", havingValue = "true", matchIfMissing = true) +public class SinkMqAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public EnvelopeMapper envelopeMapper(SinkMqProperties props) { + return new EnvelopeMapper(props.getNodeId()); + } + + @Bean + @ConditionalOnMissingBean + public TopicRouter topicRouter(SinkMqProperties props) { + return new TopicRouter(props.getTopics()); + } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnProperty(prefix = "lingniu.ingest.sink.mq", name = "type", havingValue = "kafka", matchIfMissing = true) + public CircuitBreaker kafkaSinkCircuitBreaker() { + return CircuitBreaker.of("kafka-sink", CircuitBreakerConfig.custom() + .slidingWindowSize(100) + .failureRateThreshold(50) + .waitDurationInOpenState(Duration.ofSeconds(10)) + .permittedNumberOfCallsInHalfOpenState(10) + .build()); + } + + @Bean(destroyMethod = "close") + @ConditionalOnMissingBean + @ConditionalOnProperty(prefix = "lingniu.ingest.sink.mq", name = "type", havingValue = "kafka", matchIfMissing = true) + public KafkaProducer kafkaProducer(SinkMqProperties props) { + Properties p = new Properties(); + p.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, props.getBootstrapServers()); + p.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); + p.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName()); + p.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, props.getCompressionType()); + p.put(ProducerConfig.LINGER_MS_CONFIG, props.getLingerMs()); + p.put(ProducerConfig.BATCH_SIZE_CONFIG, props.getBatchSize()); + p.put(ProducerConfig.ACKS_CONFIG, props.getAcks()); + p.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, props.isEnableIdempotence()); + return new KafkaProducer<>(p); + } + + @Bean(destroyMethod = "close") + @ConditionalOnMissingBean + @ConditionalOnProperty(prefix = "lingniu.ingest.sink.mq", name = "type", havingValue = "kafka", matchIfMissing = true) + public KafkaEventSink kafkaEventSink(KafkaProducer producer, + EnvelopeMapper mapper, + TopicRouter router, + SinkMqProperties props, + CircuitBreaker breaker) { + return new KafkaEventSink(producer, mapper, router, props.getTopics().getDlq(), breaker); + } +} diff --git a/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/SinkMqProperties.java b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/SinkMqProperties.java new file mode 100644 index 00000000..ed802942 --- /dev/null +++ b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/SinkMqProperties.java @@ -0,0 +1,72 @@ +package com.lingniu.ingest.sink.mq; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties(prefix = "lingniu.ingest.sink.mq") +public class SinkMqProperties { + + /** + * MQ Sink 总开关。默认 {@code true}。 + * 设为 {@code false} 时 {@link SinkMqAutoConfiguration} 完全不装配任何 Bean(Kafka Producer、 + * EnvelopeMapper、TopicRouter、KafkaEventSink 都不会创建),ingest-core 的 DisruptorEventBus + * 仍然正常运行但没有外部 sink(事件落地到 sink-archive 或 Noop 吞掉)。 + */ + private boolean enabled = true; + + /** MQ 后端类型。目前仅支持 kafka,预留 rocketmq/pulsar 等。 */ + private String type = "kafka"; + private String bootstrapServers = "localhost:9092"; + private String compressionType = "zstd"; + private int lingerMs = 20; + private int batchSize = 65536; + private String acks = "all"; + private boolean enableIdempotence = true; + private String nodeId = "ingest-local"; + private Topics topics = new Topics(); + + public boolean isEnabled() { return enabled; } + public void setEnabled(boolean enabled) { this.enabled = enabled; } + public String getType() { return type; } + public void setType(String type) { this.type = type; } + public String getBootstrapServers() { return bootstrapServers; } + public void setBootstrapServers(String bootstrapServers) { this.bootstrapServers = bootstrapServers; } + public String getCompressionType() { return compressionType; } + public void setCompressionType(String compressionType) { this.compressionType = compressionType; } + public int getLingerMs() { return lingerMs; } + public void setLingerMs(int lingerMs) { this.lingerMs = lingerMs; } + public int getBatchSize() { return batchSize; } + public void setBatchSize(int batchSize) { this.batchSize = batchSize; } + public String getAcks() { return acks; } + public void setAcks(String acks) { this.acks = acks; } + public boolean isEnableIdempotence() { return enableIdempotence; } + public void setEnableIdempotence(boolean enableIdempotence) { this.enableIdempotence = enableIdempotence; } + public String getNodeId() { return nodeId; } + public void setNodeId(String nodeId) { this.nodeId = nodeId; } + public Topics getTopics() { return topics; } + public void setTopics(Topics topics) { this.topics = topics; } + + public static class Topics { + private String realtime = "vehicle.realtime"; + private String location = "vehicle.location"; + private String alarm = "vehicle.alarm"; + private String session = "vehicle.session"; + private String mediaMeta = "vehicle.media.meta"; + private String rawArchive = "vehicle.raw.archive"; + private String dlq = "vehicle.dlq"; + + public String getRealtime() { return realtime; } + public void setRealtime(String realtime) { this.realtime = realtime; } + public String getLocation() { return location; } + public void setLocation(String location) { this.location = location; } + public String getAlarm() { return alarm; } + public void setAlarm(String alarm) { this.alarm = alarm; } + public String getSession() { return session; } + public void setSession(String session) { this.session = session; } + public String getMediaMeta() { return mediaMeta; } + public void setMediaMeta(String mediaMeta) { this.mediaMeta = mediaMeta; } + public String getRawArchive() { return rawArchive; } + public void setRawArchive(String rawArchive) { this.rawArchive = rawArchive; } + public String getDlq() { return dlq; } + public void setDlq(String dlq) { this.dlq = dlq; } + } +} diff --git a/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/TopicRouter.java b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/TopicRouter.java new file mode 100644 index 00000000..2c22b7c9 --- /dev/null +++ b/sink-mq/src/main/java/com/lingniu/ingest/sink/mq/TopicRouter.java @@ -0,0 +1,28 @@ +package com.lingniu.ingest.sink.mq; + +import com.lingniu.ingest.api.event.VehicleEvent; + +/** + * 事件 → Kafka topic 路由。集中管理避免散落。 + */ +public final class TopicRouter { + + private final SinkMqProperties.Topics topics; + + public TopicRouter(SinkMqProperties.Topics topics) { + this.topics = topics; + } + + public String route(VehicleEvent event) { + return switch (event) { + case VehicleEvent.Realtime _ -> topics.getRealtime(); + case VehicleEvent.Location _ -> topics.getLocation(); + case VehicleEvent.Alarm _ -> topics.getAlarm(); + case VehicleEvent.Login _, + VehicleEvent.Logout _, + VehicleEvent.Heartbeat _ -> topics.getSession(); + case VehicleEvent.MediaMeta _ -> topics.getMediaMeta(); + case VehicleEvent.Passthrough _ -> topics.getAlarm(); + }; + } +} diff --git a/sink-mq/src/main/proto/vehicle_envelope.proto b/sink-mq/src/main/proto/vehicle_envelope.proto new file mode 100644 index 00000000..4fed5e91 --- /dev/null +++ b/sink-mq/src/main/proto/vehicle_envelope.proto @@ -0,0 +1,110 @@ +syntax = "proto3"; + +package com.lingniu.ingest.sink.mq.proto; + +option java_multiple_files = true; +option java_package = "com.lingniu.ingest.sink.mq.proto"; +option java_outer_classname = "VehicleEnvelopeProto"; + +// 统一消息外壳:所有 Topic 共用此 Envelope,payload 通过 oneof 区分具体事件类型。 +message VehicleEnvelope { + string schema_version = 1; + string event_id = 2; + string trace_id = 3; + string vin = 4; + string source = 5; // ProtocolId 字符串形式 + string protocol_version = 6; + int64 event_time_ms = 7; + int64 ingest_time_ms = 8; + string ingest_node_id = 9; + map metadata = 10; + + oneof payload { + RealtimePayload realtime = 20; + LocationPayload location = 21; + AlarmPayload alarm = 22; + LoginPayload login = 23; + LogoutPayload logout = 24; + HeartbeatPayload heartbeat = 25; + MediaMetaPayload media_meta = 26; + PassthroughPayload passthrough = 27; + } + + // 可选:原始字节指针 + RawArchiveRef raw_archive = 40; +} + +message RawArchiveRef { + string uri = 1; + string checksum = 2; + int64 size_bytes = 3; +} + +message RealtimePayload { + optional double speed_kmh = 1; + optional double total_mileage_km = 2; + optional double battery_soc = 3; + optional double battery_voltage_v = 4; + optional double battery_current_a = 5; + optional double fc_voltage_v = 6; + optional double fc_current_a = 7; + optional double fc_temp_c = 8; + optional double hydrogen_remaining_kg = 9; + optional double hydrogen_high_pressure_mpa = 10; + optional double hydrogen_low_pressure_mpa = 11; + optional string vehicle_state = 12; + optional string charging_state = 13; + optional string running_mode = 14; + optional int32 gear_level = 15; + optional double accelerator_pedal = 16; + optional double brake_pedal = 17; + optional double longitude = 18; + optional double latitude = 19; + optional double altitude_m = 20; + optional double direction_deg = 21; + optional double ambient_temp_c = 22; + optional double coolant_temp_c = 23; +} + +message LocationPayload { + double longitude = 1; + double latitude = 2; + double altitude_m = 3; + double speed_kmh = 4; + double direction_deg = 5; + int64 alarm_flag = 6; + int64 status_flag = 7; +} + +message AlarmPayload { + string level = 1; + int32 alarm_type_code = 2; + string alarm_type_name = 3; + repeated string fault_codes = 4; + optional double longitude = 5; + optional double latitude = 6; + // 通用报警标志位(2016 版 0~15 / 2025 版 0~27),对照 GB/T 32960.3 表 24。 + // 例:SOC_LOW / BATTERY_HIGH_TEMP / HYDROGEN_LEAK + repeated string active_bits = 7; +} + +message LoginPayload { + string iccid = 1; + string protocol_version = 2; +} + +message LogoutPayload {} + +message HeartbeatPayload {} + +message MediaMetaPayload { + string media_id = 1; + string media_type = 2; + int64 size_bytes = 3; + string archive_ref = 4; +} + +message PassthroughPayload { + int32 passthrough_type = 1; + bytes data = 2; +} diff --git a/sink-mq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sink-mq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..94fdb2e7 --- /dev/null +++ b/sink-mq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.lingniu.ingest.sink.mq.SinkMqAutoConfiguration